驯服文件解析风险的两款新工具:PolyFile与PolyTracker

本文介绍了两款创新工具PolyFile和PolyTracker,它们通过语义标注和污点跟踪技术解决文件格式解析中的安全隐患,支持超过10,000种文件格式分析,并能逆向推导解析器行为。

驯服文件解析风险的两款新工具

Evan Sultanik | 2019年11月1日

解析文件格式是困难的——即使规范明确定义时也是如此。当规范存在歧义时,会导致解析器和解释器出现意外行为,进而引发安全漏洞。在DARPA SafeDocs项目支持下,我们开发了两款工具来解决这一根本问题:

解析为何困难?

  • 多语言文件(Polyglots):单个文件可被不同解释器有效解析(如既是PDF又是ZIP)
  • 精神分裂文件(Schizophrenic):不同解析器对同一文件产生不同解释(如Adobe与Foxit解析同一PDF显示不同内容)
  • 复杂设计决策(如嵌入式图灵完备语言、流解码器任意链接等)加剧了攻击面

工具创新

  1. PolyFile

    • 支持10,000+文件格式的层次化语义标注
    • 生成交互式HTML分析报告(示例:简历文件同时是PDF/NES游戏/ZIP/git仓库)
    • 开源地址:https://github.com/trailofbits/polyfile
  2. PolyTracker

    • 基于LLVM的高效污点跟踪框架
    • 改进数据结构使内存需求从指数级降至线性级
    • 支持闭源代码分析(通过McSema等二进制提升技术)
    • 开源地址:https://github.com/trailofbits/polytracker

技术突破

  • 数据流消毒器(DFSan)优化:突破原16位污点标签限制,实现稀疏联合数据结构
  • 动态分析:通过构建解析器函数与输入字节偏移的映射关系,逆向推导解析逻辑
  • 容器化部署:提供预构建Docker镜像简化使用流程

应用场景

  • 识别规范与实现间的"不安全"差异
  • 检测解析器中的隐蔽通道
  • 辅助模糊测试与差分测试
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计