Slither adalah framework analisis statis open-source untuk smart contract Solidity yang dikembangkan dan dipelihara oleh Trail of Bits — salah satu perusahaan keamanan smart contract paling dihormati di industri ini — yang menganalisis kode kontrak dengan mengurai representasi intermediate kompiler Solidity tanpa benar-benar mengeksekusi kode, memungkinkannya mendeteksi pola kerentanan di seluruh codebase dalam hitungan detik menggunakan 80+ detektor bawaan yang mencakup reentrancy, masalah aritmatika integer, variabel tidak diinisialisasi, cacat kontrol akses, pola delegatecall berbahaya, kerentanan front-running, dan banyak lagi.
Menjalankan Slither
“`bash
# Instal
pip install slither-analyzer
# Analisis dasar
slither . # analisis direktori saat ini
slither contracts/Token.sol # file tunggal
slither . –detect reentrancy-eth # detektor spesifik saja
slither . –exclude-dependencies # lewati node_modules/lib
# Format output
slither . –json output.json # output yang dapat dibaca mesin
“`
Detektor Utama
| Detektor | Dampak | Yang Ditemukan |
|---|---|---|
reentrancy-eth |
Tinggi | Reentrancy ETH (pelanggaran Checks-Effects-Interactions) |
reentrancy-no-eth |
Sedang | Reentrancy token |
uninitialized-storage |
Tinggi | Pointer storage yang tidak diinisialisasi |
arbitrary-send-eth |
Tinggi | Kontrol transfer ETH sembarang |
controlled-delegatecall |
Tinggi | Delegatecall dengan data yang dikontrol pengguna |
access-control |
Tinggi | onlyOwner tidak ada pada fungsi sensitif |
integer-overflow |
Sedang | Overflow aritmatika pra-0.8.0 |
tx-origin |
Sedang | tx.origin digunakan untuk auth |
Printers (Pemahaman Kode)
“`bash
slither . –print call-graph # grafik panggilan fungsi
slither . –print inheritance # pohon pewarisan kontrak
slither . –print contract-summary # gambaran umum cepat semua kontrak
slither . –print variable-order # layout storage
“`
Integrasi CI (GitHub Actions)
“`yaml
- name: Run Slither
uses: crytic/slither-action@v0.3.0
with:
target: ‘.’
slither-args: ‘–exclude-dependencies’
fail-on: high
“`
Keterbatasan
- Analisis statis tidak dapat mendeteksi semua bug logika — hanya mencocokkan pola yang diketahui
- False positives: Dapat menandai kode aman sebagai mencurigakan; memerlukan triage manual
- Tidak menggantikan audit manual — digunakan sebagai alat lulus pertama sebelum review mendalam
- Logika runtime: Tidak dapat mendeteksi kondisi pacu, bug ekonomi, atau eksploitasi yang bergantung pada keadaan runtime
Istilah Terkait
Lihat Juga
Sumber
- Slither GitHub — kode sumber open-source, README, dan daftar detektor.
- Trail of Bits Blog: Slither — posting teknis tentang pengembangan dan kasus penggunaan Slither.
- “Not All Audits Are Equal” — Trail of Bits (2022). Diskusi tentang peran analisis statis dalam audit smart contract.
Terakhir diperbarui: 2026-04