
slither v0.11.6
Solidity 및 Vyper용 정적 분석기
Slither, 스마트 계약 정적 분석기
Empire Hacking Slack에 참여하세요
- 토론 및 지원
Slither는 Python3로 작성된 Solidity 및 Vyper 정적 분석 프레임워크입니다. 취약점 탐지기 모음을 실행하고, 계약 세부 정보에 대한 시각적 정보를 출력하며, 사용자 정의 분석을 쉽게 작성할 수 있는 API를 제공합니다. Slither는 개발자가 취약점을 찾고, 코드 이해도를 높이며, 사용자 정의 분석을 신속하게 프로토타입화할 수 있도록 합니다.
특징
- 낮은 오탐지율로 취약한 Solidity 코드를 탐지합니다 (트로피 목록 보기 trophies)
- 소스 코드에서 오류 조건이 발생하는 위치를 식별합니다
- 지속적 통합 및 Hardhat/Foundry 빌드에 쉽게 통합됩니다
- 내장된 '프린터'가 중요 계약 정보를 신속하게 보고합니다
- Python으로 사용자 정의 분석을 작성하기 위한 탐지기 API
- Solidity >= 0.4로 작성된 계약 분석 기능
- 중간 표현 (SlithIR)을 통해 간단하고 높은 정밀도의 분석 가능
- 모든 공개 Solidity 코드의 99.9%를 정확하게 파싱
- 계약당 평균 실행 시간 1초 미만
- CI에서 Github의 코드 스캔과 통합
- Vyper 스마트 계약 지원
사용법
Hardhat/Foundry/Dapp/Brownie 애플리케이션에서 Slither 실행:```console slither .
이 방법은 프로젝트에 의존성이 있을 때 권장됩니다. Slither는 기본 컴파일 프레임워크에 의존하여 소스 코드를 컴파일하기 때문입니다.
하지만 의존성을 임포트하지 않는 단일 파일에서 Slither를 실행할 수도 있습니다:```console
slither tests/uninitialized.sol
설치 방법
참고 Slither는 Python 3.10+가 필요합니다. 지원되는 컴파일 프레임워크 중 하나를 사용하지 않을 경우, solc, 즉 Solidity 컴파일러가 필요합니다. solc 버전 간 편리하게 전환하려면 solc-select 사용을 권장합니다.
uv 사용 (권장)
uv는 pip보다 10~100배 빠른 Python 패키지 관리자입니다.```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 도커 이미지를 사용하세요. 이 이미지에는 모든 보안 도구와 모든 주요 Solidity 버전이 단일 이미지에 포함되어 있습니다. 컨테이너에서 /home/share가 /share에 마운트됩니다.```bash
docker pull trailofbits/eth-security-toolbox
컨테이너에서 디렉터리를 공유하려면:```bash
docker run -it -v /home/share:/share trailofbits/eth-security-toolbox
통합
- GitHub 액션 통합을 위해서는 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:
- To generate a Markdown report, use
slither [target] --checklist. - To generate a Markdown with GitHub source code highlighting, use
slither [target] --checklist --markdown-root https://github.com/ORG/REPO/blob/COMMIT/(replaceORG,REPO,COMMIT)
탐지기