Dobici:
- Sposobnost prepoznavanja uobičajenih obrazaca ranjivosti kao što su ponovni ulazak, kontrola pristupa, manipulacija orakulom i front-running i skeniranje pomoću alata za statičku analizu + umjetna inteligencija + čovjek
- Sposobnost razlikovanja između prednosti AI u objašnjavanju izlaznih rezultata alata i davanja prioriteta lažnim pozitivnim rezultatima i slabostima u MEV-u i poslovnoj logici
- Shvatite da 'čisto skeniranje' nije sigurnosni certifikat, da je skeniranje samo jedan sloj kontrole
U prethodnoj jedinici vidjeli smo holističku disciplinu revizije. U ovoj jedinici fokusiramo se na tehničkiju temu: skeniranje ranjivosti — sistematsko traženje poznatih obrazaca ranjivosti u kodu. Ovdje ćemo koristiti AI, zajedno sa alatima za statičku analizu, kao pomoćnika koji skenira i opisuje poznate obrasce ranjivosti. Cilj: dubinski upoznati najčešće ranjivosti i razlikovati gdje je AI pouzdan, a gdje neadekvatan u njihovom skeniranju.
Statičko i dinamičko skeniranje
Skeniranje je dvije vrste. Statička analiza — ispitivanje koda bez pokretanja: Alati kao što su Slither i Mythril skeniraju kod ugovora i označavaju poznate obrasce. Dinamička/simbolička analiza (pokretanje koda sa različitim ulazima ili njegovo matematičko istraživanje): fuzzing (bombardiranje nasumičnim unosom) i simboličko izvršenje (istraživanje svih mogućih puteva) spadaju u ovu grupu.
AI ne zamjenjuje ove alate, već ih dopunjuje: kada vozilo izda upozorenje, AI objašnjava upozorenje jednostavnim jezikom; AI može podsjetiti kada alat propusti uzorak; Ali sama AI ne može garantovati koliko skenira. Pravi tok rada: alat + AI + čovjek.
Savjet: Dajte AI izlaz alata za statičku analizu (npr. Slither izvještaj) i zamolite „objasnite svako upozorenje na jednostavnom jeziku, koji su stvarni rizici, a koji bi mogli biti lažno pozitivni?“ pitaj. AI je od neprocjenjive važnosti u stvaranju sirovog rezultata alata razumljivim i prioritetnim za ljude.
Najčešći obrasci ranjivosti
1. Ponovni ulazak. Ako funkcija pozove eksterni ugovor bez ažuriranja njegovog stanja, pozvani ugovor se može vratiti, ponovo pokrenuti istu funkciju i više puta povući sredstva. Rješenje: provjere-efekti-interakcija red i zaštita ponovnog ulaska.
2. Nedostatak kontrole pristupa. Kritična funkcija (povlačenje, povlačenje, nadogradnja) je slučajno objavljena. To je jedna od najčešćih i najskupljih grešaka.
3. Oracle manipulacija. Slijepo oslanjanje ugovora na eksterni izvor cijene (proročanstvo). Napadač trenutno manipuliše cijenom i obmanjuje protokol. Rešenje: vremenski ponderisana prosečna cena (TWAP), više izvora.
4. Prelivanje/podnizanje cijelog broja. Kada broj premaši maksimalnu dozvoljenu vrijednost i vrati se na početak. Moderna Solidity većinu toga hvata automatski, ali rizik ostaje u kodu niskog nivoa (sastavljanja).
5. Prednje trčanje. Transakcije se pojavljuju u javnom bazenu (mempool) prije nego što budu potvrđene; Napadač može vidjeti vašu transakciju i umetnuti svoju transakciju ispred nje. MEV (Maximal Extractable Value — vrijednost izdvojena iz sekvence transakcije) je opći naziv ovog subjekta.
6. Uskraćivanje usluge (DoS). Petlja postaje preskupa i čini funkciju neupotrebljivom, ili ovisnost o adresi postaje zaključana.
7. Rizici nadogradnje. Sukob skladištenja i zloupotreba ovlasti u nadogradivim ugovorima.
ranjivost
AI skeniranje povjerenja
Zašto
ponovni ulazak
visoko
Dobro poznat, jasan obrazac
kontrola pristupa
visoko
Kalup se može skenirati
Cjelobrojne operacije
visoko
standardna kontrola
Oracle manipulacija
srednje
Zahtijeva kontekst
Front-running/MEV
Srednje-nisko
specifičan za protokol
greška poslovne logike
nisko
Autentično, kontekstualno
Slaba prompt / Jaka prompt
Slab upit:
Postoji li rupa u ovom kodu?
Snažan upit:
Vaša uloga: asistent za sigurnosnu provjeru. Skenirajte ugovor u nastavku za sljedeće poznate obrasce i "u riziku/ne/nesiguran" za svaki: ponovni ulazak, kontrola pristupa, cjelobrojne operacije, ovisnost o oracleu, pokretanje unaprijed, DoS, sigurnost nadogradnje. Povežite svaku odluku sa relevantnom linijom i objasnite zašto postoji rizik. Ovo su hipoteze koje ĆE SE PROVJERITI pomoću alata za statičku analizu i revizora. Imajte na umu da može biti lažnih pozitivnih rezultata.
Četiri šablona za kopiranje
1) Opis izlaza alata:
Ispod je izvještaj alata za statičku analizu (Slither). Objasnite svako upozorenje jednostavnim jezikom: šta ono znači, da li je to stvarni rizik ili moguće lažno pozitivno, šta treba da bude njegov prioritet? Nemojte donositi čvrstu odluku; Odredite prioritete za potvrdu revizora.
2) Skrining fokusiran na ponovni ulazak:
Pronađite sve funkcije koje vrše eksterne pozive u ovom ugovoru. Ispitajte da li se poštuje redosled provjere-efekti-interakcije za svaku od njih i da li postoji zaštita od ponovnog ulaska. Rizične pokažite crtom. Označite ako niste sigurni; Generiranje exploit koda.
3) Karta kontrole pristupa:
Navedite sve vanjske/javne funkcije u ovom ugovoru i navedite "ko može zvati" (svako/vlasnik/uloga) za svaku. Izvršite kritične operacije (povlačenje, štampanje, nadogradnja) i označite one sa slabom kontrolom pristupa. Predstavite to sa stolom.
4) Lažno pozitivna eliminacija:
Razmislite zašto ovo upozorenje o skeniranju možda nije STVARNI rizik (lažno pozitivno): koji kontekst ili stanje koda bi poništili ovo upozorenje? Ali nemojte reći "nema apsolutno nikakvog problema"; Navedite tačke koje treba potvrditi.
Tri mini kofera (u brojevima)
Slučaj 1 — Vozilo + AI udvostručena efikasnost. Jedan tim je vodio Slither na projektu od 12 ugovora i dobio 140 upozorenja. Kada smo imali AI da objasni i odredi prioritete upozorenja, ispostavilo se da je 95 od 140 upozorenja bilo lažno pozitivnih; Tim se fokusirao na 45 pravih kandidata. Vrijeme trijaže je smanjeno sa 2 dana na 5 sati. Lekcija: AI je moćna u humaniziranju proizvodnje vozila.
Slučaj 2 — AI je oteo MEV. U ugovoru DEX (decentralizovana razmena), AI je pronašao standardne obrasce čiste, ali nije uspeo da otkrije ranjivost koja se nalazi ispred; jer je ovo bilo specifično za redosled operacija protokola. Ljudski revizor i simulacija uhvaćeni. Lekcija: Rizici specifični za protokol kao što je MEV/front-running slaba su oblast AI.
Slučaj 3 — Izbjegnuto gubljenje vremena na lažno pozitivan rezultat. Tim je bio pošteđen nepotrebnog ponovnog pisanja kada je AI objasnio da je upozorenje o ponovnom ulasku zapravo lažno pozitivno (funkcija je već bila zaštićena). Ali tim je to ipak potvrdio jednim testom. Lekcija: AI daje prioritete; Potvrda ponovo dolazi sa testiranjem.
Ograničenja skeniranja
Skeniranjem se pronalaze poznati obrasci. Ni alat ni AI ne garantuju da će otkriti novu, jedinstvenu ranjivost ili ranjivost specifičnu za protokol. Stoga je skrining dio revizije; ne sebe. Ideja da je "skeniranje čisto, znači da je sigurno" jedna je od najopasnijih zabluda u ovoj oblasti. Jaružanje pokupi nisko visi plod; Za duboke i jedinstvene rizike neophodna je ljudska ekspertiza, testiranje, fuzzing i formalna revizija.
Oprez: „Čist“ izvještaj alata za skeniranje ili AI nije sigurnosni certifikat. Predstavljanje na taj način – posebno investitorima – je pogrešno i neetično.
Uobičajene greške
- Zamjena pregleda za inspekciju. Skeniranje je jedan sloj, a ne cijeli.
- Korištenje AI bez alata. Statička analiza + AI + ljudski rad zajedno.
- Uklanjanje lažnih pozitivnih rezultata bez potvrde. Svaki ekran je testiran/verifikovan na ljudima.
- Zaobilaženje rizika specifičnih za protokol (MEV) oslanjanjem na AI. Slaba oblast veštačke inteligencije.
- Razmišljajući "čisto skeniranje" = "sigurno". Ne može pronaći nepoznato.
- Generiranje exploit koda. Samo opis odbrambenog rizika je legitiman.
Ukratko
- Skeniranje ranjivosti traži poznate obrasce ranjivosti sa vozilom + AI + čovjekom.
- AI je moćan u objašnjavanju i određivanju prioriteta izlaznih rezultata alata za statičku analizu.
- Pouzdan u jasnim obrascima kao što su ponovni ulazak i kontrola pristupa; Slab u MEV-u i poslovnoj logici.
- Čak i uklanjanje lažnih pozitivnih rezultata zahtijeva potvrdu.
- "Čisto skeniranje" nije sigurnosni certifikat; To nije zamjena za nadzor.
Zadatak aplikacije
Pokrenite alat za statičku analizu na uzorku ugovora (ako je moguće) ili pronađite gotov Slither izvještaj. Primijenite prompt "opis izlaza alata" na AI. Procijenite da li AI: (1) ispravno objašnjava upozorenja, (2) ima smisla u razlikovanju lažnih pozitivnih rezultata i (3) propušta rizik specifičan za protokol. Popunite kolonu „pronađeno vozilo / AI objašnjeno / osoba potvrđeno“ u tabeli.
kontrolna lista
- [ ] Postavio sam otvor kao sloj kontrole.
- [ ] Koristio sam alat za statičku analizu + AI + čovjek zajedno.
- [ ] Tražio sam kategoriju po kategoriji za poznate obrasce.
- [ ] Potvrdom sam eliminisao lažne pozitivne rezultate.
- [ ] Oslanjao sam se na ljude u slabim oblastima kao što je MEV/poslovna logika.
- [ ] Nisam ponudio "čisto čišćenje" kao garanciju.
- [ ] Radio sam samo u svrhe odbrane; Nisam stvarao eksploatacije.