Elipmoc:以太坊智能合约的高级反编译

  • Dedaub
  • 发布于 2022-04-02 22:43
  • 阅读 43

本文介绍了Elipmoc,一种用于以太坊智能合约高级反编译的工具,它通过采用多种高精度技术并使其可扩展,显著改进了Gigahorse等现有工具。Elipmoc实现了更高的代码反编译完整性,并已成功用于发现流行协议上的多个可利用漏洞,为以太坊区块链和许多应用程序的演进提供了关键支持。

研究

NEVILLE GRECH

Elipmoc: 以太坊智能合约的高级反编译

NEVILLE GRECH, 马耳他大学, 马耳他和 Dedaub Ltd

SIFIS LAGOUVARDOS, 希腊雅典大学和 Dedaub Ltd

ILIAS TSATIRIS, 希腊雅典大学和 Dedaub Ltd

YANNIS SMARAGDAKIS, 希腊雅典大学和 Dedaub Ltd

以太坊区块链上的智能合约极大地受益于前沿的分析技术,同时也带来了严峻的挑战。首要的挑战是已部署合约的极低级表示。我们提出了 Elipmoc,一个用于下一代智能合约分析的反编译器。Elipmoc 是顶级研究反编译器 Gigahorse 的进化版,通过采用多种高精度技术并使其可扩展,从而显著改进了它以及其他最先进的工具。这些技术包括一种新型的上下文敏感性(称为“事务敏感性”),它提供了对不同动态执行的更有效的静态抽象;一种用于推断函数参数和返回值的路径敏感(但通过路径合并可扩展)算法;以及一个完全上下文敏感的私有函数重构过程。因此,构建在 Elipmoc 之上的智能合约安全分析和逆向工程工具实现了高可扩展性、精确性和完整性。Elipmoc 改进了所有值得注意的过去的反编译器,包括它的前身 Gigahorse,以及集成到主要以太坊区块链浏览器 Etherscan 中的最先进的工业工具 Panoramix。Elipmoc 以 99.5% 的速率生成具有完全解析操作数的反编译合约(Gigahorse 为 62.8%),并且在代码反编译方面比 Panoramix 实现了更高的完整性——例如,外部调用语句的覆盖率高达 67% 以上——同时速度提高了 5 倍以上。Elipmoc 促成了近期(独立)发现的流行协议上的几个可利用漏洞,涉及数百万美元的资金。

其他关键词和短语: 程序分析, 智能合约, 反编译, Datalog, 安全, 以太坊, 区块链

1 介绍

使用运行在可编程区块链(最著名的是以太坊)上的智能合约构建的去中心化金融应用程序,正开始与传统金融系统竞争。因此,智能合约中的编码或逻辑错误可能会产生巨大的财务影响。这使得智能合约成为自动化分析和验证任务的主要目标。

更具体地说,对已部署的智能合约进行分析,即以它们的二进制形式作为输入,因以下几个原因而具有吸引力。首先,它提供了显著的通用性:许多已部署的智能合约没有公开发布的源代码。安全分析师通常需要检查这些合约(例如,机器人)以确定其功能。其次,在字节码级别分析合约为分析提供了一个统一的平台,不区分源语言和源语言版本。这是一个主要因素,因为(主要的以太坊语言)

作者地址: Neville Grech, 马耳他大学, 马耳他和 Dedaub Ltd, me@nevillegrech.com; Sifis Lagouvardos, 希腊雅典大学和 Dedaub Ltd, sifis.lag@di.uoa.gr; Ilias Tsatiris, 希腊雅典大学和 Dedaub Ltd, i.tsatiris@di.uoa.gr; Yannis Smaragdakis, 希腊雅典大学和 Dedaub Ltd, smaragd@di.uoa.gr. 允许为个人或课堂使用制作或复制本文档的任何部分,无需任何费用,只要副本不为盈利或商业优势而制作或分发,并且副本带有此声明和

