← Agent Tool Use 2026

ACL 2026 · Long · D11

CodeHacker: Automated Test Case Generation for Detecting Vulnerabilities in Competitive Programming Solutions

安全与可靠性 · 直接工具使用 · 方法 / 系统

Idea

CodeHacker 面向具体竞赛程序生成合法反例,先校准输入 Validator 和输出 Checker,再依据代码分析与执行观察组合多种 test generation 策略。核心是把测试从通用随机覆盖转为针对实现缺陷的验证,并先降低评测工具本身误判的风险。

Research Problem

现有代码基准测试可能遗漏边界条件,使实际错误程序被判 AC;增加随机样本也未必命中某个实现的逻辑缺陷。与此同时,LLM 自动生成的 Validator 或 Special Judge 可能过松或过严,若直接使用,会把非法输入或错误判定误报为成功 hack。

Insight

有效反例必须同时满足输入合法、标准解可通过和目标程序失败。将“评测基础设施是否可靠”与“目标程序哪里出错”分为两阶段,可使发现的失败更具有解释力;静态语义假设再经实际执行或数值计算核实,比仅凭文本猜测复杂度和溢出更可靠。

Method

  1. Calibration 阶段分别用非法输入绕过、合法边界输入被拒等 probes 修正 Validator;对 Checker 测试错误输出被接受和不同合法答案被拒,并以小规模推导及独立模型审核约束更新。
  2. Code Analyst 读取题目与目标代码,使用 C++ sandbox 验证小型行为反例,利用 Python 计算边界值和操作数量,形成指向 WA、RE、TLE 或 MLE 的测试计划。
  3. Generator 根据计划输出可执行 C++ 生成器,结合极限规模/结构 stress tests、LLM 语义反例和针对 hashing 的 collision 构造,生成超过上下文长度的大规模合法输入。
  4. 执行环境运行经过验证的 Standard Solution 获取期望输出,再通过校准后的工具判断目标是否失败;从原测试与官方判定不一致的 submissions 构建 CodeHackerBench,并评估增强测试的检错与 RL 训练价值。

Sources & Reading Scope

阅读依据:官方 PDF 正文。核读页码按 PDF 页序计数,可能与 proceedings 页码不同。

p. 1 · p. 3 · p. 4 · p. 5 · p. 6

核读章节:Problem Formulation · Phase I: Evaluation Tool Calibration · Phase II: Adversarial Case Generation · Code Analyst · Hack Case Generators · CodeHackerBench

核读两阶段流程和成功 hack 条件。作者披露少于 5% 的复杂题在 Phase I 需要专家修补,且工具经过人工审核;因此不能称整个基础设施构建完全无人参与,Phase II 才是自主生成。