Trail of Bits 2020冬季实习项目亮点:从反编译器到智能合约安全

本文详细介绍了Trail of Bits 2020冬季实习生的7个技术项目,涵盖Anvill反编译器的JSON规范生成、DeepState的Python修复、Manticore云化部署、Go代码静态分析增强、Mishegos二进制输出优化、Crytic智能合约升级检查以及OpenSSL误用检测工具Anselm开发。

Aaron Yoo — Anvill反编译器

加州大学洛杉矶分校

我在Anvill反编译器中添加了一个生成LLVM位码函数"JSON规范"的工具。这些规范告知Anvill函数参数和返回值等重要值的物理位置(寄存器或内存)。典型规范示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
    "arch": "amd64",
    "functions": [
        {
            "demangled_name": "test(long, long)",
            "name": "_Z4testll",
            "parameters": [
                {
                    "name": "param1",
                    "register": "RDI",
                    "type": "l"
                },
...

通过该项目,我深入了解了ABI规范,并解决了高级参数分散在多个机器寄存器中的技术难题。

Paweł Płatek — DeepState与Python

AGH科技大学

我主要修复了DeepState Python部分的构建问题:

  • CMake:修正构建选项,增加仅构建示例的选项
  • Docker:采用多阶段构建,支持Honggfuzz和Angora
  • 模糊测试执行器:统一参数处理,重新实现日志系统和运行时统计
  • 测试体系:创建基础测试用例验证执行器功能
  • 文档:拆分文档结构,新增模糊测试使用指南

Philip Zhengyuan Wang — Manticore

马里兰大学

我开发了"mcorepv"工具实现Manticore的云化部署:

  1. 通过Ansible自动配置DigitalOcean云主机
  2. 使用Protobuf协议实时传输分析状态
  3. 开发终端用户界面(TUI)监控运行状态
  4. 实现工作目录自动同步和日志回传

当前待解决问题包括SSH端口转发优化和TUI信息展示改进。

Samuel Caccavale — Go代码分析

东北大学

开发基于AST和SSA的Go代码扫描器,可检测以下模式:

1
2
3
4
5
unsafe, ok := i.(string)
fmt.Println(ok)
if true {
    fmt.Println(unsafe)  // 危险的类型断言使用
}

相比GoSec等工具,能更精确识别类型断言值的上下文使用安全。

Taylor Pothast — Mishegos

范德堡大学

将x86_64解码器模糊测试工具Mishegos的输出格式:

  • 从JSON改为紧凑二进制格式
  • 开发mish2jsonl转换工具保持向后兼容
  • 更新分析工具处理新增的符号字段

Thomas Quig — Crytic与Slither

伊利诺伊大学香槟分校

将Slither的智能合约升级检查集成到Crytic CI服务:

  • 实现合约版本选择界面
  • 检查代理合约模式的风险点(如存储变量对齐)
  • 输出标准化JSON格式的检测结果

William Wang — OpenSSL与Anselm

加州大学洛杉矶分校

开发OpenSSL API误用检测工具Anselm:

  • 编写LLVM Pass构建API调用图
  • 实现基础启发式规则(如密码上下文初始化检查)
  • 支持跨语言OpenSSL绑定分析

未来计划增强参数/返回值分析能力,完善开发者接口。

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