本文提出 NeuroLog,一个端到端、无需构建环境的漏洞发现流水线,用于 C/C++ 源代码。核心思路是将 LLM、Datalog(Soufflé)和 SMT 求解器(Z3)分层协作:LLM 逐个函数提取类型化的数据流事实;Soufflé 规则网将这些事实组合成跨函数的发现;Z3 后处理过滤不可行路径并为每个幸存路径输出 SAT 模型。为超越纯静态分析,还引入运行时证据:从少量语料种子导出的可能范围不变量以极低成本收紧 SMT 问题。第二个 LLM 智能体读取每个 SAT 模型并编写 Python 程序生成候选崩溃输入,由 AddressSanitizer 验证。实验覆盖 stb、cJSON、libxml2、FFmpeg demuxer 切片和 curl 8.3.0,重新发现了 8 个 CVE 类问题,包括 CVSS 9.8 的 SOCKS5 堆溢出 CVE-2023-38545。在 libarchive HEAD 上发现 5 个内存安全漏洞(4 个先前未报告),其中 cpio use-after-free 在 7 小时内得到确认。提取阶段约 37 秒、成本 $0.005(stb);崩溃合成将静态发现转化为 102 字节的 stb_vorbis 崩溃(两轮 LLM 交互)。来自三个 Matroska 种子的似然不变性过滤器消除了 FFmpeg demuxer 可行集中的 13.2%。该方法结合了静态缩小 SMT(Saturn, Pinpoint)和 Datalog 与 SMT(Formulog)的先前工作,新贡献在于 LLM 推导的事实库、无构建流水线以及将 SAT 模型作为合成崩溃输入的制品而非简单的是/否判定。适合安全研究人员、漏洞发现工程师和软件质量保障团队阅读。
💡 推荐理由: 该方法首次将LLM、Datalog和SMT求解器无缝集成,无需构建环境即可发现真实CVE,显著降低了漏洞挖掘的门槛和成本。其可解释性(审计SAT模型)和实用性(直接生成验证过的崩溃输入)对蓝队和安全工程师极具价值。
🎯 建议动作: 研究跟进