以太坊安全工具套件大合集
两年前,当我们刚开始探讨区块链安全时,我们几乎是一无所有。没有静态分析工具,没有模糊测试工具,也没有针对以太坊的逆向分析工具。我们倾注了大量的时间和精力,运用专业知识,创造出了我们所需要的工具。如今,经过无数次的测试和完善,我们欣然向大家分享这些工具,希望它们能够帮助提升以太坊的安全水平。
为了构建安全的以太坊代码库,我们首先要了解常见的错误实践并避免重蹈覆辙。对新添加的代码进行静态分析,对新功能进行模糊测试,并通过符号执行验证产品的安全性和有效性也是必不可少的步骤。
接下来,介绍几个我们开发的工具:
1. Not So Smart Contracts
这个代码库包含了众多以太坊智能合约的常见漏洞,其中涉及到真实的代码。浏览此库,你将熟悉可能出现的安全问题。它为每种类型的漏洞提供了一个子目录,如整数溢出、可重入性(与递归相似)以及未保护的功能等。每个子目录都包含相关的readme文件、真实场景下的合约漏洞样本,甚至有些还提供了漏洞利用代码。演示视频链接:[链接地址](
2. Slither
Slither是一套针对Solidity(以太坊智能合约脚本语言)的专用静态分析工具。它可以检测编码中的常见错误,如可重用性、构造函数和方法访问等。目前,Slither仅提供给合作公司使用,但如果你感兴趣,可以通过API访问相关功能。演示视频链接:[链接地址](
$ slither.py contract.sol
运行后,Slither将输出所有找到的漏洞信息。
3. Echidna
Echidna采用下一代智能模糊测试技术检测EVM字节码。它提供简单且覆盖率高的单元测试用例(超过80%),你可以在完成某项功能开发后使用Echidna测试代码的安全性。演示视频链接:[链接地址](
(1)向代码中添加Echidna测试用例(参考样例);
(2)运行命令“./echidna-test contract.sol”;
(3)查看输出信息。
对于更高级的安全分析(如抽象状态机测试),Echidna同样可以胜任。
4. Manticore
Manticore使用符号执行模拟针对EVM字节码的复杂多合约及多重交易攻击。开发完成后,可使用Manticore检测程序中的危险状态。它能枚举合约的执行状态并验证关键功能的安全性。演示视频链接:[链接地址](
manticore contract.sol --contract ContractName --txaccount [attacker|owner]
Manticore还能生成包含所有可到达状态的列表以及触发这些路径的输出参数。它还可以标记出安全问题的类型,如整数溢出或未初始化内存等。通过Manticore API,你可以更深入地检查高级合约的功能与表现:
(1)确保你的合约在初始化时使用了正确的值。
(2)通过定义交易信息,预见并理解其可能引发的合约状态变化。
(3)定期检查输出列表,以获取最新的合约状态信息。
对于智能合约的逆向工程分析,有多种工具可以帮助你深入理解代码逻辑:
逆向分析工具概览
1. EVM操作码数据库
在Remix调试器中进行代码审查或逆向分析合约二进制代码时,你可能会需要查看关于EVM(以太坊虚拟机)指令的详细信息。我们提供了一个包含完整EVM操作码的列表以及相关实现细节的资源,以帮助你节省时间。感兴趣的朋友可以点击这里】获取。
2. Ethersplay
Ethersplay是一款带有图形界面的EVM反汇编工具。它可以用来分析已编译的合约或已部署在区块链中的合约。其功能包括方法恢复、动态跳转计算、源代码匹配和二进制代码比较等。使用Ethersplay,你可以通过输入EVM字节码(ASCII十六进制编码或原始二进制格式)进行分析。在Binary Ninja(Ethersplay插件)中打开test.evm文件后,它会自动识别代码中的函数并生成控制流程图。
3. IDA-EVM
IDA-EVM是专为IDA Pro设计的图形化EVM反汇编工具。它可以进行函数恢复、动态跳转计算、代码签名和二进制代码比对等操作。这款工具允许我们在没有源代码的情况下对智能合约进行逆向工程分析。只需按照readme的安装步骤在IDA中安装,然后打开一个.evm或.bytecode文件即可开始分析。
4. Rattle
Rattle是一款可以直接在EVM字节码中搜索安全漏洞的静态分析工具。虽然目前Rattle只提供给与我们合作的公司使用,但如果你对其感兴趣,可以通过API或访问相关功能传送门】进行体验。
工具后的建议
在使用这些工具后,欢迎到相应的代码库中提交问题或参与功能的更新。你还可以加入Empire Hacking Slack的ethereum频道进行讨论。
参考来源:trailofbits,由FB小编Alpha_h4ck编译。
轮推网已助力多家企业解决区块链服务器租用托管的需求,为你的区块链服务器提供支持!如有需要,请详询在线客服。