paperbot · PL 论文追踪

全部论文 待读 收藏

P2 PolyTracker: Whole-Input Dynamic Information Flow Tracing

PolyTracker:全输入动态信息流追踪
ISSTA Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis2024匹配度 2/10 · 论文是动态信息流追踪(DIFT)工具,基于 LLVM 插桩,与用户关注的静态分析、LLM/Agent 交叉、浮点程序分析或贝叶斯程序分析均无直接关联;仅同属程序分析工程实现范畴。引用 3 inbox
Evan Sultanik, Marek Surovič, Henrik Brodin, Kelly Kaoudis, Facundo Tuesca, Carson Harmon, Lisa Overall, Joseph Sweeney, Bradford Larsen
crossref: 2026-09-12

AI 速览

一句话:在 LLVM 层插桩实现全程序、全输入的动态信息流追踪,输出可后处理的 TDAG 追踪产物。

PolyTracker 是一个全程序、全输入的动态信息流追踪(DIFT)框架。给定兼容 LLVM 的代码库或已提升为 LLVM IR 的二进制,PolyTracker 在编译期插入静态插桩;插桩后的程序以较小的性能开销正常运行,同时输出一种共同设计的 TDAG(污点有向无环图)运行时追踪产物。TDAG 可被后处理用于多种分析,例如把每个输入字节在程序执行中的传播路径完整追踪出来;TDAG 既可通过在输入语料上运行程序生成,也可借助 fuzzer 等随机输入生成器产生。与面向局部、定向分析的传统 DIFT 不同,TDAG 主要面向全程序运行时探索与缺陷发现、程序运行之间的细粒度信息流差分,以及同一输入规约不同实现之间的比较,而无需模拟和插桩整个运行环境。仓库还提供多个流行开源软件的 PolyTracker 插桩构建示例,以及用 Python 编写的分析库和 REPL,方便用户对 TDAG 进行操作。

问题
如何在无需模拟与插桩整个运行环境的前提下,细粒度地追踪整段输入在程序整个执行过程中的信息流,以支持全程序缺陷发现、运行间信息流差分和同一规约不同实现的比较。
方法
在 LLVM IR 层面对程序或其提升后的二进制进行静态插桩,使插桩程序正常运行并以 TDAG 格式输出运行时追踪,再通过配套的 Python 分析库与 REPL 对 TDAG 做后处理分析。
评估
通过提供多个主流开源软件的 PolyTracker 插桩构建示例、以输入语料或 fuzzer 驱动生成 TDAG,并给出面向 TDAG 的 Python 分析库与 REPL 来展示框架的可用性与可复现性(摘要未给出定量性能数据)。
原文摘要(Abstract)

We present PolyTracker, a whole-program, whole-input dynamic information flow tracing (DIFT) framework. Given an LLVM compatible codebase or a binary that has been lifted to LLVM intermediate representation (IR), PolyTracker compiles it, adding static instrumentation. The instrumented program will run normally with modest performance overhead, but will additionally output a runtime trace artifact in the co-designed TDAG (Tainted Directed Acyclic Graph) format. TDAGs can be post-processed for a variety of analyses, including tracing every input byte through program execution. TDAGs can be generated either by running the program over a corpus of inputs or by employing a randomized input generator such as a fuzzer. PolyTracker traces (TDAGs) are useful not only for very localized, targeted dynamic program analysis as with smaller-scale DIFT: TDAGs are primarily intended for whole-program runtime exploration and bug finding, granular information-flow diffing between program runs, and comparisons of implementations of the same input specification without any need to emulate and instrument the entire running environment. For user-friendliness and reproducibility, the software repository provides a number of examples of PolyTracker-instrumented builds of popular open-source software projects. We also provide an analysis library and REPL written in Python that are designed to assist users with operating over TDAGs.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot8479,
  title = {PolyTracker: Whole-Input Dynamic Information Flow Tracing},
  author = {Evan Sultanik and Marek Surovič and Henrik Brodin and Kelly Kaoudis and Facundo Tuesca and Carson Harmon and Lisa Overall and Joseph Sweeney and Bradford Larsen},
  booktitle = {ISSTA},
  year = {2024},
  doi = {10.1145/3650212.3685313}
}