Anthropic 与 Theorem 用 Claude 对 123 个开源库的 RISC-V 汇编做形式化验证,目标是弥补模糊测试无法穷尽输入的短板。其做法是把已有模糊测试转成数学规范,再为 239 个程序入口点生成在定义条件下不会崩溃的证明;官方称该流程发现大量长期未被自动测试捕获的缺陷。Claude 共生成约 180 million 行证明代码,交由 Rocq 独立检查,无需人工逐行审阅,并可修补漏洞后为新代码重新证明。案例包括解压路径的计数器下溢触发越界写、图像解码器在极端输入下失败、文件句柄序列导致越界读、重新发现 libexpat 已知漏洞,以及绕过文件加载限制的逻辑缺陷。作者强调证明只覆盖单线程、静态链接的 RISC-V 程序和建模 Linux 环境,不能保证未描述属性,未来将通过模型改进与证明复用降低共享库验证成本。
为什么重要 它把 LLM 用于编译级证明生成,为共享库安全保证提供可复用路径;但范围受限于 RISC-V 与既定规范。适合 做安全验证、AI 测试与基础库维护的工程师
典型证明
单条证明规模
解压输入
触发 counter underflow
图像输入
图像解码器失败条件
注释 · 大证明与极端输入解释为何常规测试难覆盖。出自 正文
Claude 把既有 fuzz tests 转成规范并生成证明
以现有 fuzz tests 作为来源,转换为数学规范。
Claude 为 239 个入口点生成不崩溃证明代码。
术语解释独立的证明检查器,用来核对 Claude 生成证明是否符合规范 依据规范检查证明,开发者无需逐行人工审阅。
Claude 可修补发现的 bug,并为更新代码生成新证明。
注释 · 术语解释独立的证明检查器,用来核对 Claude 生成证明是否符合规范 独立检查避免人工逐行读证明。出自 正文