Dobici:
- Sposobnost razumijevanja da umjetna inteligencija proširuje djelokrug revizora, ali ga ne zamjenjuje, te je korisna u skeniranju kategorija i pronalaženju nacrta.
- Biti u stanju prepoznati da je umjetna inteligencija propustila izvornu ranjivost i grešku poslovne logike, te da tečna 'sigurna' izjava nije garancija
- Sposobnost klasifikacije nalaza prema stepenu ozbiljnosti i razumijevanje da konačno odobrenje i profesionalna odgovornost leži na nadležnom revizoru.
Sigurnosna revizija (sistematsko ispitivanje pametnog ugovora na ranjivosti) je najodgovorniji posao Web3. Samo jedan red koji revizor propusti može dovesti do milionskih gubitaka. U ovoj jedinici ćete naučiti kako koristiti AI kao pomoćnika revizije; Naučit ćemo od generiranja tragova do pisanja nacrta nalaza. Ali najkritičnija rečenica je ova: AI ne kontroliše; To je pomoćnik koji izoštrava oko revizora. Konačnu saglasnost daje nadležni revizor koji preuzima profesionalnu odgovornost.
Zašto je revizija kritična za sigurnost
Izvještaj revizije uvjerava projekat i investitore da je „ovaj kodeks pregledan“. Ako je ovo uvjeravanje lažno, posljedice su katastrofalne: iskorištavanje protokola, izgubljeno finansiranje, kolaps projekta. Stoga je korištenje AI u inspekciji najpažljiviji dio ovog modula. AI proširuje opseg revizora (prisjeća više obrazaca, čita brže), ali ne zamjenjuje revizora.
Zašto ne prođe? jer:
- AI ne može vidjeti jedinstvenu/novu ranjivost koja nije u podacima o obuci.
- AI često propušta grešku u poslovnoj logici protokola – da je kod tehnički ispravan, ali ekonomski iskoristiv.
- AI može dati lažnu sigurnost govoreći „sigurno“ tečnim jezikom; Ovo je najopasniji ishod.
Slojevi korištenja AI u kontroli
1. Početno skeniranje i podsjetnik uzorka. AI prolazi kroz poznate obrasce ranjivosti kao što je kontrolna lista: ponovni ulazak, kontrola pristupa, manipulacija orakulom, napredovanje. Ovo osigurava da revizor ne propusti nijednu kategoriju.
2. Objašnjenje koda. Objašnjavanje složene funkcije AI jednostavnim jezikom omogućava revizoru da brzo shvati logiku; ali se opis uvijek poredi sa kodom.
3. Pisanje nacrta nalaza. Kada revizor pronađe ranjivost, AI štedi vrijeme u pisanju nacrta izvještaja (opis, uticaj, predloženo rješenje).
4. Generisanje kontrahipoteze. Pitajte AI "kako se ova funkcija može zloupotrijebiti?" Pitati " nas podsjeća na agresivnu perspektivu.
Pažnja: Samo zato što AI kaže "Nisam pronašao nikakve ranjivosti u ovom kodu" NE znači "ovaj kod je siguran". Dokaz odsustva nije odsustvo dokaza. Činjenica da AI ne može pronaći nešto ne čini nepotrebnim da revizor ispita tu oblast.
Pronalaženje nivoa ozbiljnosti
Nalazi revizije su klasifikovani prema njihovoj ozbiljnosti. AI bi trebao koristiti ovaj okvir kada generira nacrte:
Nivo
Značenje
primjer
kritičan
Gubitak sredstava/blokada direktno moguć
Povlačenje sredstava sa ponovnim ulaskom
visoko
Ozbiljan uticaj u određenim uslovima
Neovlašteno štampanje (kovnica)
srednje
Ograničen uticaj ili teško stanje
Mali gubitak sa Oracle devijacijom
nisko
Manji rizik, kršenje dobre prakse
Nedostaje prijenos događaja
Informacije
Nesigurnost, čitljivost
Nedostatak NatSpec-a
Slaba prompt / Jaka prompt
Slab upit:
Da li je ovaj ugovor siguran?
Ovo pitanje prisiljava AI da donese apsolutnu, neopravdanu presudu poput „da/ne“ – upravo ono što mi ne želimo.
Snažan upit:
Vaša uloga: pomoćnik višeg revizora pametnih ugovora. Skenirajte sljedeći ugovor radi sigurnosti. Prođite kroz sljedeće kategorije jednu po jednu: ponovni ulazak, kontrola pristupa, cjelobrojne operacije, provjera valjanosti unosa, proročanstvo/spoljni podaci, napredno pokretanje, ograničenje plina. Za svaki NALAZ: (1) relevantni red koda, (2) rizik od uzroka, (3) procijenjena ozbiljnost (kritično/visoko/srednje/nisko), (4) prijedlog rješenja. Ovo su HIPOTEZE KOJE SE POTVRĐU; Nemojte davati "sigurnu" presudu. Označite oblasti za koje niste sigurni da jasno kažete "neka revizor potvrdi".
Četiri šablona za kopiranje
1) Pretraživanje po kategorijama:
Skenirajte ovaj ugovor za sljedeće kategorije: ponovni ulazak, kontrola pristupa, prekoračenje cijelog broja, provjera valjanosti unosa, ovisnost o orakulu, pokretanje unaprijed, DoS/gas. Za svaku kategoriju recite "nema/nema rizika/nisam siguran" i povežite svoje opravdanje sa linijom u kodu. Nemojte donositi konačnu presudu.
2) Kontrahipoteza iz perspektive napadača:
Razmišljajte kao napadač: koji su načini za zloupotrebu ove funkcije? Napišite svaki scenario korak po korak i navedite koji su uslovi potrebni. Ovi scenariji su hipoteze koje treba testirati; NEMOJTE generirati stvarni exploit kod, samo opišite rizik.
3) Nacrt izvještaja o nalazima:
Izvijestite o sljedećem potvrđenom nalazu na službenom jeziku revizije: naslov, ozbiljnost, opis, uticaj, kod na koji se utiče, koraci za reprodukciju, predloženo rješenje. Koristite odmjeren i tehnički jezik; preterivanje. Pretpostavimo da je nalaz potvrdio revizor, ne izmišljajte novi nalaz.
4) Popravka verifikacije:
Ispod je ranjivost i ispravka koju je primenio programer. Ispitajte da li popravka zaista zatvara ranjivost; označite da li stvara novu nuspojavu ili ranjivost. Nemojte reći "zatvoreno" sigurno; Završite sa "mora biti potvrđeno testiranjem".
Tri mini kofera (u brojevima)
Slučaj 1 — AI je spriječio skakanje kategorije. Revizor se spremao da se fokusira na ugovor od 400 redova i preskoči kategoriju proročanstva. AI skeniranje kategorija dalo je upozorenje da su "podaci o cijenama iz jednog izvora, otvoreni za manipulaciju". Revizor ga je pregledao i utvrdio da je zaista riječ o srednjem riziku. Lekcija: AI održava disciplinu pokrivenosti.
Slučaj 2 — Lažna „sigurna” garancija. Drugi tim je pitao AI "je li ovo sigurno?" upitao je; "Čini se da nema značajnog problema", rekao je AI. Pregled posade je bio lagan. Tada je nezavisni revizor pronašao grešku u poslovnoj logici: proračun koji je bio tehnički ispravan, ali čiji su poticaji bili iskoristivi. Lekcija: AI promaši grešku poslovne logike; Ne može mu se vjerovati da kaže "sigurno".
Slučaj 3 — Sastavljanjem izvještaja ušteđeno je 3 sata. Revizor je proveo pola dana ručno izvještavajući o 8 nalaza. Nakon što sam provjerene nalaze dao AI i odštampao službeni nacrt, vrijeme je palo za ~3 sata; Revizor je posvetio vrijeme produbljivanju. Pouka: AI je sigurna i efikasna u izvještavanju jer su nalazi već provjereni od strane ljudi.
Ranjivost poslovne logike: slijepa točka umjetne inteligencije
Najskuplje ranjivosti često ne dolaze iz tehničke greške u kodu, već iz iskorištavanja poslovne logike: zaokruživanje eksploatacije nagradnog računa, brza otmica glasačkog kredita, trenutna manipulacija cijenom. To su slučajevi u kojima kod radi "ispravno", ali se protokol može ekonomično prevariti. AI će vjerovatno propustiti takve greške – posebno one specifične za protokol. Stoga je pregled poslovne logike najintenzivnije područje revizora i najmanje se oslanja na AI.
Savjet: Pitajte AI „kako se mogu iskoristiti ekonomski poticaji ovog protokola?“ i koristite scenarije koji se pojavljuju kao početnu tačku — ali zapamtite da bi vi i vaš tim trebali napraviti pravu analizu.
Uobičajene greške
- Pitajte AI "je li sigurno?" Pitati i vjerovati vašem da. Apsolutna prosudba nije potrebna.
- Zaustavljanje pregleda kada AI kaže "Nisam ga mogao pronaći". Odsustvo nije dokaz.
- Delegiranje pregleda poslovne logike na AI. To je njegova najveća slijepa tačka.
- Ne koristite nezavisne alate (Slither itd.). AI sama po sebi nije dovoljna.
- Stavljanje nalaza koje je napravila AI u izvještaj bez provjere. Rizik od halucinacija.
- Pokušaj da se odgovornost za kontrolu stavi na AI. Odgovornost je na stručnjaku.
Ukratko
- Revizija je kritična za sigurnost; AI proširuje opseg revizora, ali ga ne zamjenjuje.
- AI propušta originalnu ranjivost i grešku poslovne logike; Reći "sigurno" nije garancija.
- Nalazi su klasifikovani prema stepenu ozbiljnosti; AI je koristan u generiranju nacrta.
- Kontrahipoteze i skrining kategorije čuvaju disciplinu inkluzije.
- Konačno odobrenje i profesionalna odgovornost uvijek leži na nadležnom revizoru.
Zadatak aplikacije
Pronađite uzorak ugovora koji sadrži poznatu ranjivost (u obrazovne svrhe, primjeri "ranjivih ugovora" dostupni su u otvorenom kodu). Primijenite prompt "skeniranje zasnovano na kategorijama" na AI. Obratite pažnju na to da li je AI: (1) pronašao pravu ranjivost, (2) proizveo izmišljene/lažne nalaze, (3) donio apsolutne prosudbe kao što je „sigurno“. Zatim ga uporedite sa alatom za statičku analizu.
kontrolna lista
- [ ] Pitajte AI "je li sigurno?" Umjesto toga, izvršio sam skeniranje zasnovano na kategorijama.
- [ ] Svaki nalaz sam tretirao kao hipotezu.
- [ ] Ja/tim sam uradio pregled poslovne logike.
- [ ] Unakrsno sam ga potvrdio sa nezavisnim alatom za statičku analizu.
- [ ] Potvrdio sam da AI ne izmišlja nalaze.
- [ ] Nalaz sam klasifikovao prema stepenu ozbiljnosti.
- [ ] Prihvatio sam da konačno odobrenje pripada nadležnom revizoru.