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. 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. 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
atau Crytic. Kami telah mendokumentasikan 17 alur dari peningkatan yang bermasalah. - Apakah kontrak Anda mengklaim telah sesuai dengan ERC? Periksa dengan
slither-check-erc
. 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 Slither. Hindari pembayangan yang tak disengaja dan masalah linearisasi C3.
- Tinjau printer function-summary Slither. Tinjauan ini melaporkan visibilitas fungsi dan kontrol akses.
- Tinjau printer vars-and-auth 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 dan Manticore. 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. 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 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. Kami selalu dapat dihubungi di kanal #crytic dan #ethereum jika Anda memiliki pertanyaan apa pun.
Terakhir diedit: @sumitvekariya, 29 Agustus 2024