Slither: Tumpahnya Auditor

Feb 14 2023
Salam, para pembaca yang budiman! Hari ini kami ingin memulai serangkaian artikel tentang apa yang kami sebut metodologi audit. Pada awalnya, kami ingin mengatakan bahwa dalam seri ini kami hanya akan fokus pada aspek-aspek yang dapat sangat berguna untuk audit dan peretasan bug bounty dan yang tidak dijelaskan di mana pun.

Salam, para pembaca yang budiman! Hari ini kami ingin memulai serangkaian artikel tentang apa yang kami sebut metodologi audit. Pada awalnya, kami ingin mengatakan bahwa dalam seri ini kami hanya akan fokus pada aspek-aspek yang dapat sangat berguna untuk audit dan peretasan bug bounty dan yang tidak dijelaskan di mana pun.

Kami dapat dengan yakin mengatakan bahwa tip semacam itu dapat dibaca secara publik di beberapa tempat, dan blog kami adalah salah satunya! Ikuti kami sekarang juga agar Anda tidak ketinggalan artikel baru, dan mari kita mulai!

Dalam pekerjaannya, auditor menggunakan alat dan metode yang berbeda — ada banyak sekali. Lihat saja pilihan ini dan secara terpisah pada alat ultra-spesifik ini ; tidak diragukan lagi bahwa jumlahnya sangat banyak. Menurut penelitian ini, tingkat kolaborasi yang lebih tinggi (misalnya, untuk upaya pemeliharaan) diamati di antara pengguna dalam alat daripada yang ada di repo aplikasi, tetapi ada beberapa alat, yang merupakan semacam standar emas — kita akan membahasnya terlebih dahulu — yaitu tentang Slither, SmartCheck dan secara terpisah mendiskusikan fuzzing dengan Echidna.

Pertama, beberapa kata tentang alat kami, SmartCheck — yang dapat menjadi penguat dari apa yang akan kita bicarakan selanjutnya. Bahkan dalam bentuk mentahnya, ini menunjukkan hasil yang baik, dan tempat kedua dalam artikel ToB tidak buruk untuk alat yang kami hentikan dukungannya tiga tahun lalu. Kami akan melakukan perbandingan kinerja terpisah dari kedua alat tersebut di masa mendatang. Namun, mari beralih ke Slither.

Kami mengandalkan Slither — alat analisis statis dari Trail of Bits untuk menjaga kualitas audit kami. Mempertimbangkan kemudahan penggunaan, ada baiknya untuk mencobanya.

Selain kemampuan analisisnya yang luar biasa, ia juga mencakup sekumpulan printer yang meringkas berbagai aspek kontrak dalam bentuk yang mudah dicerna. Seseorang dapat menggunakannya untuk membangun model kontrak mental dengan cepat sebelum mendalami kodenya.

Dengan menggunakan printer, seseorang dapat memperoleh ringkasan kontrak, memeriksa warisan dan tata letak penyimpanan kontrak, dan melihat pengubah yang digunakan dan pemeriksaan yang diterapkan. Selain itu, beberapa printer dapat menampilkan dalam format *.dot, sehingga Anda dapat melihat grafik dengan baik. Namun, banyak printer kehilangan nilainya untuk proyek yang lebih kompleks karena keluarannya menjadi tidak dapat dikelola.

Hal menarik lainnya adalah ia memiliki API Python yang memungkinkan instrumentasi mesin analisis statis. Ini berarti bahwa mesin dapat digunakan untuk mendapatkan informasi spesifik dari kontrak secara otomatis, dan secara umum dapat digunakan sesuai dengan kebutuhan pengguna. Anda juga dapat menjelajahi pendekatan pembelajaran mesin (ML) untuk meningkatkan kinerja Slither secara otomatis melalui Slither-simil !

Itu sebabnya kami mendapatkan hasilnya di semua proyek. Kembali ke apa yang kita bicarakan — kami ingin membuat artikel ini bermanfaat terutama bagi mereka yang ingin memulai perjalanan ke keamanan Web3.o, jadi di bawah ini Anda akan melihat semacam daftar tip yang dapat digunakan untuk mencapai hasil yang luar biasa di urusanmu!

❕ Penting:

  • Sangat sedikit pengembang yang secara ketat mengikuti standar keamanan menurut penelitian ini , dan itu tidak bisa tidak mengkhawatirkan.
  • Itulah mengapa Anda tidak boleh melupakan keselamatan saat mempersiapkan tempat kerja Anda — karyawan kami dengan jelas mematuhi aturan (2) (3) dan karenanya tidak terjadi kecelakaan.
  • Slither tidak mendukung beberapa fitur Solidity yang jarang digunakan dan mungkin gagal bahkan pada kontrak berkualitas tinggi. Kami merekomendasikan untuk menyesuaikan garis yang bermasalah hingga alat bekerja dengan benar. Perhatikan bahwa ini mungkin memengaruhi keluaran jika nomor baris berubah. Dalam pengalaman kami, Slither memberikan nilai yang cukup untuk menerima batasan gaya kode ini.

