谷歌工程师用 Gemini 4 Argon 和 Z3 捕获 fuzzing 漏掉的 Go 边界检查缺陷
一位负责谷歌 agent skills 项目的工程师构建了一条流水线:Gemini 4 Argon 读取 Go 源码和 RISC-V 反汇编,将存活的 runtime.panicBounds 陷阱转换为 Z3 约束,然后 go test 将任何满足条件的输入重放为真实复现用例。该工作流捕获了 skill-lint 中全部三个植入缺陷和三个潜在缺陷,而未设种子的 go test -fuzz 漏掉了两个植入崩溃,因为 Go 按容量而非长度检查切片。用 data[:len(data):len(data)] 将容量裁剪到长度后,fuzzer 在三次运行中均使两个越界缺陷崩溃,中位数分别为 0.28 秒和 0.17 秒。