2008 · 会议论文

Tupni:输入格式的自动逆向工程

Tupni: Automatic Reverse Engineering of Input Formats

Tupni 利用字节级动态污点跟踪,从 x86 程序解析单个输入时的执行轨迹推断输入格式。它依据处理污点字节的指令把输入切分为字段,从解析循环中找出记录序列,按处理代码将记录归为不同记录类型,并输出带有长度、取值及部分跨报文约束的增强 BNF 文法。多个输入得到的文法可以合并为更完整的规范。评测覆盖五种文件格式(WMF、BMP、JPG、PNG、TIF)和五种网络协议(DNS、RPC、TFTP、HTTP、FTP),并将输出用于 ShieldGen 的零日漏洞签名生成。

研究范围与局限

Tupni 需要解析程序以及每个输入对应的已记录执行轨迹,不能仅凭捕获的流量或文件工作。原型将 iDNA 轨迹与重新实现的 Vigilante 污点引擎结合,轨迹来自 Windows XP SP2 上的二进制,例如 gdi32.dll、gdiplus.dll、nslookup.exe 及 IIS 组件。单输入准确性评测每种格式只用一个输入,由作者对照公开规范判定;WMF、DNS 与 HTTP 用于指导设计,压缩图像数据被跳过,只分析容器结构;由于早期工具不可获得,未运行定量基线。所有记录序列均被识别,但存在部分误报序列;PNG 的 1,551 个字段中有 889 个识别错误,原因是程序忽略了重复数据块的内容。覆盖范围取决于输入的多样性,约束可能只适用于样本;字节级污点难以处理与字节边界不对齐的字段(包括许多加密或压缩格式),超出正则表达式描述能力的格式也不在适用范围内。跨报文约束只在 TFTP 上评估,多输入聚合只在 150 个 WMF 文件上评估。

与本合集的关联

补充一种经典的基于执行的输入格式推断方法,可恢复记录序列、记录类型与字段约束,与合集中基于流量及借助二进制的协议格式研究互补。

发表与复核详情

发表载体
ACM CCS 2008
发表状态
会议论文
出版/提交日期
2008 年 10 月 27 日
日期依据
ACM 提交的 Crossref 元数据将印刷与在线出版日期均记为 2008-10-27,ACM 论文页面的存档副本显示相同日期。本条目不以 CCS 会议日期替代。
DOI
10.1145/1455770.1455820

Crossref 与 ACM 页面存档按此顺序列出五位作者,记载 CCS ’08 第 391–402 页,主标题为“Tupni”,副标题为“automatic reverse engineering of input formats”;本条目采用论文中的大小写。正文审阅依据 Microsoft Research 出版物页面提供的 12 页副本,其署名将第五位作者写作“Luiz Irun-Briz”;本条目沿用 ACM 与 Crossref 的拼写。论文说明,不计 Vigilante 与 iDNA,原型含 14,000 行 C++ 与 4,100 行 Perl;论文未链接代码或数据,Windows 测试二进制及来自 Microsoft 内部库的 150 个 WMF 文件也不是公开产物。本次未运行代码或实验。

来源复核于

本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。

报告条目过时 建议修正翻译

一手来源

  1. https://dl.acm.org/doi/10.1145/1455770.1455820
  2. https://web.archive.org/web/20250206195542/https://dl.acm.org/doi/10.1145/1455770.1455820
  3. https://api.crossref.org/works/10.1145/1455770.1455820
  4. https://dl.acm.org/doi/pdf/10.1145/1455770.1455820
  5. https://www.microsoft.com/en-us/research/publication/tupni-automatic-reverse-engineering-of-input-formats/
  6. https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tupni-ccs08.pdf