Dobički:
- Sposobnost prepoznavanja običajnih vzorcev ranljivosti, kot so ponovni vstop, nadzor dostopa, manipulacija orakla in napredovanje, ter njihovo skeniranje z orodjem za statično analizo + umetna inteligenca + človek
- Sposobnost razlikovanja med prednostmi umetne inteligence pri razlagi rezultatov orodja in dajanju prednosti lažnim pozitivnim rezultatom in slabostim v MEV in poslovni logiki
- Razumite, da 'čisto skeniranje' ni varnostno potrdilo, da je skeniranje le ena plast nadzora
Celostno disciplino revizije smo videli v prejšnji enoti. V tej enoti se osredotočamo na bolj tehnično temo: skeniranje ranljivosti — sistematično iskanje znanih vzorcev ranljivosti v kodi. Tukaj bomo uporabili AI skupaj z orodji za statično analizo kot pomočnika, ki skenira in opisuje znane vzorce ranljivosti. Cilj: poglobljeno spoznati najpogostejše ranljivosti in ločiti, kje je AI zanesljiv in kje neustrezen pri njihovem skeniranju.
Statično in dinamično skeniranje
Skeniranje je dveh vrst. Statična analiza — preučevanje kode, ne da bi jo zagnali: Orodja, kot sta Slither in Mythril, skenirajo pogodbeno kodo in označijo znane vzorce. Dinamična/simbolična analiza (izvajanje kode z različnimi vhodi ali njeno matematično raziskovanje): fuzzing (bombardiranje z naključnim vnosom) in simbolna izvedba (raziskovanje vseh možnih poti) spadata v to skupino.
Umetna inteligenca teh orodij ne nadomešča, ampak jih dopolnjuje: ko vozilo izda opozorilo, umetna inteligenca opozorilo razloži v preprostem jeziku; AI lahko opomni, ko orodje zgreši vzorec; Toda AI sama ne more zagotoviti, koliko skenira. Pravi potek dela: orodje + AI + človek.
Namig: Umetni inteligenci dajte izhod orodja za statično analizo (npr. poročilo Slither) in vprašajte »razložite vsako opozorilo v preprostem jeziku, katera so resnična tveganja in katera bi lahko bila lažno pozitivna?« vprašaj. Umetna inteligenca je neprecenljiva pri ustvarjanju neobdelanih rezultatov orodij, ki so razumljivi in ljudem dajo prednost.
Najpogostejši vzorci ranljivosti
1. Ponovni vstop. Če funkcija pokliče zunanjo pogodbo, ne da bi posodobila svoje stanje, se lahko klicana pogodba vrne nazaj, znova sproži isto funkcijo in večkrat dvigne sklad. Rešitev: vrstni red preverjanj-učinkov-interakcij in zaščita pred ponovnim vstopom.
2. Pomanjkanje nadzora dostopa. Kritična funkcija (umik, umik, nadgradnja) je pomotoma javno objavljena. Je ena najpogostejših in dragih napak.
3. Oracle manipulacija. Slepo zanašanje pogodbe na zunanji vir cen (prerok). Napadalec v trenutku manipulira s ceno in zavede protokol. Rešitev: časovno tehtana povprečna cena (TWAP), več virov.
4. Celoštevilsko prelivanje/podpadanje. Ko število preseže največjo dovoljeno vrednost in se vrne na začetek. Modern Solidity samodejno ujame večino tega, vendar tveganje ostaja v kodi nizke ravni (sestavljanje).
5. Vožnja spredaj. Transakcije se prikažejo v javnem bazenu (mempool), preden so potrjene; Napadalec lahko vidi vašo transakcijo in prednjo vstavi svojo transakcijo. MEV (Maksimalna izvlečna vrednost — vrednost, pridobljena iz zaporedja transakcij) je splošno ime tega predmeta.
6. Zavrnitev storitve (DoS). Zanka postane predraga in naredi funkcijo neuporabno ali pa postane odvisnost od naslova zaklenjena.
7. Tveganja nadgradnje. Kolizija pri shranjevanju in zloraba pooblastil v nadgradljivih pogodbah.
ranljivost
AI skeniranje zaupanja
zakaj
ponovni vstop
visoka
Dobro znan, jasen vzorec
nadzor dostopa
visoka
Kalup je mogoče skenirati
Celoštevilske operacije
visoka
standardni nadzor
Oracle manipulacija
srednje
Zahteva kontekst
Vožnja spredaj/MEV
Srednje nizko
specifični za protokol
napaka poslovne logike
nizka
Pristno, kontekstualno
Šibek poziv/močan poziv
Šibek poziv:
Ali je v tej kodi vrzel?
Močan poziv:
Vaša vloga: pomočnik pri varnostnem pregledu. Preglejte spodnjo pogodbo in poiščite naslednje znane vzorce in "tvegano/ne/negotovo" za vsakega: ponovni vstop, nadzor dostopa, celoštevilske operacije, odvisnost od Oracle, vodenje v prvi vrsti, DoS, varnost nadgradnje. Vsako ugotovitev povežite z ustrezno vrstico in pojasnite, zakaj obstaja tveganje. To so hipoteze, ki BODO PREVERJENE z orodjem za statično analizo in revizorjem. Upoštevajte, da lahko pride do lažno pozitivnih rezultatov.
Štiri predloge za kopiranje
1) Opis izhoda orodja:
Spodaj je poročilo orodja za statično analizo (Slither). Vsako opozorilo razložite v preprostem jeziku: kaj pomeni, ali gre za resnično tveganje ali morebitno lažno pozitivno, kaj naj ima prednost? Ne sprejmite trdne odločitve; Dajte prednost potrditvi revizorja.
2) Pregled, osredotočen na ponovni vstop:
V tej pogodbi poiščite vse funkcije, ki opravljajo zunanje klice. Preverite, ali se za vsakega od njih upošteva vrstni red preverjanja-učinkov-interakcij in ali obstaja zaščita pred ponovnim vstopom. Tvegane pokažite s črto. Označite, če niste prepričani; Ustvarjanje kode izkoriščanja.
3) Zemljevid nadzora dostopa:
Navedite vse zunanje/javne funkcije v tej pogodbi in za vsako navedite "kdo lahko kliče" (vsi/lastnik/vloga). Izvedite kritične operacije (odvzem, tiskanje, nadgradnja) in označite tiste s šibkim nadzorom dostopa. Predstavite ga s tabelo.
4) Lažno pozitivna eliminacija:
Razmislite, zakaj to opozorilo skeniranja morda ni RESNIČNO tveganje (lažno pozitivno): kakšen kontekst ali pogoj kode bi razveljavil to opozorilo? Vendar ne recite, da "ni nobenega problema"; Navedite točke, ki potrebujejo potrditev.
Trije mini kovčki (v številkah)
Primer 1 – Vozilo + AI podvojena učinkovitost. Ena ekipa je vodila Slither na projektu 12 pogodb in prejela 140 opozoril. Ko smo AI razložili opozorila in jih razvrstili po prioritetah, se je izkazalo, da je bilo 95 od 140 opozoril lažno pozitivnih; Ekipa se je osredotočila na 45 pravih kandidatov. Čas triaže se je zmanjšal z 2 dni na 5 ur. Lekcija: umetna inteligenca je zmogljiva pri humanizaciji rezultatov vozil.
Primer 2 – umetna inteligenca je ugrabila MEV. V pogodbi DEX (decentralizirana izmenjava) je umetna inteligenca ugotovila, da so standardni vzorci čisti, vendar ni zaznala prve ranljivosti; ker je bilo to specifično za vrstni red operacij protokola. Človeški revizor in simulacija sta zajeta. Lekcija: Tveganja, specifična za protokol, kot je MEV/front-running, so šibko področje umetne inteligence.
3. primer – izogibanje izgubljanju časa z lažno pozitivnim rezultatom. Ekipi je bilo prihranjeno nepotrebno prepisovanje, ko je AI pojasnil, da je opozorilo o ponovnem vstopu dejansko lažno pozitivno (funkcija je bila že varovana). Toda ekipa je to vseeno potrdila z enim samim testom. Lekcija: AI daje prednost; Potrditev spet pride s testiranjem.
Omejitve skeniranja
Skeniranje najde znane vzorce. Niti orodje niti umetna inteligenca nista zajamčena, da bosta zaznala novo, edinstveno ranljivost ali ranljivost, specifično za protokol. Zato je pregledovanje del revizije; ne sam. Zamisel, da je »skeniranje čisto, torej varno«, je ena najnevarnejših zmot na tem področju. Poglabljanje pobere nizko viseče sadje; Za globoka in edinstvena tveganja so bistvenega pomena človeško strokovno znanje, testiranje, fuzzing in formalna revizija.
Pozor: »Čisto« poročilo orodja za skeniranje ali umetne inteligence ni varnostno potrdilo. Tako predstavljanje – zlasti vlagateljem – je zavajajoče in neetično.
Pogoste napake
- Zamenjava pregleda za pregled. Skeniranje je ena plast, ne celota.
- Uporaba AI brez orodij. Statična analiza + AI + človeško delo skupaj.
- Odprava lažnih pozitivnih rezultatov brez potrditve. Vsak zaslon je testiran/človeško preverjen.
- Obhod tveganj, specifičnih za protokol (MEV) z zanašanjem na AI. Šibko področje AI.
- Razmišljanje "čisto skeniranje" = "varno". Ne zna najti neznanega.
- Ustvarjanje kode izkoriščanja. Legitimen je le obrambni opis tveganja.
Če povzamem
- Skeniranje ranljivosti išče znane vzorce ranljivosti z vozilom + umetno inteligenco + človekom.
- Umetna inteligenca je zmogljiva pri razlagi in razvrščanju rezultatov orodja za statično analizo.
- Zanesljivo v jasnih vzorcih, kot sta ponovni vstop in nadzor dostopa; Šibek v MEV in poslovni logiki.
- Tudi odprava lažno pozitivnih rezultatov zahteva potrditev.
- "Čisto skeniranje" ni varnostno potrdilo; Ni nadomestilo za nadzor.
Aplikacijska naloga
Zaženite orodje za statično analizo na vzorčni pogodbi (če je mogoče) ali poiščite že pripravljeno poročilo Slither. Uporabite poziv "opis izhoda orodja" za AI. Ocenite, ali AI: (1) pravilno pojasnjuje opozorila, (2) je smiselno razlikovati med lažno pozitivnimi rezultati in (3) spregleda tveganje, specifično za protokol. V tabeli izpolnite stolpce »najdeno vozilo / pojasnjeno z umetno inteligenco / potrjeno s človekom«.
kontrolni seznam
- [ ] Loputo sem postavil kot plast nadzora.
- [] Uporabil sem orodje za statično analizo + umetno inteligenco + človeka skupaj.
- [ ] Po kategorijah sem iskal znane vzorce.
- [ ] Lažne pozitivne rezultate sem izločil s potrditvijo.
- [ ] Zanašal sem se na ljudi na šibkih področjih, kot je MEV/poslovna logika.
- [ ] Nisem ponudil "čiščenja" kot zagotovilo.
- [ ] Delal sem samo za obrambne namene; Nisem ustvaril podvigov.