paperbot · PL 论文追踪

全部论文 待读 收藏

P2 P³: Reasoning about Patches via Product Programs

P³:通过乘积程序推理补丁
OOPSLA 9(OOPSLA2)2025匹配度 3/10 · 论文属于程序分析与形式验证中的补丁推理与乘积程序构造,虽与静态分析/形式化验证相关,但完全不涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,与用户核心的 PL 与 AI 交叉方向匹配度低。引用 0 inbox
Arindam Sharma, Daniel Schemmel, Cristian Cadar
crossref: 2026-09-10

AI 速览

一句话:提出P³框架,自动为C语言补丁构造乘积程序,支持复杂补丁并无缝对接AFL++与KLEE进行补丁推理。

软件持续变更,补丁易引入新错误或安全漏洞。为程序编写完整功能规约很难,但用未打补丁版本描述补丁后行为的补丁规约往往容易,例如“补丁后版本是补丁前版本的重构”。为推理此类规约,分析器需同时分析补丁前后版本。本文提出 P³,一个通过乘积程序自动推理补丁的框架。P³ 是首个面向真实语言 C 自动构造乘积程序的框架,支持真实软件中多样且复杂的补丁,并提供运行时支持,使灰盒模糊测试与符号执行等技术无需修改即可运行。在 CoREBENCH 复杂补丁集上的实验表明,P³ 能处理复杂代码,与 AFL++ 和 KLEE 互操作,并支持补丁规约推理。

问题
补丁可能引入新错误和安全漏洞;完整功能规约难以编写,而用补丁前版本描述补丁后行为的补丁规约通常容易,但需要分析器同时分析补丁前后两个版本。
方法
P³ 自动为真实 C 语言程序构造乘积程序,将补丁前后代码置于同一程序中以支持补丁规约推理,并提供运行时支持,使灰盒模糊测试和符号执行等分析器无需修改即可使用。
评估
在 CoREBENCH 的复杂软件补丁集上评估,P³ 能处理复杂代码,并与 AFL++ 和 KLEE 互操作,支持对补丁规约的推理。
原文摘要(Abstract)

Software systems change on a continuous basis, with each patch prone to int roducing new errors and security vulnerabilities. While providing a full functional specification for the program is a notoriously difficult task, writing a patch specification that describes the behaviour of the patched version in terms of the unpatched one (e.g., “the post-patch version is a refactoring of the pre-patch one”) is often easy. To reason about such specifications, program analysers have to concomitantly analyse the pre- and post-patch software versions. In this paper, we propose P 3 , a framework for automated reasoning about patches via product programs . While product programs have been used before, particularly in a security context, P 3 is the first framework that automatically constructs product programs for a real-world language (namely C), supports diverse and complex patches found in real software, and provides runtime support enabling techniques as varied as greybox fuzzing and symbolic execution to run unmodified. Our experimental evaluation on a set of complex software patches from the challenging CoREBENCH suite shows that P 3 can successfully handle int ricate code, int er-operate with the widely-used analysers AFL++ and KLEE, and enable reasoning over patch specifications.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2955,
  title = {P³: Reasoning about Patches via Product Programs},
  author = {Arindam Sharma and Daniel Schemmel and Cristian Cadar},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763145}
}