Jednotka 3 / 11

Podpora auditu inteligentnej zmluvy: Kontrola bezpečnosti a návrh zistení

zisky:

  • Schopnosť pochopiť, že umelá inteligencia rozširuje rozsah pôsobnosti audítora, ale nenahrádza ho a je užitočná pri skenovaní kategórií a hľadaní návrhu.
  • Byť schopný rozpoznať, že umelá inteligencia prehliadla pôvodnú chybu zabezpečenia a obchodnú logiku a že plynulé „bezpečné“ vyhlásenie nie je zárukou
  • Schopnosť klasifikovať zistenia podľa úrovne ich závažnosti a pochopiť, že konečné schválenie a odborná zodpovednosť spočíva na kompetentnom audítorovi.

Bezpečnostný audit (systematické skúmanie inteligentnej zmluvy na slabiny) je najzodpovednejšou prácou Web3. Jeden riadok vynechaný audítorom môže mať za následok straty v miliónoch dolárov. V tejto lekcii sa naučíte používať AI ako asistenta auditu; Naučíme sa od generovania záchytných bodov až po písanie prehľadu zistení. Najkritickejšia veta je však toto: AI nekontroluje; Ide o asistenta, ktorý zbystrí zrak revízora. Konečné schválenie je na kompetentnom audítorovi, ktorý preberá odbornú zodpovednosť.

Prečo je audit kritický z hľadiska bezpečnosti

Audítorská správa uisťuje projekt a investorov, že „tento kódex bol skontrolovaný“. Ak je toto ubezpečenie nepravdivé, následky sú katastrofálne: zneužitý protokol, stratené financie, zrútený projekt. Preto je použitie AI pri inšpekcii najopatrnejšou časťou tohto modulu. AI rozširuje rozsah audítora (vyvoláva viac vzorov, číta rýchlejšie), ale nenahrádza audítora.

Prečo to neprejde? Pretože:

  • AI nevidí jedinečnú/novú zraniteľnosť, ktorá nie je v tréningových údajoch.
  • AI často postráda chybu v obchodnej logike protokolu – že kód je technicky správny, ale ekonomicky využiteľný.
  • AI môže poskytnúť falošné uistenie tým, že povie „bezpečné“ plynulým jazykom; Toto je najnebezpečnejší výsledok.

Vrstvy používania AI pri kontrole

1. Úvodné skenovanie a pripomenutie vzoru. Umelá inteligencia prechádza známymi vzormi zraniteľnosti, napríklad kontrolným zoznamom: opätovný vstup, kontrola prístupu, manipulácia s orákulom, front-running. To zaisťuje, že audítor nevynechá žiadnu kategóriu.

2. Vysvetlenie kódu. Vysvetlenie komplexnej funkcie AI v jednoduchom jazyku umožňuje audítorovi rýchlo pochopiť logiku; ale popis sa vždy porovnáva s kódom.

3. Spísanie návrhu zistení. Keď audítor nájde slabé miesto, AI ušetrí čas pri písaní návrhu správy (popis, dopad, navrhované riešenie).

4. Generovanie protihypotézy. Opýtajte sa AI ​​"ako možno túto funkciu zneužiť?" Pýtať sa “ nám pripomína agresívnu perspektívu.

Pozor: To, že AI ​​hovorí „V tomto kóde som nenašiel žiadne zraniteľné miesta“, NEZNAMENÁ „tento kód je bezpečný“. Dôkaz neprítomnosti nie je absenciou dôkazu. Skutočnosť, že AI nemôže niečo nájsť, neznamená, že audítor nemusí túto oblasť skúmať.

Nájdenie úrovní závažnosti

Zistenia auditu sú klasifikované podľa úrovne ich závažnosti. AI by mala používať tento rámec pri generovaní konceptov:

úroveň

Význam

príklad

kritický

Strata/uzamknutie fondu je priamo možné

Výber prostriedkov s opätovným vstupom

vysoká

Vážny vplyv za určitých podmienok

