[论文解读] Analyzing Smart Contracts: From EVM to a sound Control-Flow Graph
本文通过静态分析EVM字节码,提出了一种稳健的、堆栈敏感的以太坊虚拟机(EVM)智能合约控制流图(CFG)构建方法。针对基于堆栈的跳转(即跳转目标存储在堆栈中而非编码在指令中)导致的精确控制流建模挑战,该方法根据不同的堆栈状态对代码块进行克隆,确保静态分析中完整且准确的路径表示。
The EVM language is a simple stack-based language with words of 256 bits, with one significant difference between the EVM and other virtual machine languages (like Java Bytecode or CLI for .Net programs): the use of the stack for saving the jump addresses instead of having it explicit in the code of the jumping instructions. Static analyzers need the complete control flow graph (CFG) of the EVM program in order to be able to represent all its execution paths. This report addresses the problem of obtaining a precise and complete stack-sensitive CFG by means of a static analysis, cloning the blocks that might be executed using different states of the execution stack. The soundness of the analysis presented is proved.
研究动机与目标
- 智能合约分析需要一个完整且精确的控制流图(CFG),以建模所有可能的执行路径。
- EVM使用堆栈存储跳转地址,而非直接在指令中编码,这使得静态分析复杂化,可能导致CFG不完整或不安全。
- 现有方法未能考虑堆栈敏感的控制流,存在遗漏执行路径或过度近似的风险。
- 本文旨在通过构建一个稳健的、堆栈敏感的CFG来弥补这一差距,该CFG基于跳转点处的堆栈状态,捕捉所有可能的执行路径。
- 核心目标是通过将控制流建模为堆栈配置的函数,为EVM程序的精确静态分析提供形式化基础。
提出的方法
- 该方法构建的控制流图(CFG)中,每个代码块根据可到达它的不同堆栈状态进行复制,确保堆栈敏感性。
- 它引入了EVM字节码的形式化语义,追踪程序计数器、堆栈深度和堆栈内容,以实现在执行过程中精确的状态追踪。
- 分析使用堆栈状态的符号化表示,以建模每个程序点处的所有可能堆栈配置。
- 块根据跳转发生时的堆栈状态进行克隆,每个克隆代表一种对应于特定堆栈配置的独特执行路径。
- 该方法定义了两种边:用于顺序执行的'next'边和用于控制转移的'jump'边,两者均按堆栈状态索引,以保持精度。
- 通过在执行轨迹长度上进行归纳法,形式化证明了其稳健性,表明每个有效的执行轨迹均对应于CFG中的一条有向路径。
实验结果
研究问题
- RQ1如何构建一个EVM字节码的控制流图,使其在存在基于堆栈的跳转指令时仍保持完整且精确?
- RQ2需要何种形式化语义来建模EVM程序中堆栈敏感的执行状态?
- RQ3如何利用块克隆来表示在跳转点处因不同堆栈状态而产生的多条执行路径?
- RQ4何种条件可确保生成的CFG在所有可能的执行轨迹上均保持稳健?
- RQ5基于此CFG模型的静态分析是否能检测所有可能的执行路径而不产生过度近似?
主要发现
- 所提出的方法通过在跳转点根据不同的堆栈状态复制块,构建了一个稳健的、堆栈敏感的CFG,能够捕捉EVM程序的所有可能执行路径。
- 该分析正确建模了EVM基于堆栈的跳转机制,即跳转目标存储在堆栈中而非编码在指令中,解决了先前方法中精度不足的关键问题。
- 稳健性的形式化证明表明,每个有效的执行轨迹均对应于CFG中的一条有向路径,确保不会遗漏任何执行路径。
- 该方法同时处理无条件跳转(JUMP)和条件跳转(JUMPI),并根据堆栈状态和跳转目标定义不同的边构建规则。
- 通过限制堆栈大小并将跳转地址视为常量,该方法能够实现对EVM程序的精确静态分析,包括具有递归或高阶模式的程序。
- 在堆栈大小恒定和跳转目标恒定的约束下,生成的CFG在形式上是稳健且完整的,适用于形式化验证和漏洞检测。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。