Dobički:
- Sposobnost razumevanja, da umetna inteligenca širi obseg revizorja, vendar ga ne nadomešča, in je uporabna pri skeniranju kategorij in oblikovanju iskanja.
- Biti sposoben prepoznati, da je umetna inteligenca zgrešila prvotno ranljivost in napako poslovne logike ter da tekoča 'varna' izjava ni zagotovilo
- Sposobnost razvrščanja ugotovitev glede na njihovo stopnjo resnosti in razumevanje, da je končna odobritev in strokovna odgovornost na pristojnem revizorju.
Revizija varnosti (sistematsko preverjanje pametne pogodbe glede ranljivosti) je najbolj odgovorno delo Web3. Ena sama vrstica, ki jo revizor zgreši, lahko povzroči milijone dolarjev izgube. V tej enoti se boste naučili uporabljati AI kot pomočnika pri reviziji; Učili se bomo od ustvarjanja namigov do pisanja orisa ugotovitev. Toda najbolj kritičen stavek je ta: AI ne nadzoruje; Je pomočnik, ki revizorju izostri oko. Končno odobritev ima pristojni revizor, ki prevzame strokovno odgovornost.
Zakaj je revizija kritična za varnost
Revizijsko poročilo pomirja projekt in vlagatelje, da je bila "ta koda pregledana." Če je to zagotovilo napačno, so posledice katastrofalne: izkoriščen protokol, izgubljeno financiranje, propad projekta. Zato je uporaba AI pri inšpekciji najprevidnejši del tega modula. Umetna inteligenca razširi obseg revizorja (prikliče več vzorcev, bere hitreje), vendar ne nadomesti revizorja.
Zakaj ne gre? ker:
- AI ne more videti edinstvene/nove ranljivosti, ki je ni v podatkih o usposabljanju.
- AI pogosto spregleda napako v poslovni logiki protokola – da je koda tehnično pravilna, a ekonomsko izkoriščljiva.
- Umetna inteligenca lahko daje lažno zagotovilo, tako da v tekočem jeziku reče "varno"; To je najnevarnejši izid.
Plasti uporabe AI pri nadzoru
1. Začetno skeniranje in opomnik za vzorec. Umetna inteligenca gre skozi znane vzorce ranljivosti kot kontrolni seznam: ponovni vstop, nadzor dostopa, manipulacija oraklja, vodenje v prvi vrsti. To zagotavlja, da revizor ne zgreši nobene kategorije.
2. Razlaga kode. Razlaga kompleksne funkcije AI v preprostem jeziku omogoča revizorju, da hitro dojame logiko; vendar se opis vedno primerja s kodo.
3. Pisanje osnutka ugotovitev. Ko revizor najde ranljivost, AI prihrani čas pri pisanju osnutka poročila (opis, vpliv, predlagana rešitev).
4. Ustvarjanje protihipoteze. Vprašajte AI "kako je mogoče to funkcijo zlorabiti?" Spraševanje nas spominja na agresivno perspektivo.
Pozor: samo zato, ker AI pravi "Nisem našel nobene ranljivosti v tej kodi", NE pomeni, da je "ta koda varna". Dokaz o odsotnosti ni odsotnost dokazov. Dejstvo, da umetna inteligenca nečesa ne more najti, ne pomeni, da revizorju ni treba pregledati tega področja.
Iskanje stopenj resnosti
Revizijske ugotovitve so razvrščene glede na stopnjo resnosti. AI bi moral pri ustvarjanju osnutkov uporabiti ta okvir:
Raven
Pomen
primer
kritičen
Možna neposredna izguba/zaklepanje sredstev
Dvig sredstev s ponovnim vstopom
visoka
Resen vpliv v določenih pogojih
Nepooblaščeno tiskanje (kovnica)
srednje
Omejen vpliv ali težko stanje
Majhna izguba z odstopanjem Oracle
nizka
Manjše tveganje, kršitev dobre prakse
Manjkajoča oddaja dogodka
Informacije
Nevarnost, berljivost
Pomanjkanje NatSpec
Šibek poziv/močan poziv
Šibek poziv:
Je ta pogodba varna?
To vprašanje prisili AI, da naredi absolutno, neupravičeno presojo, kot je "da/ne" - točno tisto, česar ne želimo.
Močan poziv:
Vaša vloga: pomočnik višjega revizorja pametnih pogodb. Varnostno preglejte naslednjo pogodbo. Preglejte naslednje kategorije eno za drugo: ponovni vstop, nadzor dostopa, celoštevilske operacije, preverjanje vnosa, Oracle/zunanji podatki, napredovanje, omejitev plina. Za vsako UGOTOVITEV: (1) ustrezna vrstica kode, (2) tveganje vzroka, (3) ocenjena resnost (kritična/visoka/srednja/nizka), (4) predlog rešitve. To so HIPOTEZE, KI JIH JE TREBA POTRDITI; Ne dajajte "varne" sodbe. Označite področja, za katera niste prepričani, in jasno povejte "revizor naj potrdi".
Štiri predloge za kopiranje
1) Brskanje po kategorijah:
Preglejte to pogodbo za naslednje kategorije: ponovni vstop, nadzor dostopa, prelivanje celih števil, preverjanje veljavnosti vnosa, odvisnost od Oracle, vodenje v prvi vrsti, DoS/gas. Za vsako kategorijo recite "ni/ni tveganja/nisem prepričan" in svojo utemeljitev povežite z vrstico v kodi. Ne dajajte končne sodbe.
2) Protihipoteza z vidika napadalca:
Razmišljajte kot napadalec: kakšni so načini za zlorabo te funkcije? Napišite vsak scenarij korak za korakom in navedite, kateri pogoji so potrebni. Ti scenariji so hipoteze, ki jih je treba preizkusiti; NE ustvarite dejanske kode izkoriščanja, samo opišite tveganje.
3) Osnutek poročila o ugotovitvah:
Poročajte o naslednjih preverjenih ugotovitvah v formalnem revizijskem jeziku: naslov, resnost, opis, vpliv, prizadeta koda, koraki za reprodukcijo, predlagana rešitev. Uporabljajte odmeren in tehnični jezik; pretiravanje. Predpostavimo, da je ugotovitev potrdil revizor, ne ustvarjajte nove ugotovitve.
4) Preverjanje popravka:
Spodaj je prikazana ranljivost in popravek, ki ga je uporabil razvijalec. Preverite, ali popravek dejansko odpravlja ranljivost; označite, ali ustvarja nov stranski učinek ali ranljivost. Ne recite zagotovo "zaprto"; Končajte z "mora biti potrjeno s testiranjem".
Trije mini kovčki (v številkah)
Primer 1 – umetna inteligenca je preprečila skok po kategorijah. Revizor se je nameraval osredotočiti na pogodbo s 400 vrsticami in preskočiti kategorijo oraklja. Pregled kategorij, ki ga je opravil AI, je dal opozorilo, da so "podatki o cenah iz enega vira, odprti za manipulacijo". Revizor ga je pregledal in ugotovil, da gre res za srednje tveganje. Lekcija: AI ohranja disciplino pokritosti.
Primer 2 – Lažno zagotovilo o "varnosti". Druga ekipa je AI vprašala, ali je to varno? vprašal je; "Zdi se, da ni pomembne težave," je dejal AI. Pregled posadke je bil blag. Potem je neodvisni revizor našel napako v poslovni logiki: izračun, ki je bil tehnično pravilen, vendar je bilo njegove spodbude mogoče izkoristiti. Lekcija: AI zgreši napako poslovne logike; Ne gre mu zaupati, da bo rekel "varno".
Primer 3 – Priprava poročila je prihranila 3 ure. Revizor je porabil polovico dneva za ročno poročanje o 8 ugotovitvah. Ko sem preverjene ugotovitve dal AI in natisnil uradni osnutek, se je čas zmanjšal za ~3 ure; Revizor je posvetil čas poglabljanju. Lekcija: umetna inteligenca je varna in učinkovita pri poročanju, ker so bile ugotovitve že preverjene s strani ljudi.
Ranljivost poslovne logike: slepa pega AI
Najdražje ranljivosti pogosto ne izvirajo iz tehnične napake v kodi, ampak iz izkoriščenosti poslovne logike: zaokroževanje izkoriščanja nagradnega računa, hitra ugrabitev glasovanja, takojšnja manipulacija cene. To so primeri, ko koda deluje "pravilno", vendar je protokol mogoče ekonomsko pretentati. Umetna inteligenca bo verjetno spregledala takšne napake – zlasti tiste, ki so specifične za protokol. Zato je pregled poslovne logike najbolj človeško intenzivno področje revizorja in najmanj odvisno od AI.
Namig: vprašajte umetno inteligenco "kako je mogoče izkoristiti ekonomske spodbude tega protokola?" in uporabite scenarije, ki se pojavijo kot izhodišče – vendar ne pozabite, da bi morali vi in vaša ekipa narediti pravo analizo.
Pogoste napake
- Vprašajte AI "je varno?" Sprašujem in zaupam svojemu da. Absolutna presoja ni potrebna.
- Ustavitev pregleda, ko umetna inteligenca reče "Nisem ga našel". Odsotnost ni dokaz.
- Prenos pregleda poslovne logike na AI. To je njegova največja slepa pega.
- Brez uporabe neodvisnih orodij (Slither itd.). Samo umetna inteligenca ni dovolj.
- Ugotovitev, ki jo je ustvaril AI v poročilo, ne da bi jo preverili. Nevarnost halucinacij.
- Odgovornost za nadzor poskušamo prenesti na AI. Odgovornost nosi strokovnjak.
Če povzamem
- Revizija je kritična za varnost; Umetna inteligenca razširi revizorjev obseg, vendar ga ne nadomesti.
- AI zgreši prvotno ranljivost in napako poslovne logike; Reči "varno" ni zagotovilo.
- Ugotovitve so razvrščene glede na stopnjo resnosti; AI je uporaben pri ustvarjanju osnutkov.
- Nasprotna hipoteza in preverjanje kategorij ohranjata disciplino vključevanja.
- Končno odobritev in strokovno odgovornost vedno nosi pristojni revizor.
Aplikacijska naloga
Poiščite vzorec pogodbe, ki vsebuje znano ranljivost (za izobraževalne namene so primeri "ranljivih pogodb" na voljo v odprti kodi). Za AI uporabite poziv "skeniranje na podlagi kategorije". Upoštevajte, ali je umetna inteligenca: (1) odkrila resnično ranljivost, (2) ustvarila izmišljene/napačne ugotovitve, (3) sprejela absolutne presoje, kot je »varno«. Nato ga primerjajte z orodjem za statično analizo.
kontrolni seznam
- [ ] Vprašajte AI "ali je varno?" Namesto tega sem imel skeniranje na podlagi kategorij.
- [ ] Vsako ugotovitev sem obravnaval kot hipotezo.
- [ ] Pregled poslovne logike sem opravil sam/ekipa.
- [ ] Navzkrižno sem ga preveril z neodvisnim orodjem za statično analizo.
- [ ] Potrdil sem, da AI ne ponareja ugotovitev.
- [ ] Ugotovitve sem razvrstil glede na stopnjo resnosti.
- [ ] Strinjam se, da ima končno odobritev pristojni revizor.