来源笔记
V2E: Validating Smart Contract Vulnerabilities through Profit-driven Exploit Generation and Execution
Smart Contract SecurityVulnerability ValidationExploit GenerationLLM For CodeBlockchain Analysis
摘要
V2E 通过生成可执行的 exploit PoC、执行它们,并检查它们是否既能触发漏洞又能带来攻击者利润,来验证已报告的智能合约漏洞。论文针对智能合约扫描器的一个常见失效模式:很多报告匹配了漏洞模式,但在实际中不可利用。
问题
- 现有的智能合约检测工具常常报出大量误报,因为它们只是标记了有漏洞的代码模式,没有证明这些代码能在真实执行环境中被触发。
- 即使漏洞能被触发,如果它不会造成财务损失或攻击者利润,也可能没有实际意义,因为智能合约攻击通常以获利为目标。
- 工具输出的人工验证成本很高,审计员和开发者尤其难以处理状态相关的逻辑漏洞,例如重入、交易排序依赖和随机数误用。
方法
- V2E 先接收漏洞报告、合约源代码和待测试函数,然后用细粒度静态分析,通过状态读写依赖和访问控制分析找出可能的 exploit 入口函数。
- 它给 LLM 一个范围很窄的提示,包含构造函数、漏洞路径和漏洞特征,然后要求它生成针对性的、基于 Foundry 的 PoC,而不是在没有引导的情况下从完整合约直接生成 exploit。
- V2E 在定制的 EVM 中执行每个 PoC,检查可触发性和盈利性。只有当 PoC 既触发了漏洞行为,又增加了攻击者利润或造成了财务损失时,漏洞才算有效。
- 如果执行失败,V2E 会用执行字节码和源码映射定位失败点,并让 LLM 修改 PoC。如果执行成功但还不能证明可利用性,它会结合预定义的、按漏洞类型划分的原语操作来细化 PoC。
- 当前范围覆盖五类 SWC:未受保护的以太币提取、未受保护的 selfdestruct、重入、交易顺序依赖,以及来自链属性的随机数。
结果
- 评估使用了 SmartBugs 中264 个人工标注合约:64 个人工构造合约和 200 个真实链上合约。
- V2E 识别出 124 个可利用漏洞中的 102 个,精确率为 91.9%,召回率为 82.3%。
- 它去除了 140 个误报中的 71 个,论文将其报告为 50.7%。
- 作为现有工具的后验证层,V2E 将误报率分别降低了 Slither 的 76.9%、Mythril 的 56.9% 和 Confuzzius 的 65.0%。
- 论文声称 V2E 优于一个基于 LLM 的基线方法,但摘录没有给出该基线的具体数值。