Keuntungan:
- Kemampuan untuk mengenali pola kerentanan umum seperti masuk kembali, kontrol akses, manipulasi oracle, dan front-running serta memindainya dengan alat analisis statis + kecerdasan buatan + manusia
- Kemampuan untuk membedakan kekuatan AI dalam menjelaskan keluaran alat dan memprioritaskan kesalahan positif serta kelemahan dalam MEV dan logika bisnis
- Pahami bahwa 'pemindaian bersih' bukanlah sertifikat keamanan, bahwa pemindaian hanyalah satu lapisan kontrol
Kita melihat disiplin audit holistik di unit sebelumnya. Dalam unit ini, kami fokus pada topik yang lebih teknis: pemindaian kerentanan — pencarian sistematis untuk pola kerentanan yang diketahui dalam kode. Di sini kita akan menggunakan AI, bersama dengan alat analisis statis, sebagai asisten yang memindai dan menjelaskan pola kerentanan yang diketahui. Tujuannya: untuk mengetahui secara mendalam kerentanan paling umum dan membedakan mana AI yang dapat diandalkan dan mana yang tidak memadai dalam memindainya.
Pemindaian statis dan dinamis
Pemindaian ada dua jenis. Analisis statis — memeriksa kode tanpa menjalankannya: Alat seperti Slither dan Mythril memindai kode kontrak dan menandai pola yang diketahui. Analisis dinamis/simbolis (menjalankan kode dengan masukan berbeda atau menjelajahinya secara matematis): fuzzing (membombardir dengan masukan acak) dan eksekusi simbolik (menjelajahi semua jalur yang mungkin) termasuk dalam kelompok ini.
AI tidak menggantikan alat-alat ini, melainkan melengkapinya: ketika kendaraan mengeluarkan peringatan, AI menjelaskan peringatan tersebut dalam bahasa yang sederhana; AI dapat mengingatkan ketika alat tersebut melewatkan suatu pola; Namun AI sendiri tidak dapat menjamin seberapa banyak yang dipindai. Alur kerja yang tepat: alat + AI + manusia.
Tip: Berikan AI keluaran dari alat analisis statis (misalnya laporan Slither) dan tanyakan “jelaskan setiap peringatan dalam bahasa sederhana, mana yang merupakan risiko nyata dan mana yang mungkin merupakan positif palsu?” bertanya. AI sangat berharga dalam membuat keluaran alat mentah dapat dimengerti dan diprioritaskan oleh manusia.
Pola kerentanan yang paling umum
1. Masuk kembali. Jika suatu fungsi memanggil kontrak eksternal tanpa memperbarui statusnya, kontrak yang dipanggil dapat kembali, memicu fungsi yang sama lagi, dan menarik dana beberapa kali. Solusi: perintah cek-efek-interaksi dan penjaga masuk kembali.
2. Kurangnya kontrol akses. Fungsi penting (penarikan, penarikan, peningkatan) secara tidak sengaja dipublikasikan. Ini adalah salah satu kesalahan paling umum dan mahal.
3. Manipulasi Oracle. Ketergantungan buta kontrak pada sumber harga eksternal (oracle). Penyerang memanipulasi harga secara instan dan menipu protokol. Solusi: harga rata-rata tertimbang waktu (TWAP), multi-sumber.
4. Luapan/kekurangan bilangan bulat. Ketika suatu angka melebihi nilai maksimum yang diperbolehkan dan kembali ke awal. Soliditas modern menangkap sebagian besar secara otomatis, namun risikonya tetap ada pada kode tingkat rendah (perakitan).
5. Berlari di depan. Transaksi muncul di kumpulan publik (mempool) sebelum dikonfirmasi; Penyerang dapat melihat transaksi Anda dan memasukkan transaksinya sendiri di depannya. MEV (Maximal Extractable Value — nilai yang diambil dari urutan transaksi) adalah nama umum subjek ini.
6. Penolakan Layanan (DoS). Sebuah loop menjadi terlalu mahal dan membuat fungsi tidak dapat digunakan, atau ketergantungan pada suatu alamat menjadi terkunci.
7. Tingkatkan risiko. Tabrakan penyimpanan dan penyalahgunaan wewenang dalam kontrak yang dapat diupgrade.
kerentanan
Kepercayaan pemindaian AI
Mengapa
masuk kembali
tinggi
Pola yang terkenal dan jelas
kontrol akses
tinggi
Cetakan dapat dipindai
Operasi bilangan bulat
tinggi
kontrol standar
Manipulasi Oracle
sedang
Membutuhkan konteks
Berjalan di depan/MEV
Sedang-Rendah
spesifik protokol
kesalahan logika bisnis
rendah
Otentik, kontekstual
Perintah lemah / Perintah kuat
Perintah yang lemah:
Apakah ada celah dalam kode ini?
Perintah yang kuat:
Peran Anda: asisten pemeriksaan keamanan. Pindai kontrak di bawah untuk mengetahui pola-pola yang diketahui berikut ini dan "berisiko/tidak/tidak yakin" untuk masing-masing pola: masuk kembali, kontrol akses, operasi bilangan bulat, ketergantungan oracle, berjalan di depan, DoS, peningkatan keamanan. Kaitkan setiap penentuan dengan garis yang relevan dan jelaskan mengapa terdapat risiko. Ini adalah hipotesis yang AKAN DIVERIFIKASI dengan alat analisis statis dan auditor. Perhatikan bahwa mungkin ada hasil positif palsu.
Empat templat yang dapat disalin
1) Deskripsi keluaran alat:
Di bawah ini adalah laporan alat analisis statis (Slither). Jelaskan setiap peringatan dengan bahasa yang sederhana: apa artinya, apakah ini merupakan risiko nyata atau kemungkinan positif palsu, apa yang harus menjadi prioritasnya? Jangan mengambil keputusan tegas; Prioritaskan untuk konfirmasi auditor.
2) Penyaringan yang berfokus pada masuk kembali:
Temukan semua fungsi yang melakukan panggilan eksternal dalam kontrak ini. Periksa apakah urutan interaksi pemeriksaan-efek-interaksi diikuti untuk masing-masing interaksi dan apakah ada penjaga masuk kembali. Tunjukkan yang berisiko dengan garis. Tandai jika Anda tidak yakin; Menghasilkan kode eksploitasi.
3) Peta kontrol akses:
Cantumkan semua fungsi eksternal/publik dalam kontrak ini dan tentukan "siapa yang dapat menelepon" (setiap orang/pemilik/peran) untuk masing-masing fungsi. Lakukan operasi penting (menarik, mencetak, meningkatkan) dan menandai operasi yang kontrol aksesnya lemah. Sajikan dengan sebuah meja.
4) Eliminasi positif palsu:
Pertimbangkan mengapa peringatan pemindaian ini mungkin bukan risiko NYATA (positif palsu): konteks atau kondisi kode apa yang akan membuat peringatan ini tidak valid? Tapi jangan katakan "sama sekali tidak ada masalah"; Buat daftar poin-poin yang memerlukan konfirmasi.
Tiga kotak mini (dalam jumlah)
Kasus 1 — Kendaraan + AI meningkatkan efisiensi dua kali lipat. Satu tim menjalankan Slither pada proyek 12 kontrak dan menerima 140 peringatan. Setelah kami meminta AI menjelaskan dan memprioritaskan peringatan tersebut, ternyata 95 dari 140 peringatan tersebut adalah positif palsu; Tim fokus pada 45 kandidat nyata. Waktu triase berkurang dari 2 hari menjadi 5 jam. Pelajaran: AI sangat ampuh dalam memanusiakan keluaran kendaraan.
Kasus 2 — AI membajak MEV. Dalam kontrak DEX (pertukaran terdesentralisasi), AI menemukan pola standar bersih tetapi gagal mendeteksi kerentanan yang ada di depan; karena ini khusus untuk urutan operasi protokol. Auditor manusia dan simulasi ditangkap. Pelajaran: Risiko spesifik protokol seperti MEV/front-running adalah kelemahan AI.
Kasus 3 — Menghindari membuang-buang waktu untuk hasil positif palsu. Tim terhindar dari penulisan ulang yang tidak perlu ketika AI menjelaskan bahwa peringatan masuk kembali sebenarnya adalah positif palsu (fungsinya sudah dilindungi). Namun tim tetap memastikannya dengan satu tes. Pelajaran: AI memprioritaskan; Konfirmasi kembali datang dengan pengujian.
Batasan pemindaian
Pemindaian menemukan pola yang diketahui. Baik alat maupun AI tidak dijamin dapat mendeteksi kerentanan baru, unik, atau spesifik protokol. Oleh karena itu, penyaringan merupakan bagian dari audit; bukan dirinya sendiri. Gagasan bahwa "pemindaiannya bersih, jadi aman" adalah salah satu kesalahpahaman paling berbahaya di bidang ini. Pengerukan mengambil buah yang tergantung rendah; Untuk risiko yang dalam dan unik, keahlian manusia, pengujian, fuzzing, dan audit formal sangatlah penting.
Perhatian: Laporan “bersih” dari alat pemindaian atau AI bukanlah sertifikat keamanan. Menyajikannya seperti itu – terutama kepada investor – adalah tindakan yang menyesatkan dan tidak etis.
Kesalahan umum
- Menggantikan penyaringan untuk inspeksi. Pemindaian adalah satu lapisan, bukan keseluruhan.
- Menggunakan AI tanpa alat. Analisis statis + AI + manusia bekerja sama.
- Menghilangkan positif palsu tanpa konfirmasi. Setiap layar diuji/diverifikasi manusia.
- Melewati risiko spesifik protokol (MEV) dengan mengandalkan AI. Area lemah AI.
- Berpikir "pemindaian bersih" = "aman". Ia tidak dapat menemukan hal yang tidak diketahui.
- Menghasilkan kode eksploitasi. Hanya deskripsi risiko defensif yang sah.
Singkatnya
- Pemindaian kerentanan mencari pola kerentanan yang diketahui pada kendaraan + AI + manusia.
- AI sangat kuat dalam menjelaskan dan memprioritaskan keluaran alat analisis statis.
- Dapat diandalkan dalam pola yang jelas seperti masuk kembali dan kontrol akses; Lemah dalam MEV dan logika bisnis.
- Bahkan menghilangkan positif palsu memerlukan konfirmasi.
- "Pemindaian bersih" bukanlah sertifikat keamanan; Ini bukan pengganti pengawasan.
Tugas aplikasi
Jalankan alat analisis statis pada contoh kontrak (jika memungkinkan) atau temukan laporan Slither yang sudah jadi. Terapkan perintah "deskripsi keluaran alat" ke AI. Evaluasi apakah AI: (1) menjelaskan peringatan dengan benar, (2) masuk akal dalam membedakan positif palsu, dan (3) melewatkan risiko spesifik protokol. Isi kolom “kendaraan ditemukan / penjelasan AI / dikonfirmasi manusia” dalam tabel.
daftar periksa
- [ ] Saya memposisikan palka sebagai lapisan kontrol.
- [ ] Saya menggunakan alat analisis statis + AI + manusia secara bersamaan.
- [] Saya mencari kategori demi kategori untuk pola yang diketahui.
- [ ] Saya menghilangkan positif palsu dengan konfirmasi.
- [ ] Saya mengandalkan manusia di bidang lemah seperti MEV/logika bisnis.
- [ ] Saya tidak menawarkan "pembersihan" sebagai jaminan.
- [ ] Saya bekerja hanya untuk tujuan pertahanan; Saya tidak membuat eksploitasi.