Pelnas:
- Gebėjimas suprasti, kad dirbtinis intelektas išplečia auditoriaus apimtį, bet jo nepakeičia ir yra naudingas kategorijų skenavimui ir projektų suradimui.
- Gebėjimas atpažinti, kad dirbtinis intelektas nepastebėjo pradinio pažeidžiamumo ir verslo logikos klaidos ir kad sklandus „saugus“ pareiškimas nėra užtikrinimas
- Gebėjimas klasifikuoti išvadas pagal jų rimtumo lygį ir suprasti, kad galutinį patvirtinimą ir profesinę atsakomybę turi kompetentingas auditorius.
Saugumo auditas (sistemingas išmaniosios sutarties tyrimas dėl pažeidžiamumų) yra atsakingiausias Web3 darbas. Viena auditorijos praleista eilutė gali sukelti milijonų dolerių nuostolių. Šiame skyriuje išmoksite naudoti AI kaip audito asistentą; Mokysimės nuo užuominų generavimo iki išvadų metmenų rašymo. Tačiau pats kritiškiausias sakinys yra toks: AI nekontroliuoja; Tai asistentas, paryškinantis auditoriui akį. Galutinį patvirtinimą turi kompetentingas auditorius, kuris prisiima profesinę atsakomybę.
Kodėl auditas yra labai svarbus saugumui
Audito ataskaita patikina projektą ir investuotojus, kad „šis kodeksas buvo peržiūrėtas“. Jei šis patikinimas klaidingas, pasekmės pražūtingos: išnaudotas protokolas, prarastas finansavimas, žlugo projektas. Todėl AI naudojimas tikrinant yra kruopščiausia šio modulio dalis. AI išplečia auditoriaus sritį (prisimena daugiau šablonų, greičiau nuskaito), bet nepakeičia auditoriaus.
Kodėl nepraeina? Nes:
- AI nemato unikalaus / naujo pažeidžiamumo, kurio nėra mokymo duomenyse.
- AI dažnai nepastebi protokolo verslo logikos trūkumo – kad kodas yra techniškai teisingas, bet ekonomiškai išnaudojamas.
- AI gali suteikti klaidingą patikinimą sklandia kalba sakydamas „saugu“; Tai yra pavojingiausias rezultatas.
DI naudojimo valdymo sluoksniai
1. Pradinis nuskaitymas ir modelio priminimas. AI atlieka žinomus pažeidžiamumo modelius, tokius kaip kontrolinis sąrašas: pakartotinis įėjimas, prieigos kontrolė, manipuliavimas orakulu, išankstinis veikimas. Taip užtikrinama, kad auditorius nepraleistų jokių kategorijų.
2. Kodo paaiškinimas. Sudėtingos funkcijos paaiškinimas AI paprasta kalba leidžia auditoriui greitai suvokti logiką; bet aprašymas visada lyginamas su kodu.
3. Išvadų projekto rašymas. Kai auditorius nustato pažeidžiamumą, AI sutaupo laiko rašant ataskaitos projektą (aprašą, poveikį, siūlomą sprendimą).
4. Priešingos hipotezės generavimas. Paklauskite AI „kaip galima piktnaudžiauti šia funkcija? Klausimas “ primena mums apie agresyvią perspektyvą.
Dėmesio: vien todėl, kad dirbtinis intelektas sako „neradau jokių pažeidžiamumų šiame kode“, nereiškia, kad „šis kodas yra saugus“. Nebuvimo įrodymas nėra įrodymų nebuvimas. Tai, kad AI negali kažko rasti, nereiškia, kad auditoriui nereikia tirti šios srities.
Raskite sunkumo lygius
Audito išvados klasifikuojamos pagal jų sunkumo laipsnį. AI turėtų naudoti šią sistemą kurdamas juodraščius:
Lygis
Reikšmė
pavyzdys
kritiškas
Galimas tiesioginis lėšų praradimas / blokavimas
Lėšų išėmimas su sugrįžimu
aukštas
Rimtas poveikis tam tikromis sąlygomis
Neteisėtas spausdinimas (mėlyna)
vidutinis
Ribotas poveikis arba sudėtinga būklė
Mažas nuostolis su Oracle nuokrypiu
žemas
Nedidelė rizika, geros praktikos pažeidimas
Trūksta įvykio transliacijos
Informacija
Nesaugumas, skaitomumas
NatSpec trūkumas
Silpnas raginimas / Stiprus raginimas
Silpnas raginimas:
Ar ši sutartis saugi?
Šis klausimas verčia dirbtinį intelektą priimti absoliutų, nepagrįstą sprendimą, pavyzdžiui, „taip / ne“ – būtent tai, ko mes nenorime.
Galingas raginimas:
Jūsų vaidmuo: vyresniojo išmaniojo sutarčių auditoriaus padėjėjas.Saugos tikslais nuskaitykite šią sutartį. Eikite į šias kategorijas po vieną: pakartotinis įėjimas, prieigos kontrolė, sveikųjų skaičių operacijos, įvesties patvirtinimas, orakulas / išoriniai duomenys, pirminis valdymas, dujų limitas. Kiekvienam RADIJUI: (1) atitinkama kodo eilutė, (2) rizika, (3) numatomas sunkumas (kritinis / didelis / vidutinis / žemas), (4) sprendimo pasiūlymas. Tai HIPOTEZĖS, KURIOS BŪTINA PATVIRTINTI; Neduokite „saugaus“ verdikto. Pažymėkite sritis, dėl kurių nesate tikri, aiškiai sakydami „tegul auditorius patvirtina“.
Keturi kopijuojami šablonai
1) Naršymas pagal kategorijas:
Nuskaitykite šią sutartį pagal šias kategorijas: pakartotinis įėjimas, prieigos kontrolė, sveikųjų skaičių perpildymas, įvesties patvirtinimas, priklausomybė nuo „Oracle“, pirminis vykdymas, DoS / dujos. Kiekvienai kategorijai pasakykite „nėra / nėra rizikos / nesu tikras“ ir prijunkite savo pagrindimą prie kodo eilutės. Nepriimkite galutinio sprendimo.
2) Priešinga hipotezė iš užpuoliko perspektyvos:
Mąstykite kaip užpuolikas: kokiais būdais galima piktnaudžiauti šia funkcija? Žingsnis po žingsnio parašykite kiekvieną scenarijų ir nurodykite, kokių sąlygų reikia. Šie scenarijai yra hipotezės, kurias reikia patikrinti; NEgeneruokite tikrojo išnaudojimo kodo, tiesiog aprašykite riziką.
3) Išvadų ataskaitos projektas:
Praneškite apie šią patikrintą išvadą oficialia audito kalba: pavadinimas, sunkumas, aprašymas, poveikis, paveiktas kodas, atkūrimo veiksmai, siūlomas sprendimas. Naudoti išmatuotą ir techninę kalbą; perdėjimas. Tarkime, kad išvadą patvirtina auditorius, nedarykite naujos išvados.
4) Pataisykite patvirtinimą:
Toliau pateikiamas pažeidžiamumas ir kūrėjo pritaikytas pataisymas. Patikrinkite, ar taisymas iš tikrųjų pašalina pažeidžiamumą; pažymėkite, ar tai sukelia naują šalutinį poveikį ar pažeidžiamumą. Tikrai nesakyk „uždaryta“; Pabaigoje „turi būti patvirtinta testuojant“.
Trys mini dėklai (skaičiais)
1 atvejis – AI neleido pereiti prie kategorijos. Auditorius ketino sutelkti dėmesį į 400 eilučių sutartį ir praleisti orakulų kategoriją. AI kategorijos nuskaitymas perspėjo, kad „duomenys apie kainas yra iš vieno šaltinio ir gali būti manipuliuojami“. Auditorius jį išnagrinėjo ir nustatė, kad tai tikrai vidutinė rizika. Pamoka: AI palaiko aprėpties discipliną.
2 atvejis – klaidingas „saugus“ patikinimas. Kita komanda paklausė AI „ar tai saugu? jis paklausė; „Atrodo, kad nėra didelės problemos“, - sakė AI. Įgulos patikrinimas buvo lengvas. Tada nepriklausomas auditorius nustatė verslo logikos trūkumą: skaičiavimas buvo techniškai teisingas, bet kurio paskatos buvo išnaudojamos. Pamoka: AI praleidžia verslo logikos klaidą; Negalima patikėti, kad jis pasakys „saugus“.
3 atvejis – rengiant ataskaitą sutaupyta 3 valandos. Auditorius pusę dienos praleido rankiniu būdu pranešdamas apie 8 išvadas. Kai AI pateikiau patikrintas išvadas ir atspausdinau oficialų juodraštį, laikas sumažėjo ~3 val. Auditorius skyrė laiko gilinimuisi. Pamoka: AI yra saugus ir veiksmingas teikiant ataskaitas, nes išvados jau buvo patikrintos žmogaus.
Verslo logikos pažeidžiamumas: AI akloji zona
Brangiausi pažeidžiamumai dažnai atsiranda ne dėl techninės kodo klaidos, o dėl verslo logikos išnaudojamumo: apvalinimo atlygio sąskaitos išnaudojimo, greitos paskolos balso užgrobimo, momentinio manipuliavimo kaina. Tai atvejai, kai kodas veikia „teisingai“, bet protokolą galima apgauti ekonomiškai. Tikėtina, kad dirbtinis intelektas nepastebės tokių klaidų, ypač susijusių su protokolu. Todėl verslo logikos peržiūra yra daugiausiai žmonių reikalaujanti auditoriaus sritis ir mažiausiai priklausoma nuo AI.
Užuomina: paklauskite AI „kaip galima išnaudoti šio protokolo ekonomines paskatas? ir naudokite atsiradusius scenarijus kaip atskaitos tašką, tačiau atminkite, kad jūs ir jūsų komanda turėtumėte atlikti tikrąją analizę.
Dažnos klaidos
- Paklauskite AI "ar tai saugu?" Klauskite ir pasitikėkite savo „taip“. Absoliutus sprendimas nereikalingas.
- Peržiūros stabdymas, kai AI pasako „Neradau“. Nebuvimas nėra įrodymas.
- Verslo logikos peržiūros pavedimas dirbtiniam intelektui. Tai didžiausia jo akloji dėmė.
- Nenaudojate nepriklausomų įrankių (Slither ir kt.). Vien dirbtinio intelekto neužtenka.
- AI padarytos išvados įtraukimas į ataskaitą jos nepatikrinus. Haliucinacijų rizika.
- Bandymas kontroliuoti atsakomybę už AI. Atsakomybė tenka ekspertui.
Apibendrinant
- Auditas yra labai svarbus saugai; AI išplečia auditoriaus sritį, bet jos nepakeičia.
- AI nepastebi pradinio pažeidžiamumo ir verslo logikos klaidos; Sakymas „saugu“ nėra užtikrinimas.
- Išvados klasifikuojamos pagal sunkumo laipsnį; AI naudingas kuriant juodraščius.
- Priešingos hipotezės ir kategorijų atranka išsaugo įtraukimo discipliną.
- Galutinį patvirtinimą ir profesinę atsakomybę visada turi kompetentingas auditorius.
Taikymo užduotis
Raskite pavyzdinę sutartį, kurioje yra žinomas pažeidžiamumas (švietimo tikslais „pažeidžiamų sutarčių“ pavyzdžiai yra prieinami atvirajame šaltinyje). Taikykite raginimą „nuskaitymas pagal kategoriją“ AI. Atkreipkite dėmesį, ar AI: (1) nustatė tikrąjį pažeidžiamumą, (2) padarė išgalvotų / klaidingų išvadų, (3) priėmė absoliučius sprendimus, pvz., „saugus“. Tada palyginkite jį su statinės analizės įrankiu.
kontrolinis sąrašas
- [ ] Paklauskite AI „ar tai saugu? Vietoj to turėjau nuskaitymą pagal kategoriją.
- [ ] Kiekvieną radinį traktavau kaip hipotezę.
- [ ] Verslo logikos peržiūrą atlikau pats / komanda.
- [ ] Aš jį kryžmiškai patvirtinau naudodamas nepriklausomą statinės analizės įrankį.
- [ ] Patvirtinau, kad AI nedaro išvadų.
- [ ] Radinius klasifikavau pagal sunkumo laipsnį.
- [ ] Sutikau, kad galutinį patvirtinimą turi kompetentingas auditorius.