
slither v0.11.6
SolidityおよびVyper用静的解析ツール
Slither:スマートコントラクト静的解析ツール
Empire Hacking Slack に参加
- 議論とサポート
Slither は、Python3 で書かれた Solidity および Vyper の静的解析フレームワークです。脆弱性検出器一式を実行し、コントラクトの詳細に関する視覚情報を出力し、カスタム解析を簡単に記述するための API を提供します。Slither により、開発者は脆弱性の発見、コード理解の向上、カスタム解析の迅速なプロトタイピングが可能になります。
特徴
- 誤検出の少ない脆弱な Solidity コードの検出(トロフィーのリストを参照)
- ソースコード内のエラー発生箇所の特定
- 継続的インテグレーションおよび Hardhat/Foundry ビルドへの容易な統合
- 組み込みの「プリンター」による重要なコントラクト情報の迅速なレポート
- カスタム解析を Python で記述するための検出器 API
- Solidity >= 0.4 で書かれたコントラクトの解析機能
- 中間表現 (SlithIR) によるシンプルかつ高精度な解析
- 公開されている Solidity コードの 99.9% を正しくパース
- コントラクトあたりの平均実行時間は 1 秒未満
- CI における GitHub のコードスキャンとの統合
- Vyper スマートコントラクトのサポート
使い方
Slither を Hardhat/Foundry/Dapp/Brownie アプリケーションで実行:```console slither .
これは、プロジェクトに依存関係がある場合の推奨されるオプションです。Slitherは基盤となるコンパイルフレームワークに依存してソースコードをコンパイルします。
ただし、依存関係をインポートしない単一ファイル上でSlitherを実行することもできます:```console
slither tests/uninitialized.sol
インストール方法
注記 SlitherはPython 3.10以上が必要です。 サポートされているコンパイルフレームワークのいずれかを使用しない場合は、Solidityコンパイラであるsolcが必要です。solcのバージョンを簡単に切り替えるには、solc-selectの使用をお勧めします。
uvを使用する(推奨)
uvは高速なPythonパッケージマネージャで、pipよりも10〜100倍高速です。```console
Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
Install slither as a tool
uv tool install slither-analyzer
Or run slither without installation
uvx --from slither-analyzer slither
アップグレードするには:```console
uv tool upgrade slither-analyzer
Pipを使用する```console
python3 -m pip install slither-analyzer
アップグレードするには:```console
python3 -m pip install --upgrade slither-analyzer
Brew を使用する```console
brew install slither-analyzer
### Gitの使用(開発)```bash
git clone https://github.com/crytic/slither.git && cd slither
# Install as editable for development
uv tool install -e .
# Or use uv run for testing without installation
uv run slither <target>
The -eフラグは編集可能モードでインストールします。つまり、ソースコードへの変更は再インストールなしで即座に反映されます。
Dockerの使用
eth-security-toolbox Dockerイメージを使用してください。これには、すべてのセキュリティツールと、主要なすべてのバージョンのSolidityが1つのイメージに含まれています。 /home/share はコンテナ内の /share にマウントされます。```bash
docker pull trailofbits/eth-security-toolbox
コンテナ内でディレクトリを共有するには:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
統合
- GitHub Actionとの統合には、slither-actionを使用してください。
- pre-commitとの統合には、 (
$GIT_TAGを実際のタグに置き換えて) 使用してください ```YAML- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- id: slither
- repo: https://github.com/crytic/slither
rev: $GIT_TAG
hooks:
- マークダウンレポートを生成するには、
slither [target] --checklistを使用します。 - GitHub のソースコードハイライト付きマークダウンを生成するには、
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/を使用します(ORG、REPO、COMMITを置き換えてください)。
検出器