Keuntungan:
- Keupayaan untuk mengenali corak kelemahan biasa seperti kemasukan semula, kawalan akses, manipulasi oracle dan lari ke hadapan dan mengimbasnya dengan alat analisis statik + kecerdasan buatan + manusia
- Keupayaan untuk membezakan antara kekuatan AI dalam menerangkan output alat dan mengutamakan positif palsu dan kelemahan dalam MEV dan logik perniagaan
- Fahami bahawa 'imbasan bersih' bukan sijil keselamatan, bahawa pengimbasan hanyalah satu lapisan kawalan
Kami melihat disiplin holistik pengauditan dalam unit sebelumnya. Dalam unit ini, kami menumpukan pada topik yang lebih teknikal: pengimbasan kerentanan — carian sistematik untuk corak kerentanan yang diketahui dalam kod. Di sini kami akan menggunakan AI, bersama-sama dengan alat analisis statik, sebagai pembantu yang mengimbas dan menerangkan corak kerentanan yang diketahui. Matlamat: untuk mengenali kelemahan yang paling biasa secara mendalam dan membezakan di mana AI boleh dipercayai dan di mana ia tidak mencukupi dalam mengimbasnya.
Pengimbasan statik dan dinamik
Pengimbasan ada dua jenis. Analisis statik — memeriksa kod tanpa menjalankannya: Alat seperti Slither dan Mythril mengimbas kod kontrak dan benderakan corak yang diketahui. Analisis dinamik/simbolik (menjalankan kod dengan input berbeza atau meneroka secara matematik): fuzzing (mengebom dengan input rawak) dan pelaksanaan simbolik (meneroka semua laluan yang mungkin) termasuk dalam kumpulan ini.
AI tidak menggantikan alat ini, ia melengkapkannya: apabila kenderaan mengeluarkan amaran, AI menerangkan amaran itu dalam bahasa biasa; AI boleh mengingatkan apabila alat terlepas corak; Tetapi AI sahaja tidak dapat menjamin sejauh mana ia mengimbas. Aliran kerja yang betul: alat + AI + manusia.
Petua: Berikan AI output alat analisis statik (cth. Laporan Slither) dan tanya "terangkan setiap makluman dalam bahasa mudah, yang mana merupakan risiko sebenar dan yang mana boleh menjadi positif palsu?" bertanya. AI tidak ternilai dalam menjadikan output alat mentah difahami dan diutamakan kepada manusia.
Corak kerentanan yang paling biasa
1. Kemasukan semula. Jika fungsi memanggil kontrak luar tanpa mengemas kini keadaannya, kontrak yang dipanggil boleh kembali, mencetuskan fungsi yang sama sekali lagi dan mengeluarkan dana beberapa kali. Penyelesaian: semak-kesan-tertib interaksi dan pengawal kemasukan semula.
2. Kekurangan kawalan akses. Fungsi kritikal (penarikan, pengeluaran, peningkatan) secara tidak sengaja didedahkan kepada umum. Ia adalah salah satu kesilapan yang paling biasa dan mahal.
3. Manipulasi Oracle. Pergantungan buta kontrak pada sumber harga luaran (oracle). Penyerang memanipulasi harga serta-merta dan menipu protokol. Penyelesaian: harga purata wajaran masa (TWAP), berbilang sumber.
4. Integer overflow/underfall. Apabila nombor melebihi nilai maksimum yang dibenarkan dan kembali ke permulaan. Solidity Moden menangkap kebanyakannya secara automatik, tetapi risikonya kekal dalam kod peringkat rendah (pemasangan).
5. Lari depan. Transaksi muncul dalam kumpulan awam (mempool) sebelum ia disahkan; Penyerang boleh melihat transaksi anda dan memasukkan transaksinya sendiri di hadapannya. MEV (Nilai Boleh Ekstrak Maksimum — nilai yang diekstrak daripada urutan transaksi) ialah nama umum subjek ini.
6. Penafian Perkhidmatan (DoS). Gelung menjadi terlalu mahal dan menjadikan fungsi tidak boleh digunakan, atau kebergantungan pada alamat menjadi terkunci.
7. Meningkatkan risiko. Perlanggaran penyimpanan dan penyalahgunaan kuasa dalam kontrak boleh naik taraf.
kelemahan
Kepercayaan pengimbasan AI
kenapa
kemasukan semula
tinggi
Corak yang terkenal dan jelas
kawalan capaian
tinggi
Acuan boleh diimbas
Operasi integer
tinggi
kawalan standard
Manipulasi Oracle
sederhana
Memerlukan konteks
Lari depan/MEV
Sederhana-Rendah
protokol khusus
ralat logik perniagaan
rendah
Sahih, kontekstual
Gesaan lemah / Gesaan kuat
Gesaan yang lemah:
Adakah terdapat kelemahan dalam kod ini?
Gesaan kuat:
Peranan anda: pembantu pemeriksaan keselamatan. Imbas kontrak di bawah untuk mendapatkan corak berikut yang diketahui dan "berisiko/tiada/tidak pasti" untuk setiap satu: kemasukan semula, kawalan akses, operasi integer, kebergantungan oracle, front-running, DoS, peningkatan keselamatan. Pautkan setiap penentuan kepada baris yang berkaitan dan terangkan mengapa terdapat risiko. Ini adalah hipotesis yang AKAN DISAHKAN dengan alat analisis statik dan juruaudit. Ambil perhatian bahawa mungkin terdapat positif palsu.
Empat templat yang boleh disalin
1) Penerangan output alat:
Di bawah ialah laporan alat analisis statik (Slither). Terangkan setiap makluman dalam bahasa mudah: apakah maksudnya, adakah ia risiko sebenar atau kemungkinan positif palsu, apakah yang harus menjadi keutamaannya? Jangan buat keputusan yang tegas; Utamakan untuk pengesahan juruaudit.
2) Pemeriksaan tertumpu kemasukan semula:
Cari semua fungsi yang membuat panggilan luaran dalam kontrak ini. Periksa sama ada susunan semakan-kesan-interaksi dipatuhi untuk setiap satu daripadanya dan sama ada terdapat pengawal kemasukan semula. Tunjukkan yang berisiko dengan garis. Tandakan jika anda tidak pasti; Menjana kod eksploitasi.
3) Peta kawalan akses:
Senaraikan semua fungsi luaran/awam dalam kontrak ini dan nyatakan "siapa yang boleh menghubungi" (semua orang/pemilik/peranan) untuk setiap satu. Lakukan operasi kritikal (tarik balik, cetak, naik taraf) dan tandakan operasi yang mempunyai kawalan akses yang lemah. Hadirkan dengan meja.
4) Penyingkiran positif palsu:
Pertimbangkan mengapa amaran imbasan ini mungkin bukan risiko NYATA (positif palsu): apakah konteks atau keadaan kod yang akan membatalkan amaran ini? Tetapi jangan katakan "tidak ada masalah sama sekali"; Senaraikan perkara yang memerlukan pengesahan.
Tiga kes mini (dalam bilangan)
Kes 1 — Kenderaan + AI menggandakan kecekapan. Satu pasukan menjalankan Slither pada projek 12 kontrak dan menerima 140 amaran. Sebaik sahaja kami mendapat penjelasan AI dan mengutamakan makluman, ternyata 95 daripada 140 makluman adalah positif palsu; Pasukan itu memberi tumpuan kepada 45 calon sebenar. Masa triage berkurangan daripada 2 hari kepada 5 jam. Pengajaran: AI berkuasa dalam memanusiakan output kenderaan.
Kes 2 — AI merampas MEV. Dalam kontrak DEX (decentralized exchange), AI mendapati corak standard bersih tetapi gagal untuk mengesan kelemahan di hadapan; kerana ini khusus untuk susunan operasi protokol. Juruaudit manusia dan simulasi ditangkap. Pelajaran: Risiko khusus protokol seperti MEV/front-running adalah kawasan lemah AI.
Kes 3 — Mengelakkan membuang masa untuk positif palsu. Pasukan itu terhindar daripada penulisan semula yang tidak perlu apabila AI menjelaskan bahawa amaran kemasukan semula sebenarnya adalah positif palsu (fungsi itu telah dikawal). Tetapi pasukan masih mengesahkannya dengan satu ujian. Pengajaran: AI mengutamakan; Pengesahan sekali lagi datang dengan ujian.
Had pengimbasan
Imbasan menemui corak yang diketahui. Alat mahupun AI tidak dijamin untuk mengesan kerentanan baharu, unik atau khusus protokol. Oleh itu, penapisan adalah sebahagian daripada audit; bukan dirinya. Idea bahawa "imbasan itu bersih, jadi ia bermakna ia selamat" adalah salah satu tanggapan salah yang paling berbahaya dalam bidang ini. Pengorekan mengambil buah yang tergantung rendah; Untuk risiko yang mendalam dan unik, kepakaran manusia, ujian, kabur dan pengauditan formal adalah penting.
Awas: Laporan "bersih" alat pengimbasan atau AI bukanlah sijil keselamatan. Mempersembahkannya seperti itu - terutamanya kepada pelabur - adalah mengelirukan dan tidak beretika.
Kesilapan biasa
- Menggantikan saringan untuk pemeriksaan. Pengimbasan adalah satu lapisan, bukan keseluruhannya.
- Menggunakan AI tanpa alat. Analisis statik + AI + kerja manusia bersama-sama.
- Menghapuskan positif palsu tanpa pengesahan. Setiap skrin diuji/disahkan manusia.
- Melangkau risiko khusus protokol (MEV) dengan bergantung pada AI. Kawasan lemah AI.
- Berfikir "imbasan bersih" = "selamat". Ia tidak dapat mencari yang tidak diketahui.
- Menjana kod eksploitasi. Hanya perihalan risiko defensif sahaja yang sah.
Secara ringkasnya
- Pengimbasan kerentanan mencari corak kerentanan yang diketahui dengan kenderaan + AI + manusia.
- AI berkuasa untuk menerangkan dan mengutamakan output alat analisis statik.
- Boleh dipercayai dalam corak yang jelas seperti kemasukan semula dan kawalan akses; Lemah dalam MEV dan logik perniagaan.
- Malah menghapuskan positif palsu memerlukan pengesahan.
- "Imbasan bersih" bukan sijil keselamatan; Ia bukan pengganti kepada penyeliaan.
Tugasan permohonan
Jalankan alat analisis statik pada kontrak sampel (jika boleh) atau cari laporan Slither siap sedia. Gunakan gesaan "keterangan output alat" pada AI. Nilaikan sama ada AI: (1) menerangkan amaran dengan betul, (2) masuk akal dalam membezakan antara positif palsu, dan (3) terlepas risiko khusus protokol. Isikan lajur "kenderaan ditemui / dijelaskan AI / disahkan manusia" dalam jadual.
senarai semak
- [ ] Saya meletakkan penetasan sebagai lapisan kawalan.
- [ ] Saya menggunakan alat analisis statik + AI + manusia bersama-sama.
- [ ] Saya mencari kategori mengikut kategori untuk corak yang diketahui.
- [ ] Saya menghapuskan positif palsu dengan pengesahan.
- [ ] Saya bergantung kepada manusia di kawasan yang lemah seperti MEV/logik perniagaan.
- [ ] Saya tidak menawarkan "sapu bersih" sebagai jaminan.
- [ ] Saya bekerja hanya untuk tujuan pertahanan; Saya tidak mencipta eksploitasi.