跳转到主要内容

一个EVM符号执行工具和漏洞扫描器

项目描述

Pakala

PyPI Build States

"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 查看散列)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面