Neautorizovaná tlač (mäta)

stredná

Obmedzený vplyv alebo ťažký stav

Malá strata s odchýlkou Oracle

nízka

Menšie riziko, porušenie osvedčených postupov

Chýba vysielanie udalosti

Informácie

Nezabezpečenie, čitateľnosť

Nedostatok NatSpec

Slabá výzva / Silná výzva

Slabá výzva:

Je táto zmluva bezpečná?

Táto otázka núti AI urobiť absolútny, neoprávnený úsudok ako „áno/nie“ – presne to, čo nechceme.

Výkonná výzva:

Vaša úloha: asistent hlavného audítora inteligentnej zmluvy. Naskenujte nasledujúcu zmluvu kvôli bezpečnosti. Postupne si prejdite nasledujúce kategórie: opätovný vstup, riadenie prístupu, celočíselné operácie, overenie vstupu, oracle/externé údaje, front-running, limit plynu. Pre každý NÁLEZ: (1) príslušný riadok kódu, (2) riziko príčiny, (3) odhadovaná závažnosť (kritická/vysoká/stredná/nízka), (4) návrh riešenia. Toto sú HYPOTÉZY, KTORÉ TREBA POTVRDIŤ; Nedávajte „bezpečný“ verdikt. Označte oblasti, pri ktorých si nie ste istí, jasne povedzte „nech potvrdí audítor“.

Štyri kopírovateľné šablóny

1) Prehľadávanie podľa kategórií:

Naskenujte túto zmluvu pre nasledujúce kategórie: opätovný vstup, kontrola prístupu, pretečenie celého čísla, overenie vstupu, závislosť od Oracle, front-running, DoS/gas. Pre každú kategóriu povedzte „neexistuje/neexistuje žiadne riziko/nie som si istý“ a pripojte svoje odôvodnenie k riadku v kóde. Nerobte konečný súd.

2) Protihypotéza z pohľadu útočníka:

Myslite ako útočník: aké sú spôsoby zneužitia tejto funkcie? Napíšte každý scenár krok za krokom a uveďte, aké podmienky sa vyžadujú. Tieto scenáre sú hypotézami, ktoré sa majú testovať; NEGENERUJTE skutočný exploit kód, len popíšte riziko.

3) Návrh nálezovej správy:

Oznámte nasledujúce overené zistenia vo formálnom jazyku auditu: názov, závažnosť, popis, dopad, ovplyvnený kód, kroky na reprodukciu, navrhované riešenie. Používajte odmeraný a technický jazyk; preháňanie. Predpokladajme, že nález potvrdí audítor, nevytvárajte nový nález.

4) Opravte overenie:

Nižšie je uvedená chyba zabezpečenia a oprava, ktorú použil vývojár. Skontrolujte, či oprava skutočne uzatvorí zraniteľnosť; označte, či vytvára nový vedľajší účinok alebo zraniteľnosť. Pre istotu nehovorte „zatvorené“; Končiť „musí byť potvrdené testovaním“.

Tri mini puzdrá (v číslach)

Prípad 1 – AI zabránila preskakovaniu kategórií. Audítor sa chystal zamerať na 400-riadkovú zmluvu a preskočiť kategóriu orákula. Skenovanie kategórií AI varovalo, že „údaje o cenách pochádzajú z jedného zdroja a sú otvorené manipulácii“. Audítor to preskúmal a zistil, že ide skutočne o stredné riziko. Ponaučenie: AI zachováva disciplínu pokrytia.

Prípad 2 – Nepravdivé „bezpečné“ uistenie. Iný tím sa AI spýtal: „Je to bezpečné? spýtal sa; "Nezdá sa, že by to bol významný problém," povedala AI. Kontrola posádky bola ľahká. Potom nezávislý audítor našiel chybu obchodnej logiky: výpočet, ktorý bol technicky správny, ale ktorého stimuly boli zneužiteľné. Ponaučenie: AI vynecháva chybu obchodnej logiky; Nedá sa mu veriť, že povie „bezpečné“.

