一个EVM符号执行工具和漏洞扫描器
项目描述
Pakala
"ilo Pakala li pakala e mani sona"
- Pakala是一个用于搜索Ethereum智能合约中可利用漏洞的工具。
- Pakala是Ethereum虚拟机的符号执行引擎。
该工具的目标用户是对Ethereum / EVM感兴趣的网络安全研究人员。
安装
pip3 install pakala
它只适用于Python 3。
用法
让我们看看0xeBE6c7a839A660a0F04BdF6816e2eA182F5d542C:它有一个transfer(address _to, uint256 _value)
函数。它似乎被require(call.value - _value) >= 0
保护,但由于我们是在减去两个无符号整数,所以结果也是一个无符号整数,所以这个条件始终成立。
让我们扫描它
pakala 0xeBE6c7a839A660a0F04BdF6816e2eA182F5d542C --force-balance="1 ether"
由于合约余额为0,它无法给我们发送一些以太币。所以我们将余额覆盖为1 ETH:这样它就有一些“虚拟”货币可以发送给我们。
该工具会告诉您找到了一个漏洞,并给出一条“状态”路径。每个状态对应一个事务,该事务路径需要遵守的约束,以及已读取/写入的存储...
建议:查看约束中的 calldata[0]
,以了解每笔交易的函数签名。
使用 pakala help
获取更完整的用法信息。
它是如何工作的?它做了什么?
查看介绍文章,了解更多信息和演示。
简而言之
- 它非常擅长在简单合同中找到简单错误。
- 误报率非常低。如果它标记了您的合同,那么人们可能可以将其清空。
- 它可以利用需要用其他存储键覆盖一些存储键的非平凡错误(数组下溢...),对加密哈希有良好的建模,并支持链式多笔交易。
然而,它仅实现了EVM的“有趣”子集。它不处理
- gas(气体),
- 预编译函数,
- 或与合约交互的合约(DELEGATECALL、STATICCALL...)。
这意味着CALL的支持仅限于发送以太币。其他工具如Manticore可以做得更好,而Pakala的关注点是针对大量合约的攻击性漏洞扫描。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
pakala-1.1.10.tar.gz (36.5 kB 查看散列)
构建发行版
pakala-1.1.10-py3-none-any.whl (53.0 kB 查看散列)
关闭
pakala-1.1.10.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 85b5f78ba79bf3dc2f0fd2e664b40fa3a80b3a7ba0572a09c4396a8849aedbc0 |
|
MD5 | 4e878d435ba49ce319032c678f8c1f7c |
|
BLAKE2b-256 | 2823139e7dadd86f31180eb9f706c23173c487ef7fc09740c85d33434a3d4d67 |
关闭
pakala-1.1.10-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | bbde8ac563a8ca4e952f3a7ff382876c5cc836db7d45194ef5b8537e45ef2554 |
|
MD5 | d8599f9fd1071fd569f8a115392b86ec |
|
BLAKE2b-256 | 4c714ee11d4341c0ea9d1aaeed8089d61fa0ccf30d19d9fe837094de91ef1422 |