Jedinica 3 / 11

Podrška za reviziju pametnih ugovora: sigurnosni pregled i nacrt nalaza

Dobici:

  • Sposobnost razumijevanja da umjetna inteligencija proširuje djelokrug revizora, ali ga ne zamjenjuje, te je korisna u skeniranju kategorija i izradi nacrta za pronalaženje.
  • Biti u stanju prepoznati da je umjetna inteligencija promašila izvornu ranjivost i pogrešku poslovne logike te da tečna 'sigurna' izjava nije jamstvo
  • Sposobnost klasificiranja nalaza prema njihovoj ozbiljnosti i razumijevanja da konačno odobrenje i profesionalna odgovornost leži na nadležnom revizoru.

Sigurnosna revizija (sustavno ispitivanje pametnog ugovora na ranjivosti) najodgovorniji je posao Web3. Jedan jedini redak koji revizor propusti može rezultirati milijunima dolara gubitaka. U ovoj jedinici naučit ćete kako koristiti AI kao pomoćnika u reviziji; Učit ćemo od generiranja tragova do pisanja nacrta nalaza. Ali najkritičnija rečenica je ova: AI ne kontrolira; To je pomoćnik koji izoštrava revizorovo oko. Konačno odobrenje daje nadležni revizor koji preuzima profesionalnu odgovornost.

Zašto je revizija kritična za sigurnost

Revizijsko izvješće uvjerava projekt i investitore da je "ovaj kodeks pregledan." Ako je to uvjeravanje lažno, posljedice su katastrofalne: iskorišteni protokol, izgubljeno financiranje, propali projekt. Stoga je korištenje umjetne inteligencije u inspekciji najpažljiviji dio ovog modula. AI proširuje opseg auditora (prisjeća se više uzoraka, čita brže), ali ne zamjenjuje auditora.

Zašto ne prolazi? 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.
  • Umjetna inteligencija može dati lažno uvjeravanje govoreći "sigurno" na tečnom jeziku; Ovo je najopasniji ishod.

Slojevi korištenja AI u kontroli

1. Početno skeniranje i podsjetnik na uzorak. AI prolazi kroz poznate obrasce ranjivosti poput popisa za provjeru: ponovni ulazak, kontrola pristupa, manipulacija orakulom, napredovanje. Time se osigurava da revizor ne propusti nijednu kategoriju.

2. Objašnjenje koda. Objašnjavanje složene funkcije AI-u jednostavnim jezikom omogućuje revizoru da brzo shvati logiku; ali opis se uvijek uspoređuje s kodom.

3. Izrada nacrta nalaza. Kada revizor pronađe ranjivost, AI štedi vrijeme u pisanju nacrta izvješća (opis, utjecaj, predloženo rješenje).

4. Generiranje protuhipoteze. Pitajte AI ​​"kako se ova funkcija može zloupotrijebiti?" Pitanje " nas podsjeća na agresivnu perspektivu.

Pažnja: samo zato što AI kaže "Nisam pronašao nikakvu ranjivost u ovom kodu" NE znači da je "ovaj kod siguran". Dokaz odsutnosti nije odsutnost dokaza. Činjenica da umjetna inteligencija ne može pronaći nešto ne čini revizoru nepotrebnim ispitivanje tog područja.

Pronalaženje razina ozbiljnosti

Nalazi revizije klasificirani su prema njihovoj razini ozbiljnosti. AI bi trebao koristiti ovaj okvir prilikom generiranja nacrta:

Razina

Značenje

primjer

kritičan

Gubitak/zaključavanje sredstava izravno je moguće

Povlačenje sredstava s ponovnim pristupom

visoka

Ozbiljan utjecaj u određenim uvjetima

Neovlašteno tiskanje (kovnica)

srednji

Ograničen utjecaj ili teško stanje

Mali gubitak s Oracle odstupanjem

nizak

Manji rizik, kršenje dobre prakse

Nedostaje prijenos događaja

Informacije

Nesigurnost, čitljivost

Nedostatak NatSpec

Slab upit / Jak upit

Slab upit:

Je li ovaj ugovor siguran?

Ovo pitanje prisiljava AI da donese apsolutnu, neopravdanu prosudbu poput "da/ne" - upravo ono što ne želimo.

Snažan upit:

Vaša uloga: pomoćnik starijeg revizora pametnih ugovora. Skenirajte sljedeći ugovor radi sigurnosti. Prođite kroz sljedeće kategorije jednu po jednu: ponovni ulazak, kontrola pristupa, operacije s cijelim brojevima, provjera valjanosti unosa, proročki/vanjski podaci, početno pokretanje, ograničenje plina. Za svaki NALAZ: (1) relevantni redak koda, (2) uzrok rizika, (3) procijenjena ozbiljnost (kritična/visoka/srednja/niska), (4) prijedlog rješenja. Ovo su HIPOTEZE KOJE TREBA POTVRDITI; Nemojte davati "sigurnu" presudu. Označite područja u koja niste sigurni jasno govoreći "neka revizor potvrdi".

Četiri predloška za kopiranje

1) Pregledavanje na temelju kategorije:

Skenirajte ovaj ugovor u potrazi za sljedećim kategorijama: ponovni ulazak, kontrola pristupa, prekoračenje cijelog broja, provjera valjanosti unosa, ovisnost o Oracleu, pokretanje naprijed, DoS/gas. Za svaku kategoriju recite "ne postoji/nema rizika/nisam siguran" i povežite svoje obrazloženje s retkom u kodu. Nemojte donositi konačan sud.

2) Protuhipoteza iz perspektive napadača:

