Daftar periksa keamanan kontrak pintar
Daftar periksa pengembangan kontrak pintar
Berikut adalah proses tingkat tinggi yang kami sarankan untuk diikuti sementara Anda menulis kontrak pintar Anda.
Periksa masalah keamanan yang dikenal:
- Tinjau ulang kontrak Anda dengan Slither(opens in a new tab). Slither memiliki lebih dari 40 detektor bawaan untuk mencari kerentanan umum. Jalankan Slither pada setiap pemeriksaan dengan kode baru dan pastikan kontrak mendapatkan laporan yang bersih (atau gunakan mode triase untuk mendiamkan beberapa masalah).
- Tinjau ulang kontrak Anda dengan Crytic(opens in a new tab). Crytic memeriksa 50 masalah yang tidak dapat dilakukan Slither. Crytic dapat menolong tim Anda mengetahui perkembangan anggota lain juga, dengan memunculkan masalah keamanan di Permintaan Penarikan di GitHub dengan mudah.
Pertimbangkan fitur spesial kontrak Anda:
- Apakah kontrak Anda dapat ditingkatkan? Tinjau kode yang dapat ditingkatkan untuk mencari kelemahannya dengan
slither-check-upgradeability
(opens in a new tab) atau Crytic(opens in a new tab). Kami telah mendokumentasikan 17 alur dari peningkatan yang bermasalah. - Apakah kontrak Anda mengklaim telah sesuai dengan ERC? Periksa dengan
slither-check-erc
(opens in a new tab). Peralatan ini dengan segera mengidentifikasi deviasi dari enam spesifikasi umum. - Apakah Anda berintegrasi dengan token pihak ketiga? Tinjau daftar periksa integrasi token kami sebelum menggunakan kontrak eksternal.
Secara visual periksa fitur keamanan kritikal kode Anda:
- Tinjau printer inheritance-graph(opens in a new tab) Slither. Hindari pembayangan yang tak disengaja dan masalah linearisasi C3.
- Tinjau printer function-summary(opens in a new tab) Slither. Tinjauan ini melaporkan visibilitas fungsi dan kontrol akses.
- Tinjau printer vars-and-auth(opens in a new tab) Slither. Tinjauan ini melaporkan kontrol akses terhadap variabel state.
Dokumentasikan properti keamanan kritikal dan gunakan pembuat tes otomatis untuk mengevaluasinya:
- Pelajari cara mendokumentasikan properti keamanan untuk kode Anda. Pada awalnya ini sulit, tapi inilah satu-satunya aktivitas yang paling penting untuk mencapai hasil yang baik. Aktivitas ini juga merupakan persyaratan untuk menggunakan teknik tingkat lanjut dalam tutorial ini.
- Tentukan properti keamanan di Solidity, untuk penggunaan dengan Echidna(opens in a new tab) dan Manticore(opens in a new tab). Fokuskan pada mesin state, kontrol akses, operasi aritmetik, interaksi eksternal, dan kesesuaian dengan standar.
- Tentukan properti keamanan dengan API Python Slither. Fokuskan pada warisan, dependensi variabel, kontrol akses, dan masalah struktur lainnya.
- Jalankan tes properti Anda pada setiap commit dengan Crytic(opens in a new tab). Crytic dapat mengkonsumsi dan mengevaluasi tes properti keamanan sehingga semua orang di dalam tim Anda dapat dengan mudah melihat bahwa tes lolos uji di GitHub. Tes yang gagal dapat menghalangi commit.
Akhirnya, waspadalah terhadap masalah yang tidak dapat dengan mudah ditemukan oleh peralatan otomatis:
- Kurangnya privasi: setiap orang bisa melihat transaksi Anda sementara diantrikan dalam pool
- Transaksi front running
- Operasi kriptografis
- Interaksi berisiko dengan komponon DeFi eksternal
Minta bantuan
Jam kerja Ethereum(opens in a new tab) dimulai setiap Selasa sore. Sesi berdurasi 1 jam dan 1 lawan 1 ini adalah kesempatan untuk mengajukan pertanyaan apa pun kepada kami tentang keamanan, penyelesaian masalah menggunakan peralatan kami, dan mendapatkan umpan balik dari para ahli tentang pendekatan yang Anda pakai saat ini. Kami akan menolong Anda memahami panduan ini.
Bergabunglah dengan Slack kami: Empire Hacking(opens in a new tab). Kami selalu dapat dihubungi di kanal #crytic dan #ethereum jika Anda memiliki pertanyaan apa pun.
Terakhir diedit: @sumitvekariya(opens in a new tab), 29 Agustus 2024