第一页上的完整引用。本文档中第三方组件的版权必须得到尊重。对于所有其他用途,请联系所有者/作者。© 2022 版权归所有者/作者所有。2475-1421/2022/4-ART77 https://doi.org/10.1145/3527321 Proc. ACM Program. Lang., Vol. 6, No. OOPSLA1, Article 77. 发布日期:2022 年 4 月. 77:2 Neville Grech, Sifis Lagouvardos, Ilias Tsatiris, and Yannis Smaragdakis Solidity 不保持跨版本的源代码兼容性。源级别工具很快就会过时。

字节码反编译为自动化智能合约分析提供了迄今为止最通用的基础。以太坊虚拟机 (EVM) 字节码的反编译对于安全社区来说是一个开放的问题。现有方法在完整性、精度或可扩展性方面存在不足。例如,在实践中最常用的反编译器,etherscan.io 的 Panoramix [Kolinko and Palkeo 2020],仅部分反编译复杂的合约,许多低级代码通常没有反映在反编译版本中。过去的学术研究工具,例如 Gigahorse 反编译器 [Grech et al. 2019a],牺牲了精度,有时甚至牺牲了可扩展性。较低的精度会导致低质量的反编译,例如,具有未知操作数的操作,或具有许多不可行目标的跳转。

为了说明这些缺点,我们的实验表明,这些领先的过去的反编译器能够反编译的以太坊大型合约(超过 20KB)不到 20%(Panoramix:18.2%,Gigahorse:19.8%)。从技术上讲,EVM 的低级性质对任何反编译工作都提出了挑战。EVM 使用单个堆栈进行调用和本地操作,而不保证其格式良好。唯一的控制流运算符是非结构化跳转。所有调用、返回、循环和条件都是作为跳转到当前位于堆栈顶部的任何地址来实现的。生成 EVM 字节码的编译器通常会执行激进的优化,因为指令的执行会产生资金成本。例如,一个主要的混淆因素是激进地合并属于不同内部函数(又名私有函数)的相同指令序列。

因此,如果没有复杂的建模技术,控制流和数据流很难辨别。在本文中,我们介绍了 Elipmoc(“compile”的反向拼写),一个用于以太坊智能合约的反编译器。Elipmoc 提高了 EVM 字节码反编译的现有技术水平,提供了显著提高的精度和完整性。Elipmoc 是一个成功的分析框架的基础,该框架标记了有或没有源代码的合约上的许多可利用的漏洞(但具有数百万美元的锁定价值)。所有分析都基于 Elipmoc 导出的三地址代码进行操作。我们已经披露了几个漏洞,其中一些导致了重大的救援工作 [Dedaub 2021b,c,d,f; Michales, Jonah 2021; Primitive Finance 2021]。

此外,Elipmoc 团队还受委托为以太坊基金会进行三项独立研究,用于评估以太坊改进提案 EIP-1884、EIP-3074 以及一项提议重新设计存储 gas 成本计量的未来 EIP 的影响。Elipmoc 反编译器允许回答诸如“更改 X 对当前部署的所有合约的影响是什么?”之类的问题,并且正在成为以太坊区块链及其许多应用程序发展的关键工具。

从技术角度来看,

Elipmoc 做出以下贡献:

● 事务上下文敏感性。 Elipmoc 提出了一种有效的智能合约执行上下文敏感性形式。上下文敏感性提供了一种将实际执行压缩为短静态签名的方法。设计良好的签名对于整个反编译器的精度和可扩展性至关重要。Elipmoc 的事务上下文敏感性基于对 EVM 低级控制流(尤其是基于延续的优化)和整体执行的深刻理解。

● 可扩展的、上下文和路径敏感的函数重构。 由于编译器倾向于为了多个函数的利益而重用 EVM 字节码序列,因此直接推断私有函数并不简单。此外,高级控制流被编译到接近不可逆转的程度,使用 continuation-passing-style 模式。我们通过维护延续堆栈的当前内容的静态分析以及用于高精度确定消耗的最大堆栈元素数量(即,

访问完整文档

  • 原文链接: dedaub.com/blog/elipmoc-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Dedaub
Dedaub
Security audits, static analysis, realtime threat monitoring