Dobici:
- Sposobnost prepoznavanja uobičajenih obrazaca ranjivosti kao što su ponovni ulazak, kontrola pristupa, manipulacija oracleom i napredno pokretanje te njihovo skeniranje alatom za statičku analizu + umjetna inteligencija + čovjek
- Sposobnost razlikovanja između prednosti umjetne inteligencije u objašnjavanju rezultata alata i određivanja prioriteta lažno pozitivnih rezultata i slabosti u MEV-u i poslovnoj logici
- Shvatite da 'čisto skeniranje' nije sigurnosni certifikat, da je skeniranje samo jedan sloj kontrole
Vidjeli smo holističku disciplinu revizije u prethodnoj jedinici. U ovoj se jedinici usredotočujemo na više tehničku temu: skeniranje ranjivosti — sustavno traženje poznatih uzoraka ranjivosti u kodu. Ovdje ćemo koristiti AI, zajedno s alatima za statičku analizu, kao pomoćnika koji skenira i opisuje poznate obrasce ranjivosti. Cilj: dublje 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 uzorke. Dinamička/simbolička analiza (pokretanje koda s različitim unosima 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 skupinu.
AI ne zamjenjuje ove alate, on ih nadopunjuje: kada vozilo izda upozorenje, AI objašnjava upozorenje jednostavnim jezikom; AI može podsjetiti kada alat propusti uzorak; Ali sama umjetna inteligencija ne može jamčiti koliko će skenirati. Pravi tijek rada: alat + AI + čovjek.
Savjet: dajte AI-u izlaz alata za statičku analizu (npr. Slither report) i pitajte "objasnite svako upozorenje jednostavnim jezikom, koji su stvarni rizici, a koji bi mogli biti lažno pozitivni?" pitati. Umjetna inteligencija je neprocjenjiva u stvaranju razumljivih rezultata sirovih alata i postavljanja prioriteta za ljude.
Najčešći obrasci ranjivosti
1. Ponovni ulaz. Ako funkcija pozove vanjski ugovor bez ažuriranja svog stanja, pozvani ugovor se može vratiti, ponovno pokrenuti istu funkciju i povući sredstva više puta. Rješenje: redoslijed provjere-učinci-interakcije i zaštita od ponovnog ulaska.
2. Nedostatak kontrole pristupa. Kritična funkcija (povlačenje, povlačenje, nadogradnja) slučajno je javno objavljena. To je jedna od najčešćih i najskupljih grešaka.
3. Oracle manipulacija. Slijepo oslanjanje ugovora na vanjski izvor cijene (proročanstvo). Napadač trenutno manipulira cijenom i vara protokol. Rješenje: vremenski ponderirana prosječna cijena (TWAP), više izvora.
4. Integer overflow/underfall. Kada broj premaši najveću dopuštenu vrijednost i vraća se na početak. Moderni Solidity automatski hvata većinu toga, ali rizik ostaje u kodu niske razine (sklapanje).
5. Prednje trčanje. Transakcije se pojavljuju u javnom bazenu (mempool) prije nego što se potvrde; Napadač može vidjeti vašu transakciju i ubaciti svoju transakciju ispred nje. MEV (Maksimalna ekstraaktivna vrijednost — vrijednost izvučena iz slijeda transakcije) opći je naziv ovog predmeta.
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 zlouporaba ovlasti u nadogradljivim ugovorima.
ranjivost
AI skenira povjerenje
zašto
ponovni ulaz
visoka
Dobro poznat, jasan uzorak
kontrola pristupa
visoka
Kalup se može skenirati
Cjelobrojne operacije
visoka
standardna kontrola
Oracle manipulacija
srednji
Zahtijeva kontekst
Vožnja sprijeda/MEV
Srednje-nisko
specifični za protokol
pogreška poslovne logike
nizak
Autentično, kontekstualno
Slab upit / Jak upit
Slab upit:
Postoji li rupa u ovom kodu?
Snažan upit:
Vaša uloga: pomoćnik sigurnosne provjere. Skenirajte ugovor u nastavku za sljedeće poznate obrasce i "rizično/ne/nesiguran" za svaki: ponovni ulazak, kontrola pristupa, operacije s cijelim brojevima, ovisnost o orakulu, napredovanje, DoS, sigurnost nadogradnje. Povežite svako određivanje s relevantnim retkom 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žno pozitivnih rezultata.
Četiri predloška za kopiranje
1) Opis rezultata alata:
Ispod je izvješće alata za statičku analizu (Slither). Objasnite svako upozorenje jednostavnim jezikom: što to znači, radi li se o stvarnom riziku ili mogućem lažno pozitivnom, što bi trebao biti njegov prioritet? Nemojte donijeti čvrstu odluku; Odredite prioritete za potvrdu revizora.
2) Provjera usmjerena na ponovni ulazak:
Pronađite sve funkcije koje upućuju vanjske pozive u ovom ugovoru. Ispitajte slijedi li se redoslijed provjere-učinci-interakcije za svaku od njih i postoji li zaštita od ponovnog ulaska. Rizične pokažite linijom. Označite ako niste sigurni; Generiranje exploit koda.
3) Mapa kontrole pristupa:
Navedite sve vanjske/javne funkcije u ovom ugovoru i navedite "tko može zvati" (svatko/vlasnik/uloga) za svaku. Izvršite kritične operacije (povlačenje, ispis, nadogradnja) i označite one sa slabom kontrolom pristupa. Predstavite ga tablicom.
4) Lažno pozitivna eliminacija:
Razmislite zašto ovo upozorenje skeniranja možda nije STVARNI rizik (lažno pozitivno): koji bi kontekst ili uvjet koda poništio ovo upozorenje? Ali nemojte reći "nema apsolutno nikakvog problema"; Navedite točke koje trebaju potvrdu.
Tri mini kofera (u broju)
Slučaj 1 — Vozilo + AI udvostručena učinkovitost. Jedan tim vodio je Slither na projektu od 12 ugovora i primio je 140 upozorenja. Nakon što nam je AI objasnio i odredio prioritete upozorenja, pokazalo se da je 95 od 140 upozorenja bilo lažno pozitivno; Tim se usredotočio na 45 stvarnih kandidata. Vrijeme trijaže smanjeno je s 2 dana na 5 sati. Lekcija: AI je moćan u humaniziranju izlaza vozila.
Slučaj 2 — AI je oteo MEV. U DEX (decentralizirana razmjena) ugovoru, AI je otkrio da su standardni obrasci čisti, ali nije uspio otkriti početnu ranjivost; jer je to bilo specifično za redoslijed operacija protokola. Ljudski revizor i simulacija snimljeni. Lekcija: Rizici specifični za protokol kao što je MEV/front-running slabo su područje umjetne inteligencije.
Slučaj 3 — Izbjegnuto gubljenje vremena na lažno pozitivno. Tim je bio pošteđen nepotrebnog prepisivanja 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 opet dolazi s testiranjem.
Ograničenja skeniranja
Skeniranje pronalazi poznate uzorke. Nije zajamčeno da će ni alat ni AI otkriti novu, jedinstvenu ranjivost ili ranjivost specifičnu za protokol. Stoga je screening dio revizije; ne sebe. Ideja da je "sken čist, znači da je siguran" jedna je od najopasnijih zabluda u ovom području. Jaružanjem se podižu plodovi koji nisko vise; Za duboke i jedinstvene rizike neophodna je ljudska stručnost, testiranje, fuzzing i formalna revizija.
Oprez: "Čisto" izvješće alata za skeniranje ili umjetne inteligencije nije sigurnosni certifikat. Predstavljanje na taj način - posebno ulagačima - je pogrešno i neetično.
Uobičajene greške
- Zamjena pregleda za pregled. Skeniranje je jedan sloj, a ne cjelina.
- Korištenje AI bez alata. Statička analiza + AI + ljudski rad zajedno.
- Uklanjanje lažno pozitivnih rezultata bez potvrde. Svaki ekran je testiran/provjeren od strane ljudi.
- Zaobilaženje rizika specifičnih za protokol (MEV) oslanjanjem na AI. AI-ovo slabo područje.
- Razmišljanje "čisto skeniranje" = "sigurno". Ne može pronaći nepoznato.
- Generiranje exploit koda. Samo obrambeni opis rizika je legitiman.
Ukratko
- Skeniranje ranjivosti traži poznate obrasce ranjivosti s vozilom + umjetnom inteligencijom + čovjekom.
- AI je moćan u objašnjavanju i određivanju prioriteta izlaza 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žno pozitivnih rezultata zahtijeva potvrdu.
- "Čisto skeniranje" nije sigurnosni certifikat; Nije zamjena za nadzor.
Zadatak aplikacije
Pokrenite alat za statičku analizu na uzorku ugovora (ako je moguće) ili pronađite gotovo Slither izvješće. Primijenite upit "opis izlaza alata" na AI. Procijenite ima li AI: (1) ispravno objašnjenje upozorenja, (2) ima smisla razlikovati lažno pozitivne rezultate i (3) propušta li rizik specifičan za protokol. Ispunite stupce "pronađeno vozilo / objašnjeno umjetnom inteligencijom / potvrđeno od strane ljudi" u tablici.
popis za provjeru
- [ ] Postavio sam šrafuru kao sloj kontrole.
- [ ] Koristio sam alat za statičku analizu + AI + čovjeka zajedno.
- [ ] Tražio sam poznate uzorke kategoriju po kategoriju.
- [ ] Eliminirao sam lažne pozitivne rezultate s potvrdom.
- [ ] Oslanjao sam se na ljude u slabim područjima kao što je MEV/poslovna logika.
- [ ] Nisam ponudio "čišćenje" kao jamstvo.
- [ ] Radio sam samo u obrambene svrhe; Nisam stvarao podvige.