1. Make sure there is a python version 3.6+
python3 --version
2. Install Slither via pip:
pip3 install slither-analyzer
3. Make sure you are using the latest version of Slither before you run it. You can check the slither repository on github for release versions.
slither --version

  • github.com/crytic/slither#how-to-install

set up a new environment:  python3 -m venv /path/to/venv
activate the environment:  source /path/to/venv/bin/activate

Biasanya, kami menjalankan Slither di semua file proyek (kecuali dependensi npm) dan menyimpan hasilnya ke json, yang kemudian diubah menjadi tabel csv. Untuk melakukan ini di akar proyek, jalankan:

slither . –-filter-path “node_modules” --json result.json
Other examples:
- slither .
- slither path/to/my_contract.sol
- slither . --exclude-informational

  • Slither tidak berjalan pada file terpisah yang memiliki impor lingkungan pengembangan (misalnya, truffle, impor modul hardhat npm, atau impor brownies pm). Dalam hal ini, Anda perlu menyelesaikan dependensi secara manual — Anda perlu memperbaiki impor ke jalur absolut atau relatif di file target.
  • Dalam kasus dependensi paket brownies, ada baiknya menginstal modul yang sama melalui npm dan menyelesaikan dependensi seperti dijelaskan di atas. Jangan gunakan klon brownies pm, karena terkadang tidak menyertakan beberapa file.
  • Anda dapat menambahkan file slither.config.json untuk memfilter file atau mengecualikan detektor tertentu. Lihat dokumentasi Slither untuk daftar detektor atau tonton video lama yang bagus ini dan tutorial ini .
  • Jalankan pada setiap file secara terpisah. Kemungkinan besar, masalahnya tidak ada di semua file.
  • Temukan masalah serupa dalam masalah merayap dan terapkan solusi jika ada. "Upvote" adalah masalah (Anda dapat menambahkan emoji di atasnya) jika tidak diselesaikan, agar pengembang memperhatikannya.

Plugin adalah salah satu aspek terpenting untuk menyiapkan dan menjalankan Slither dengan benar karena mereka meningkatkan fungsionalitas secara signifikan. Juga, perlu diingat bahwa ini adalah cara paling nyaman untuk menambahkan detektor Anda sendiri. Di bawah ini adalah dasar-dasar bekerja dengan mereka. Cobalah untuk memahami analogi pekerjaan dan selanjutnya bangun metodologi Anda sendiri berdasarkan ini.

A) Panduan plugin pemeriksaan kemampuan upgrade :

B) Periksa panduan plugin ERC:

Jalankan jika Anda ingin memeriksa kepatuhan kontrak dengan salah satu EIP yang ditentukan:

  • EIP20
  • EIP223
  • EIP777
  • EIP721
  • EIP165
  • EIP1155
  • EIP1820
  • Jika “ Kontrak tidak ditemukan: nama. ” — Anda perlu mengganti nama kontrak agar nama dalam proyek menjadi unik.
  • Anda dapat menambahkan file slither.config.json untuk memfilter file atau mengecualikan detektor tertentu. Lihat dokumentasi slither untuk daftar detektor.

slither-read-storagemengambil slot penyimpanan dari kode sumber dengan menggunakan informasi dari analisis tipe yang mendasari Slither (misalnya, apakah array tetap atau dinamis) untuk menginformasikan perhitungan slot. Alat ini dapat mengambil slot penyimpanan dari satu variabel atau seluruh kontrak, dan nilai penyimpanan dapat diambil dengan menyediakan Ethereum RPC.

Periksa:

  • blog.trailofbits.com/2022/07/28/shedding-smart-contract-storage-with-slither
  • 0xalpharush.github.io/slithering-through-the-dark-forest

Contoh perintah:

slither-read-storage Privacy.sol 0xFdaF948A66903a0050ed051508c7C26D137E76C4 --variable-name data --rpc-url https://rinkeby.infura.io/v3/{project-id}

IV — Kesimpulan

Sebagai penutup, kami ingin menyampaikan bahwa kami berharap artikel ini informatif dan bermanfaat bagi Anda! Di artikel mendatang, kami akan menulis tentang perbedaan SmartCheck dan Slither favorit kami-perbedaannya cukup signifikan!

Hal terpenting yang ingin kami sampaikan dan tunjukkan kepada Anda adalah bahwa instrumen baru tidak berarti bagus dan instrumen lama tidak berarti buruk. Ini semua tentang mengetahui cara menggunakannya dan bersedia mencari sesuatu yang baru. Saya harap kami membuat Anda tertarik dengan hal itu.

Instrumen apa yang harus kita tinjau? Apa yang akan membuat Anda tertarik untuk membaca? Silakan tinggalkan komentar Anda, kami akan dengan senang hati menjawabnya, dan jawaban serta pertanyaan terbaik dapat dimasukkan dalam artikel selanjutnya!

Omong-omong, ada beberapa lowongan sekarang jadi jika proyek Anda memerlukan audit — jangan ragu untuk menulis kepada kami, kunjungi halaman laporan publik kami di sini .

Semoga kekuatan menyertai Anda!