Prípad 3 – Vypracovanie správy ušetrilo 3 hodiny. Audítor strávil pol dňa manuálnym hlásením 8 zistení. Keď som odovzdal overené zistenia AI a vytlačil oficiálny návrh, čas klesol o ~ 3 hodiny; Audítor venoval čas prehĺbeniu. Poučenie: Umelá inteligencia je bezpečná a efektívna pri podávaní správ, pretože zistenia už boli overené ľuďmi.

Zraniteľnosť obchodnej logiky: slepý bod AI

Najdrahšie zraniteľné miesta často nepochádzajú z technickej chyby v kóde, ale zo zneužiteľnosti obchodnej logiky: zaokrúhľovanie zneužitia účtu s odmenou, ukradnutie hlasu prostredníctvom bleskovej pôžičky, okamžitá manipulácia s cenou. Ide o prípady, keď kód funguje „správne“, ale protokol sa dá ekonomicky oklamať. AI pravdepodobne takéto chyby vynechá – najmä tie, ktoré sú špecifické pre protokol. Preto je kontrola obchodnej logiky oblasťou audítora, ktorá je najnáročnejšia na človeka a najmenej sa spolieha na AI.

Tip: Opýtajte sa AI ​​„Ako možno využiť ekonomické stimuly tohto protokolu? a použite scenáre, ktoré sa objavia ako východiskový bod – nezabudnite však, že skutočnú analýzu by ste mali vykonať vy a váš tím.

Časté chyby

  • Opýtajte sa AI "je to bezpečné?" Pýtať sa a dôverovať svojmu áno. Nevyžaduje sa absolútny úsudok.
  • Zastavenie kontroly, keď AI povie „Nemohol som to nájsť“. Absencia nie je dôkaz.
  • Delegovanie kontroly obchodnej logiky na AI. Je to jeho najväčšie slepé miesto.
  • Bez použitia nezávislých nástrojov (Slither atď.). Samotná AI nestačí.
  • Vloženie zistenia AI do správy bez jeho overenia. Riziko halucinácií.
  • Snažíme sa preniesť zodpovednosť za kontrolu na AI. Zodpovednosť je na odborníkovi.

V súhrne

  • Audit je kritický z hľadiska bezpečnosti; AI rozširuje rozsah pôsobnosti audítora, ale nenahrádza ho.
  • AI chýba pôvodná chyba zabezpečenia a obchodnej logiky; Povedať „bezpečné“ nie je istota.
  • Nálezy sú klasifikované podľa stupňa závažnosti; AI je užitočná pri vytváraní konceptov.
  • Protihypotézy a skríning kategórií zachovávajú disciplínu inklúzie.
  • Konečné schválenie a odborná zodpovednosť je vždy na kompetentnom audítorovi.

Aplikačná úloha

Nájdite vzor zmluvy, ktorá obsahuje známu zraniteľnosť (na vzdelávacie účely sú príklady „zraniteľných zmlúv“ dostupné v open source). Použite výzvu „skenovanie podľa kategórií“ na AI. Všimnite si, či AI: (1) našla skutočnú zraniteľnosť, (2) vytvorila vymyslené/falošné zistenia, (3) urobila absolútne úsudky, ako napríklad „bezpečné“. Potom ho porovnajte s nástrojom na statickú analýzu.

kontrolný zoznam

  • [ ] Opýtajte sa AI "je to bezpečné?" Namiesto toho som mal skenovanie podľa kategórií.
  • [ ] Každé zistenie som považoval za hypotézu.
  • [ ] Kontrolu obchodnej logiky som vykonal sám/tím.
  • [ ] Overil som to pomocou nezávislého nástroja na statickú analýzu.
  • [ ] Potvrdil som, že AI si zistenia nevymýšľa.
  • [ ] Nálezy som klasifikoval podľa stupňa závažnosti.
  • [ ] Súhlasil som s tým, že konečné schválenie patrí príslušnému audítorovi.