Trail of Bits在ICSE 2019:静态分析、模糊测试与区块链技术前沿

本文总结了Trail of Bits团队在ICSE 2019软件工程顶会上展示的技术成果,涵盖静态分析工具优化、新型模糊测试技术、智能合约安全以及自动化程序修复等前沿领域,涉及Slither、Manticore等多款知名工具的技术突破。

静态分析

在Trail of Bits,我们投入大量精力构建可靠的静态分析工具。ICSE会议上关于该主题的讨论呈现两大趋势:轻量级与高成本分析的结合,以及参数的在线调优。

Clang静态分析器中基于SMT的误报消除
通过SMT求解器过滤Clang静态分析器产生的误报。虽然技术本身并非创新,但在编译器中的实际实现具有实用价值。

基于资源感知的在线程序分析
该研究根据可用资源(如空闲内存)动态调整分析参数,通过评分系统决定变量的流敏感性处理优先级,未达到固定点时实时调整参数配置。

SMOKE:百万级代码行的路径敏感内存泄漏检测
采用两级分析策略:先用快速但不精确的"使用流图"过滤多数泄漏候选,再对剩余对象进行精确分析。该LLVM工具可处理800万行代码的项目。

测试技术

我们在Manticore符号执行引擎中持续集成最新测试技术。

Haskell代数数据类型随机生成
编译时生成能均匀覆盖不同值构造器的测试数据,有效提升异构系统测试覆盖率。

DifFuzz:侧信道分析的差分模糊测试
通过最大化资源使用差异(而非代码覆盖率)来检测侧信道漏洞,公开基准测试显示其有效性。

无种子输入的SLF模糊测试
通过动态分析识别输入字段类型及验证逻辑,针对不同字段类型实施定向变异策略。在复杂程序测试中展现出优越的漏洞发现能力。

Eclipser:二进制代码的灰盒混合测试
融合符号执行与模糊测试优势,我们已将其集成至DeepState属性测试框架。

区块链技术

Obsidian智能合约语言
通过用户级前置/后置条件类型系统增强安全性,当前支持Hyperledger Fabric编译。

Gigahorse智能合约反编译器
创新性地使用Datalog规则描述反编译流程,配合外部定点循环突破语言限制。

自动化修复

Facebook的SapFix自动化修复系统
结合Sapienz和Infer工具,针对空指针异常实施分层修复策略,包含7天无人审查自动回滚机制。

补丁正确性评估研究
对8款自动修复工具的实验表明,其效果虽有限但可作为传统工具的有效补充。

海报展示

  • 需求驱动的指针分析优化:通过程序切片提升分析精度
  • WOK生产级动态切片:利用静态数据流分析和Intel PT硬件支持
  • 有效性验证的模糊测试:保持结构化输入语义的随机测试
  • 基于机器学习的种子优化:通过神经网络关联输入与执行路径覆盖

我们持续将最新研究成果转化为McSema、Slither等工业级工具,并欢迎学术合作。所有技术细节均可复现,部分工具已开源集成至我们的技术栈。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计