Ieguvumi:
- Spēja saprast, ka mākslīgais intelekts paplašina auditora darbības jomu, bet to neaizstāj, un noder kategoriju skenēšanā un rasējumos.
- Spēja atpazīt, ka mākslīgais intelekts ir palaidis garām sākotnējo ievainojamību un biznesa loģikas kļūdu un ka raits “drošs” paziņojums nav pārliecība
- Spēja klasificēt konstatējumus atbilstoši to nopietnības pakāpei un saprast, ka galīgais apstiprinājums un profesionālā atbildība gulstas uz kompetento auditoru.
Drošības audits (sistemātiska viedā līguma pārbaude attiecībā uz ievainojamībām) ir Web3 atbildīgākais darbs. Viena revidenta izlaista rindiņa var radīt miljoniem dolāru zaudējumus. Šajā nodaļā jūs uzzināsiet, kā izmantot AI kā audita palīgu; Mēs mācīsimies no pavedienu ģenerēšanas līdz atklājumu izklāsta rakstīšanai. Bet viskritiskākais teikums ir šāds: AI nekontrolē; Tas ir palīgs, kas revidentam saasina aci. Galīgo apstiprinājumu sniedz kompetentais revidents, kas uzņemas profesionālo atbildību.
Kāpēc audits ir svarīgs drošībai
Audita ziņojums pārliecina projektu un investorus, ka "šis kodekss ir pārskatīts". Ja šī pārliecība ir nepatiesa, sekas ir postošas: izmantots protokols, zaudēts finansējums, sabrukušais projekts. Tāpēc AI izmantošana pārbaudēs ir šī moduļa rūpīgākā daļa. AI paplašina auditora darbības jomu (atgādina vairāk modeļu, lasa ātrāk), bet neaizstāj auditoru.
Kāpēc tas nepāriet? Jo:
- AI nevar redzēt unikālo/jauno ievainojamību, kas nav iekļauta apmācības datos.
- AI bieži nepalaiž garām protokola biznesa loģikas trūkumu — ka kods ir tehniski pareizs, bet ekonomiski izmantojams.
- AI var sniegt nepatiesu pārliecību, tekošā valodā sakot “drošs”; Tas ir visbīstamākais rezultāts.
AI izmantošanas slāņi kontrolē
1. Sākotnējā skenēšana un modeļa atgādinājums. AI iet cauri zināmiem ievainojamības modeļiem, piemēram, kontrolsarakstam: atkārtota piekļuve, piekļuves kontrole, orākulu manipulācijas, priekšlaicīga darbība. Tas nodrošina, ka auditors nepalaiž garām nevienu kategoriju.
2. Koda skaidrojums. Sarežģītas funkcijas izskaidrošana AI vienkāršā valodā ļauj auditoram ātri saprast loģiku; bet aprakstu vienmēr salīdzina ar kodu.
3. Atzinumu projekta rakstīšana. Kad revidents konstatē ievainojamību, AI ietaupa laiku, rakstot ziņojuma uzmetumu (aprakstu, ietekmi, piedāvāto risinājumu).
4. Prethipotēzes ģenerēšana. Pajautājiet AI "kā šo funkciju var ļaunprātīgi izmantot?" Jautāšana mums atgādina agresīvo perspektīvu.
Uzmanību: tas, ka mākslīgais intelekts saka: "Šajā kodā neatradu nevienu ievainojamību", nenozīmē, ka "šis kods ir drošs". Pierādījums par prombūtni nav pierādījumu trūkums. Fakts, ka AI nevar kaut ko atrast, nepadara auditoram nevajadzīgu šīs jomas pārbaudi.
Smaguma līmeņu atrašana
Revīzijas konstatējumi tiek klasificēti pēc to smaguma pakāpes. AI ir jāizmanto šī sistēma, ģenerējot melnrakstus:
Līmenis
Nozīme
piemērs
kritisks
Iespējams tieši līdzekļu zaudējums/lokauts
Līdzekļu izņemšana ar atkārtotu ienākšanu
augsts
Nopietna ietekme noteiktos apstākļos
Neatļauta drukāšana (piparmētra)
vidējs
Ierobežota ietekme vai sarežģīts stāvoklis
Nelieli zaudējumi ar Oracle novirzi
zems
Neliels risks, labas prakses pārkāpums
Trūkst pasākuma pārraides
Informācija
Nedrošība, lasāmība
NatSpec trūkums
Vāja uzvedne / spēcīga uzvedne
Vāja uzvedne:
Vai šis līgums ir drošs?
Šis jautājums liek AI pieņemt absolūtu, nepamatotu spriedumu, piemēram, “jā/nē” — tieši to, ko mēs nevēlamies.
Spēcīga uzvedne:
Jūsu loma: vecākā viedā līgumu auditora asistents. Drošības nolūkos skenējiet šādu līgumu. Pa vienam pārejiet cauri šādām kategorijām: atkārtota ieeja, piekļuves kontrole, veselu skaitļu darbības, ievades validācija, orākuls/ārējie dati, priekšējā darbība, gāzes ierobežojums. Katram ATZINĀJUMAM: (1) attiecīgā koda rindiņa, (2) izraisītais risks, (3) paredzamā smaguma pakāpe (kritisks/augsts/vidējs/zems), (4) risinājuma priekšlikums. Šīs ir HIPOTĒZES, KAS JĀAPSTIPRINA; Nedodiet "drošu" spriedumu. Atzīmējiet jomas, par kurām neesat pārliecināts, skaidri sakot "ļaujiet auditoram apstiprināt".
Četras kopējamas veidnes
1) Pārlūkošana pēc kategorijas:
Skenējiet šo līgumu šādām kategorijām: atkārtota piekļuve, piekļuves kontrole, veselu skaitļu pārpilde, ievades validācija, atkarība no orākula, priekšējā darbība, DoS/gāze. Katrai kategorijai sakiet "nav/nav riska/es neesmu pārliecināts" un pievienojiet savu pamatojumu koda rindiņai. Nepieņemiet galīgo spriedumu.
2) Prethipotēze no uzbrucēja viedokļa:
Domājiet kā uzbrucējs: kādi ir veidi, kā ļaunprātīgi izmantot šo funkciju? Soli pa solim uzrakstiet katru scenāriju un norādiet, kādi nosacījumi ir nepieciešami. Šie scenāriji ir pārbaudāmās hipotēzes; NEĢenerējiet reālu izmantošanas kodu, vienkārši aprakstiet risku.
3) Atzinumu ziņojuma projekts:
Formālā revīzijas valodā ziņojiet par šādu pārbaudītu konstatējumu: nosaukums, nopietnība, apraksts, ietekme, ietekmētais kods, reproducēšanas darbības, piedāvātais risinājums. Izmantojiet izmērītu un tehnisko valodu; pārspīlējums. Pieņemsim, ka konstatējumu apstiprina revidents, neveidojiet jaunu konstatējumu.
4) Labojiet verifikāciju:
Tālāk ir norādīta ievainojamība un izstrādātāja ieviestais labojums. Pārbaudiet, vai labojums patiešām novērš ievainojamību; atzīmējiet, vai tas rada jaunu blakusefektu vai ievainojamību. Noteikti nesakiet "slēgts"; Beigās ar "jāapstiprina ar testēšanu".
Trīs mini futrāļi (skaitļos)
1. gadījums — AI novērsa lēcienu kategorijā. Auditors gatavojās koncentrēties uz 400 rindu līgumu un izlaist orākula kategoriju. AI kategorijas skenēšana sniedza brīdinājumu, ka "cenu dati ir no viena avota, kas ir atvērts manipulācijām". Revidents to pārbaudīja un konstatēja, ka tas patiešām ir vidējs risks. Nodarbība: AI uztur pārklājuma disciplīnu.
2. gadījums — viltus “drošas” garantijas. Cita komanda AI jautāja: "Vai tas ir droši?" viņš jautāja; "Šķiet, ka nav būtisku problēmu," sacīja AI. Apkalpes pārbaude bija viegla. Tad neatkarīgais auditors atklāja biznesa loģikas trūkumu: aprēķinu, kas bija tehniski pareizs, bet kura stimulus varēja izmantot. Nodarbība: AI pietrūkst biznesa loģikas kļūdu; Viņam nevar uzticēties pateikt "drošs".
3. gadījums — ziņojuma sastādīšana tika ietaupīta 3 stundas. Revidents pavadīja pusi dienas, manuāli ziņojot par 8 konstatējumiem. Kad es nodevu pārbaudītos rezultātus AI un izdrukāju oficiālo melnrakstu, laiks samazinājās par ~ 3 stundām; Revidents veltīja laiku padziļināšanai. Nodarbība: AI ir drošs un efektīvs ziņošanā, jo atklājumi jau ir pārbaudīti ar cilvēka palīdzību.
Biznesa loģikas ievainojamība: AI aklā zona
Dārgākās ievainojamības bieži rodas nevis koda tehniskas kļūdas, bet gan biznesa loģikas izmantojamības dēļ: atlīdzības konta noapaļošana, balsu zibatmiņas nolaupīšana, tūlītēja manipulācija ar cenu. Tie ir gadījumi, kad kods darbojas "pareizi", bet protokolu var ekonomiski piemānīt. AI, visticamāk, palaidīs garām šādas kļūdas, jo īpaši tās, kas saistītas ar protokolu. Tāpēc biznesa loģikas pārskats ir revidenta darbietilpīgākā joma un vismazāk atkarīga no AI.
Padoms: jautājiet AI "kā var izmantot šī protokola ekonomiskos stimulus?" un izmantojiet scenārijus, kas parādās kā sākumpunkts, taču atcerieties, ka jums un jūsu komandai ir jāveic īstā analīze.
Biežas kļūdas
- Pajautājiet AI "vai tas ir droši?" Jautāt un uzticoties savam jā. Absolūts spriedums nav vajadzīgs.
- Pārskatīšanas apturēšana, kad AI saka "Es nevarēju to atrast". Prombūtne nav pierādījums.
- Biznesa loģikas pārbaudes deleģēšana AI. Tā ir viņa lielākā aklā zona.
- Neizmantojot neatkarīgus rīkus (Slither utt.). AI vien nepietiek.
- AI veiktā atraduma ievietošana ziņojumā, to nepārbaudot. Halucināciju risks.
- Mēģina uzlikt kontroles atbildību AI. Atbildība gulstas uz ekspertu.
Rezumējot
- Audits ir svarīgs drošībai; AI paplašina auditora darbības jomu, bet neaizstāj to.
- AI palaiž garām sākotnējo ievainojamību un biznesa loģikas kļūdu; Sakot "drošs" nav pārliecība.
- Atradumus klasificē pēc smaguma pakāpes; AI noder melnrakstu ģenerēšanā.
- Prethipotēzes un kategoriju skrīnings saglabā iekļaušanas disciplīnu.
- Galīgo apstiprinājumu un profesionālo atbildību vienmēr uzņemas kompetentais revidents.
Lietojumprogrammas uzdevums
Atrodiet līguma paraugu, kurā ir zināma ievainojamība (izglītojošos nolūkos "neaizsargātu līgumu" piemēri ir pieejami atklātā pirmkoda formātā). Lietojiet AI uzvedni “Skenēšana pēc kategorijas”. Ņemiet vērā, vai AI: (1) atklāja patieso ievainojamību, (2) radīja izdomātus/nepatiesus konstatējumus, (3) pieņēma absolūtus spriedumus, piemēram, “drošs”. Pēc tam salīdziniet to ar statiskās analīzes rīku.
kontrolsaraksts
- [ ] Pajautājiet AI "vai tas ir droši?" Tā vietā man bija uz kategoriju balstīta skenēšana.
- [ ] Katru atradumu es uztvēru kā hipotēzi.
- [ ] Es pats/komanda veicu biznesa loģikas pārskatu.
- [ ] Es to pārbaudīju ar neatkarīgu statiskās analīzes rīku.
- [ ] Esmu apstiprinājis, ka AI negatavo konstatējumus.
- [ ] Es klasificēju atradumus pēc smaguma pakāpes.
- [ ] Es piekritu, ka galīgais apstiprinājums ir kompetentam revidentam.