Razmišljajte kao napadač: koji su načini zlouporabe ove funkcije? Napišite svaki scenarij korak po korak i navedite koji su uvjeti potrebni. Ovi scenariji su hipoteze koje treba testirati; NEMOJTE generirati stvarni kod iskorištavanja, samo opišite rizik.

3) Nacrt izvješća o nalazima:

Izvijestite o sljedećem verificiranom nalazu na službenom revizijskom jeziku: naslov, ozbiljnost, opis, učinak, zahvaćeni kod, koraci za reprodukciju, predloženo rješenje. Koristite odmjeren i tehnički jezik; pretjerivanje. Pretpostavimo da je nalaz potvrdio revizor, nemojte izmišljati novi nalaz.

4) Potvrda popravka:

Ispod je ranjivost i popravak koji je primijenio programer. Ispitajte da li popravak zapravo zatvara ranjivost; označiti stvara li novu nuspojavu ili ranjivost. Nemojte sigurno reći "zatvoreno"; Završite s "mora se potvrditi testiranjem".

Tri mini kofera (u broju)

Slučaj 1 — AI je spriječio skakanje po kategorijama. Revizor se spremao usredotočiti na ugovor od 400 redaka i preskočiti kategoriju proročanstva. AI-jevo skeniranje kategorija dalo je upozorenje da su "podaci o cijenama iz jednog izvora, otvoreni za manipulaciju". Revizor ga je pregledao i utvrdio da se doista radi o srednjem riziku. Lekcija: AI održava disciplinu pokrivenosti.

Slučaj 2 — lažno “sigurno” osiguranje. Drugi tim je pitao AI "je li ovo sigurno?" upitao je; "Čini se da nema značajnog problema", rekao je AI. Pregled posade bio je lagan. Zatim je neovisni revizor pronašao grešku u poslovnoj logici: izračun koji je bio tehnički točan, ali čiji su se poticaji mogli iskoristiti. Lekcija: AI promašuje pogrešku poslovne logike; Ne može mu se vjerovati da će reći "na sigurnom".

Slučaj 3 — Izrada izvješća uštedjela je 3 sata. Revizor je proveo pola dana ručno izvještavajući o 8 nalaza. Nakon što sam dao provjerene nalaze AI-u i ispisao službeni nacrt, vrijeme je palo za ~3 sata; Revizor je posvetio vrijeme produbljivanju. Lekcija: AI je sigurna i učinkovita u izvješćivanju jer su nalazi već ljudski potvrđeni.

Ranjivost poslovne logike: AI-jeva slijepa točka

Najskuplje ranjivosti često ne dolaze iz tehničke pogreške u kodu, već iz iskoristivosti poslovne logike: zaokruživanje iskorištavanja nagradnog računa, brza otmica glasanja zajma, trenutna manipulacija cijenom. To su slučajevi u kojima kod radi "ispravno", ali se protokol može ekonomično prevariti. AI će vjerojatno propustiti takve pogreške—posebno one specifične za protokol. Stoga je pregled poslovne logike područje revizora koje najviše zaokuplja ljude i najmanje se oslanja na AI.

Savjet: Pitajte AI "kako se mogu iskoristiti ekonomski poticaji ovog protokola?" i upotrijebite scenarije koji se pojave kao početnu točku — ali zapamtite da biste vi i vaš tim trebali napraviti pravu analizu.

Uobičajene greške

  • Pitajte AI "je li sigurno?" Traženje i povjerenje u vaš da. Nije potrebna apsolutna prosudba.
  • Zaustavljanje pregleda kada AI ​​kaže "Nisam mogao pronaći". Odsutnost nije dokaz.
  • Delegiranje pregleda poslovne logike AI-ju. To mu je najveća mrtva točka.
  • Ne koristite neovisne alate (Slither itd.). AI sama po sebi nije dovoljna.
  • Stavljanje nalaza koje je napravila AI u izvješće bez provjere. Rizik od halucinacija.
  • Pokušaj prebaciti odgovornost za kontrolu na AI. Odgovornost leži na stručnjaku.

Ukratko

  • Revizija je kritična za sigurnost; AI proširuje revizorov opseg, ali ga ne zamjenjuje.
  • AI propušta izvornu ranjivost i pogrešku poslovne logike; Reći "sigurno" nije jamstvo.
  • Nalazi se klasificiraju prema stupnju težine; AI je korisna u stvaranju nacrta.
  • Protuhipoteza i provjera kategorija čuvaju disciplinu uključivanja.
  • Konačno odobrenje i profesionalna odgovornost uvijek leži na nadležnom revizoru.

Zadatak aplikacije

Pronađite primjer ugovora koji sadrži poznatu ranjivost (u obrazovne svrhe, primjeri "ranjivih ugovora" dostupni su u otvorenom kodu). Primijenite upit "skeniranje na temelju kategorije" na AI. Zabilježite je li AI: (1) pronašao stvarnu ranjivost, (2) proizveo izmišljena/lažna otkrića, (3) donio apsolutne prosudbe poput "sigurno". Zatim ga usporedite s alatom za statičku analizu.

popis za provjeru

  • [ ] Pitajte AI "je li sigurno?" Umjesto toga, imao sam skeniranje na temelju kategorije.
  • [ ] Svaki sam nalaz tretirao kao hipotezu.
  • [ ] Napravio sam pregled poslovne logike sam/tim.
  • [ ] Provjerio sam to pomoću neovisnog alata za statičku analizu.
  • [ ] Potvrdio sam da AI ne izmišlja nalaze.
  • [ ] Nalaze sam klasificirao prema stupnju ozbiljnosti.
  • [ ] Prihvatio sam da konačno odobrenje ima nadležni revizor.