【工具使用】Slither:Solidity靜態分析框架
工具簡介
Slither 是一個 python3 開發,用于檢測智能合約(solidity)漏洞的靜態分析框架。
Slither 的 Github 地址:https://github.com/crytic/slither
工具安裝
它有三種安裝方式(pip, git, docker),我們為了方便,采用docker進行安裝。因為工具包 Ethereum Security Toolbox 中包括了 Slither 工具,所以我們直接通過安裝工具包 Ethereum Security Toolbox 的 docker 來獲取 Slither。
智能合約工具箱docker安裝:https://github.com/crytic/eth-security-toolbox
安裝指令
docker pull trailofbits/eth-security-toolbox
構建docker
docker run -it -v <local path>:<docker path> trailofbits/eth-security-toolbox
// example
docker run -it -v F:\contracts:/contracts trailofbits/eth-security-toolbox
這行指令的作用是啟動docker,其中 -v是指將本地的磁盤目錄映射到docker中。
- local path:本地磁盤目錄
- docker path:映射到docker中的目錄
- trailofbits/eth-security-toolbox:docker名稱
查看映射目錄
ethsec@560c87507f28:~$ cd /
ethsec@560c87507f28:/$ ls
contracts bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
ethsec@560c87507f28:/$ cd contracts/
ethsec@560c87507f28:/contracts$ ls
constant contracts decode migrations package.json readme.md scripts test truffle-config.js
使用
在 Truffle/Embark/Dapp/Etherlime/Hardhat 項目上使用 Slither
slither .
在單個文件上上使用 Slither
slither tests/uninitialized.sol
可配合solc-select進行solc版本的選擇。
后記
截至 21.6.3 為止,Slither支持的solc最高版本是0.7.4,很不幸我想分析的合約是0.8.x的。也嘗試了一下自己在docker里面更新solc,但提示權限不足失敗告終。無能狂怒只能提個issue祈禱一下開發者盡快更新0.8.x版本吧。然后,也看了其他的幾個漏掃,但是好像都不支持0.8.x版本的合約,迷茫的阿菜該何去何從。

浙公網安備 33010602011771號