2025 · 会议论文
Lares:面向补丁存在性测试的大语言模型驱动代码切片语义搜索
Lares: LLM-driven Code Slice Semantic Search for Patch Presence Testing
Lares 在不重新编译项目的情况下,测试目标二进制函数中是否已包含某个已知 1-day 漏洞的修复。其输入为目标二进制、项目源码和补丁提交差异。补丁增强步骤借助 Tree-sitter 与 Joern 从源码中为改动语句较少的补丁补充数据流和控制流上下文。随后由大语言模型在目标函数的 IDA Pro 反编译伪代码中定位与每个补丁切片对应的伪代码切片。最后,匹配的切片被规范化为等式并交由 Z3 SMT 求解器检验等价性,Z3 无法建模的情况由大语言模型判断,从而确定该函数对应修复前版本还是已修复版本。在来自 OpenSSL、FreeType、tcpdump 和 libxml2 中 73 个 CVE 的 4,480 个测试用例上(使用 GCC 9.4.0 和 Clang 6 以 O0–O3 为 x86、x64 与 ARM 编译),作者报告使用 Claude 3.5 Sonnet 时 x86 上的平均 F1 为 0.77,Robin 与 PS3 分别为 0.67 和 0.68;在五种编译器—架构组合下 F1 为 0.71 至 0.77。
研究范围与局限
Lares 回答的问题范围很窄:给定某个 CVE 的补丁差异、带有版本历史的项目源码以及候选函数,判断该函数属于修复前版本还是已修复版本。它同时需要补丁差异与项目源码,并假定已由另外的二进制代码相似性工具(论文以 BinaryAI 为例)定位候选函数。它不负责发现漏洞函数、挖掘新漏洞或比较任意二进制。其判断依赖大语言模型与基于反编译伪代码的 SMT 推理:Z3 只能处理约 21% 的测试用例(仅用 Z3 验证时召回率为 0.221),多数判断来自大语言模型;作者列出的失败原因包括大语言模型在比较时产生幻觉、隐蔽的修改型补丁以及重复出现的补丁语句。结果使用 IDA Pro 7.5 与商用模型,每个用例约花费 0.20 美元;GPT-3.5-Turbo 与 DeepSeek-Coder 的得分更低。评测覆盖四个 C 项目、73 个 CVE 及作者自行编译的二进制,另以 2024 年 10 月之后披露的 20 个漏洞(400 个用例)检验训练数据污染;未评测固件、其他语言或真实厂商构建。仓库没有许可证文件,因此未授予任何复用条款。
与本合集的关联
为反编译与二进制分析研究补充二进制补丁存在性测试方向,利用大语言模型在反编译伪代码中定位切片;它与精选目录中的 BinDiff 差异比较工具互补,而非替代。
发表与复核详情
- 发表载体
- ASE 2025
- 发表状态
- 会议论文
- 出版/提交日期
- 2025 年(具体日期未核实)
- 日期依据
- 出版年份依据 IEEE 为 2025 年 ASE 论文集提交的 Crossref 元数据。其中唯一的日期 2025-11-16 是 11 月 16–20 日会议的首日,因此本条目不主张出版月份或日期,也不以 arXiv 日期替代。
- arXiv 首次提交
- 2025 年 11 月 3 日
- arXiv
- 2511.01252
- 已复核的 arXiv 版本
- v1
- DOI
- 10.1109/ASE63991.2025.00081
IEEE 提交的 Crossref 元数据列出 2025 年第 40 届 IEEE/ACM ASE 论文集、第 919–931 页,以及顺序相同的十位作者;该 DOI 解析至 IEEE Xplore 文档 11334274,但该页面拒绝自动请求,因此本次审阅依据 Crossref 与 arXiv PDF。arXiv v1(2025-11-03)是唯一版本,且没有发表场所注释,可能与 IEEE 版本存在差异。摘要链接了 Siyuan-Li201/Lares;在所审阅的 2025-09-16 提交中,仓库没有许可证文件,其 README 将输入列为二进制、项目源码路径和补丁差异文件。仓库提交了已剥离符号的 OpenSSL 测试构建的 IDA 数据库、tcpdump、FreeType 与 libxml2 的源码压缩包及补丁文件,并通过 Google Drive 链接评测用二进制;运行时需要在 settings.py 中设置 IDA Pro 7.5 路径与大语言模型 API 密钥。settings.py 预置了第三方 API 中转服务及作者提供的测试密钥,本条目不予转载。本次未运行代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://ieeexplore.ieee.org/document/11334274
- https://api.crossref.org/works/10.1109/ASE63991.2025.00081
- https://arxiv.org/abs/2511.01252
- https://arxiv.org/pdf/2511.01252v1
- README.md GitHub · Siyuan-Li201/Lares · 修订 b6ca631
- code GitHub · Siyuan-Li201/Lares · 修订 b6ca631
- patch GitHub · Siyuan-Li201/Lares · 修订 b6ca631