这是Securefy的版本,不再支持,并且将不再支持。请使用Searify v2.0。

Searefify是以太坊基金会和链安全支持的以太坊智能合约的安全扫描仪。 Searify背后的核心研究是在苏黎世Eth冰中心进行的。

它具有智能合约中常见的广泛安全模式列表:
该项目旨在成为所有以太坊安全社区的开放平台。为了提出新的模式,要自愿进行测试或贡献新的模式,请通过我们的Discord组取得联系。
souffle二进制,则可以崩溃。在写作时,Windows上不可用蛋suflé,因此也不应该在Windows上运行Searify。solc二进制文件必须能够使用坚固文件作为输入。 Searify假定为给定文件安装了正确的版本。 solc可以在这里提供。构建:
./gradlew jar在坚固文件上运行可靠:
java -jar build/libs/securify.jar -fs src/test/resources/solidity/transaction-reordering.sol在Pysolc.py脚本(需要Py-solc)提供的解说输出上运行可靠:
java -jar build/libs/securify.jar -co out.json在某些EVM二进制中运行(例如由solc生产):
java -jar build/libs/securify.jar -fh src/test/resources/solidity/transaction-reordering.bin.hex查看选项的完整列表:
java -jar build/libs/securify.jar -h运行测试(使用Junit4):
./gradlew test Python包装纸有助于处理solc和truffle 。需求在要求中。txt文件。 Dockerfile可用作设置本地环境以使用此包装器的参考。
该安装应在Debian衍生品或露天支持的任何其他平台上很简单。
对于不需要蛋奶酥的快速演示,您可以使用Docker。
构建Docker图像:
docker build . -t securify在一个小例子上运行可靠:
docker run securify您可以通过指定登录卷来更改分析的文件,然后将包含的每个*.sol文件通过searify进行处理:
docker run -v $( pwd ) /folder_with_solidity_files:/project securify添加一个--truffle标志应允许Securefy通过已安装依赖项的松露项目运行(因此,如果需要,请在需要之前npm install )。没有此标志,该项目将使用solc编译。添加一个-h以获取选项的完整列表。特别是,如果用户想从松露中接收汇编信息,则应添加-v标志。
如果要接收JSON输出,Docker支持一个--json标志,将抑制漂亮的输出并返回JSON。确保添加-q标志,如果不显示进度信息,则导致纯JSON输出。匹配的行索引的索引是基于0的,这意味着与i的匹配是指i+1线是匹配的。特别是,第一行的索引为0。
可以通过test.py文件进行基本端到端测试:
python3 test . py可以使用Pipenv安装要求:
pipenv install或使用pip :
pip install -r requirements.txt这些测试比较了通过Searify提供的当前JSON输出与一些过去的输出,并报告两者之间的差异。
您可以在项目中添加以下.travis.yml以在新提交中运行:
services:
- docker
before_install:
- docker pull chainsecurity/securify
script:
- docker run -v $(pwd):/project chainsecurity/securify
这应该允许安全运行在松露项目中已经安装了依赖项(因此,如果需要,请在需要之前npm install )。
输出松散地遵循叮当风格。仅报告警告和漏洞。如果也希望获得合规性信息,请在Docker中使用--json标志,或Java可执行文件上的-co标志以json格式获取所有分析信息。
参见贡献。
加入我们的不和谐与其他用户讨论。
尽管Securefify定期用于帮助链接审核,但仍有错误,包括:
computeBranches是递归的,因此会抛出stackoverflowerror异常。在大多数情况下,使用java的-Xss选项,例如java -Xss1G -jar ...solc获得二进制合同) 通过静态分析智能合约的EVM代码,以推断有关合同的重要语义信息(包括控制流和数据流的事实)。使用可扩展的数据求解器Soufflé完全自动化此步骤。然后,确保检查被推论的事实以发现安全性违规或证明与安全相关的说明的遵守情况。
Securefy扫描仪背后的完整技术细节可在研究论文中获得。