CodeCrucible: A blueprint for LLM-driven SAST
15 hours ago
- CodeCrucible 是一种新的 LLM 驱动的静态应用安全测试(SAST)工具,用于漏洞发现,但重点在于设计蓝图而非工具本身。
- 关键设计选择涉及四个问题:压缩(如何将代码适配到上下文窗口中)、识别(如何提示以发现漏洞)、相关性筛选(如何过滤误报)以及确定性(如何确保稳定输出)。
- 全仓库拼接将整个仓库打包到一次 LLM 调用中,实现跨文件推理,且效果超出预期,尽管此前认为该方法无法扩展。
- 当仓库超出上下文窗口时,分块作为后备方案使用,保留文件边界和相关代码,且绝不为了适应预算而分割文件。
- 在决定分块或成本之前,通过分层过滤移除低价值内容(二进制文件、锁文件、测试、文档),保留导入图和 API 契约等结构。
- 质量门包括去重、具有 CWE 特定指南的专门验证审查,以及严格的输出规范(SARIF 格式、结构化输出、修复阶梯)。
- 该工具在给定引导提示后成功发现了 Linux 加密子系统中的 Copy Fail 漏洞(CVE-2026-31431),但最初未使用引导的尝试失败了。
- 局限性包括:当仓库超出上下文窗口时性能下降、覆盖范围受过滤影响、非迭代流水线(单次分析)、缺乏运行时上下文的代码中心焦点,以及与其他 AI 扫描器共享的约束(无重复去重)。
- 蓝图方法强调发布权衡和参考代码库,以便其他团队能够将其适配到自己的流水线和环境中。