Pelnas:
- Galimybė atpažinti įprastus pažeidžiamumo modelius, tokius kaip pakartotinis įėjimas, prieigos kontrolė, manipuliavimas orakulu ir išankstinis vykdymas, ir nuskaityti juos naudojant statinės analizės įrankį + dirbtinis intelektas + žmogus
- Gebėjimas atskirti AI stipriąsias puses aiškinant įrankio išvestį ir teikiant pirmenybę klaidingiems teigiamiems rezultatams bei MEV ir verslo logikos trūkumams
- Supraskite, kad „švarus nuskaitymas“ nėra saugos sertifikatas, kad nuskaitymas yra tik vienas valdymo lygmuo
Ankstesniame skyriuje matėme holistinę audito discipliną. Šiame skyriuje mes sutelkiame dėmesį į labiau techninę temą: pažeidžiamumo nuskaitymą – sistemingą žinomų pažeidžiamumo modelių paiešką kode. Čia AI kartu su statinės analizės įrankiais naudosime kaip asistentą, kuris nuskaito ir aprašo žinomus pažeidžiamumo modelius. Tikslas: nuodugniai pažinti dažniausiai pasitaikančias spragas ir atskirti, kur dirbtinis intelektas yra patikimas, o kur nepakankamas jas nuskaityti.
Statinis ir dinaminis nuskaitymas
Nuskaitymas yra dviejų tipų. Statinė analizė – kodo tyrimas jo nepaleidžiant: tokie įrankiai kaip Slither ir Mythril nuskaito sutarties kodą ir pažymi žinomus šablonus. Šiai grupei priklauso dinaminė/simbolinė analizė (kodo paleidimas su skirtingais įėjimais arba jo tyrinėjimas matematiškai): fuzzing (bombardavimas atsitiktiniu įvedimu) ir simbolinis vykdymas (visų galimų kelių tyrinėjimas).
AI nepakeičia šių įrankių, o juos papildo: kai transporto priemonė įspėja, AI paaiškina įspėjimą paprasta kalba; AI gali priminti, kai įrankis nepatenka į šabloną; Tačiau vien AI negali garantuoti, kiek jis nuskaito. Tinkama darbo eiga: įrankis + AI + žmogus.
Patarimas: suteikite AI statinės analizės įrankio išvestį (pvz., Slither ataskaitą) ir paklauskite „paaiškinkite kiekvieną įspėjimą paprasta kalba, kas yra reali rizika, o kuri gali būti klaidinga? paklausti. Dirbtinis intelektas yra neįkainojamas, kad neapdorotų įrankių išvestis būtų suprantama ir žmonėms būtų teikiama pirmenybė.
Dažniausiai pasitaikantys pažeidžiamumo modeliai
1. Pakartotinis įėjimas. Jei funkcija iškviečia išorinę sutartį neatnaujindama jos būsenos, iškviesta sutartis gali grįžti atgal, vėl suaktyvinti tą pačią funkciją ir kelis kartus atsiimti fondą. Sprendimas: patikrinimų-efektų-sąveikos tvarka ir sugrįžimo apsauga.
2. Prieigos kontrolės trūkumas. Kritinė funkcija (atsiėmimas, išėmimas, atnaujinimas) netyčia paviešinama. Tai viena dažniausių ir brangiausių klaidų.
3. Orakulo manipuliavimas. Sutarties aklas priklausomybė nuo išorinio kainos šaltinio (orakulo). Užpuolikas akimirksniu manipuliuoja kaina ir apgauna protokolą. Sprendimas: laiko svertinė vidutinė kaina (TWAP), kelių šaltinių.
4. Sveikasis skaičius perpildymas / nukritimas. Kai skaičius viršija didžiausią leistiną reikšmę ir grįžta į pradžią. „Modern Solidity“ didžiąją jo dalį sugauna automatiškai, tačiau rizika išlieka žemo lygio (surinkimo) kode.
5. Priekyje einantis. Sandoriai pasirodo viešajame telkinyje (mempool) prieš juos patvirtinant; Užpuolikas gali matyti jūsų operaciją ir prieš ją įterpti savo operaciją. MEV (Maximal Extractable Value – vertė, išgauta iš operacijų sekos) yra bendras šio dalyko pavadinimas.
6. Paslaugų atsisakymas (DoS). Ciklas tampa per brangus ir funkcija tampa nebenaudojama, arba užrakinama priklausomybė nuo adreso.
7. Atnaujinimo rizika. Sandėliavimo susidūrimas ir piktnaudžiavimas atnaujinamose sutartyse.
pažeidžiamumas
AI nuskaitymo pasitikėjimas
Kodėl
pakartotinis įėjimas
aukštas
Gerai žinomas, aiškus raštas
prieigos kontrolė
aukštas
Pelėsius galima nuskaityti
Sveikųjų skaičių operacijos
aukštas
standartinis valdymas
Orakulo manipuliavimas
vidutinis
Reikalingas kontekstas
Priekyje einantis / MEV
Vidutinis-žemas
specifinis protokolas
verslo logikos klaida
žemas
Autentiška, kontekstuali
Silpnas raginimas / Stiprus raginimas
Silpnas raginimas:
Ar šiame kode yra spragų?
Galingas raginimas:
Jūsų vaidmuo: saugumo patikros asistentas. Nuskaitykite toliau pateiktą sutartį ir ieškokite toliau nurodytų žinomų modelių ir „rizikuoja/nėra/nesate tikri“ kiekvienam: pakartotinis įėjimas, prieigos kontrolė, sveikųjų skaičių operacijos, priklausomybė nuo oracle, išankstinis valdymas, DoS, atnaujinimo sauga. Kiekvieną nustatymą susiekite su atitinkama eilute ir paaiškinkite, kodėl kyla pavojus. Tai hipotezės, kurios BUS PATIKRINTOS naudojant statinės analizės įrankį ir auditorių. Atminkite, kad gali būti klaidingų teigiamų rezultatų.
Keturi kopijuojami šablonai
1) Įrankio išvesties aprašymas:
Žemiau pateikiama statinės analizės įrankio (Slither) ataskaita. Paaiškinkite kiekvieną įspėjimą paprasta kalba: ką tai reiškia, ar tai reali rizika, ar galimas klaidingas teigiamas rezultatas, koks turėtų būti jo prioritetas? Nepriimkite tvirto sprendimo; Suteikite pirmenybę auditoriaus patvirtinimui.
2) Atranka, orientuota į sugrįžimą:
Šioje sutartyje raskite visas funkcijas, kurios atlieka išorinius skambučius. Patikrinkite, ar kiekvienam iš jų laikomasi patikrinimų-efektų-sąveikų tvarkos ir ar yra grįžimo apsauga. Rizikingus parodykite linija. Pažymėkite, jei nesate tikri; Išnaudojimo kodo generavimas.
3) Prieigos kontrolės žemėlapis:
Šioje sutartyje išvardykite visas išorines / viešąsias funkcijas ir kiekvienai nurodykite „kas gali skambinti“ (visi / savininkas / vaidmuo). Atlikite svarbias operacijas (atsiimkite, spausdinkite, atnaujinkite) ir pažymėkite tas, kurių prieigos kontrolė yra silpna. Pateikite jį su lentele.
4) Klaidingai teigiamas pašalinimas:
Apsvarstykite, kodėl šis nuskaitymo įspėjimas gali būti ne TIKROJI rizika (klaidingai teigiama): kokia konteksto ar kodo sąlyga panaikintų šį įspėjimą? Bet nesakykite „nėra visiškai jokios problemos“; Išvardykite punktus, kuriuos reikia patvirtinti.
Trys mini dėklai (skaičiais)
1 atvejis – transporto priemonės ir dirbtinio intelekto efektyvumas padvigubėjo. Viena komanda vykdė „Slither“ pagal 12 sutarčių projektą ir gavo 140 įspėjimų. Kai AI paaiškino ir nustatė perspėjimų prioritetus, paaiškėjo, kad 95 iš 140 įspėjimų buvo klaidingi teigiami; Komanda sutelkė dėmesį į 45 tikrus kandidatus. Triažo laikas sutrumpėjo nuo 2 dienų iki 5 valandų. Pamoka: AI yra galingas humanizuojant transporto priemonės našumą.
2 atvejis – AI užgrobė MEV. DEX (decentralizuotų mainų) sutartyje AI nustatė, kad standartiniai modeliai yra švarūs, bet nepavyko aptikti iš anksto veikiančio pažeidžiamumo; nes tai buvo būdinga protokolo operacijų tvarkai. Užfiksuotas žmogaus auditorius ir modeliavimas. Pamoka: Protokolui būdinga rizika, pvz., MEV / priekyje, yra silpnoji AI sritis.
3 atvejis – išvengta laiko gaišimo dėl klaidingo teigiamo tyrimo. Komandai buvo išvengta nereikalingo perrašymo, kai AI paaiškino, kad įspėjimas apie pakartotinį įėjimą iš tikrųjų buvo klaidingas teigiamas rezultatas (funkcija jau buvo apsaugota). Tačiau komanda vis tiek tai patvirtino vienu bandymu. Pamoka: AI nustato prioritetus; Patvirtinimas vėl ateina su bandymu.
Nuskaitymo ribos
Nuskaitymas randa žinomus modelius. Negarantuojama, kad nei įrankis, nei AI aptiks naują, unikalų ar su protokolu susijusį pažeidžiamumą. Todėl atranka yra audito dalis; ne jis pats. Idėja, kad „nuskaitymas yra švarus, vadinasi, jis yra saugus“, yra vienas pavojingiausių klaidingų nuomonių šioje srityje. Gilinant paimami žemai kabantys vaisiai; Dėl gilios ir unikalios rizikos labai svarbios žmonių žinios, bandymai, sumaišymas ir oficialus auditas.
Įspėjimas: „Švari“ nuskaitymo įrankio arba AI ataskaita nėra saugos sertifikatas. Pateikti jį tokiu būdu – ypač investuotojams – yra klaidinanti ir neetiška.
Dažnos klaidos
- Atrankos pakeitimas patikrinimui. Nuskaitymas yra vienas sluoksnis, o ne visas.
- AI naudojimas be įrankių. Statinė analizė + AI + žmogaus darbas kartu.
- Klaidingų teigiamų rezultatų pašalinimas be patvirtinimo. Kiekvienas ekranas yra išbandytas / žmogaus patikrintas.
- Apeiti protokolui būdingą riziką (MEV) pasikliaujant AI. AI silpnoji sritis.
- Mąstymas „švarus nuskaitymas“ = „saugus“. Jis negali rasti nežinomybės.
- Išnaudojimo kodo generavimas. Tik gynybinės rizikos aprašymas yra teisėtas.
Apibendrinant
- Pažeidžiamumo nuskaitymas ieško žinomų pažeidžiamumo modelių naudojant transporto priemonę + AI + žmogų.
- Dirbtinis intelektas yra galingas aiškindamas statinės analizės įrankio išvestį ir nustatydamas prioritetą.
- Patikimas aiškių modelių, tokių kaip pakartotinis įėjimas ir prieigos kontrolė, atveju; Silpnas MEV ir verslo logika.
- Net norint pašalinti klaidingus teigiamus rezultatus, reikia patvirtinimo.
- „Švarus nuskaitymas“ nėra saugos sertifikatas; Tai nėra priežiūros pakaitalas.
Taikymo užduotis
Paleiskite statinės analizės įrankį sutarties pavyzdyje (jei įmanoma) arba suraskite paruoštą Slither ataskaitą. Taikykite raginimą „įrankio išvesties aprašas“ AI. Įvertinkite, ar AI: (1) teisingai paaiškina įspėjimus, (2) prasminga atskirti klaidingus teigiamus rezultatus ir (3) nepastebi protokolui būdingos rizikos. Lentelėje užpildykite stulpelius „Rasta transporto priemonė / AI paaiškinta / Patvirtino žmogus“.
kontrolinis sąrašas
- [ ] Pastačiau liuką kaip valdymo sluoksnį.
- [ ] Kartu naudojau statinės analizės įrankį + AI + žmogų.
- [ ] Ieškojau žinomų modelių kategorijoje pagal kategoriją.
- [ ] Pašalinau klaidingus teigiamus rezultatus su patvirtinimu.
- [ ] Aš pasitikėjau žmonėmis silpnose srityse, tokiose kaip MEV / verslo logika.
- [ ] Aš nepasiūliau „švaraus valymo“ kaip užtikrinimo.
- [ ] dirbau tik gynybos tikslais; Išnaudojimų nekūriau.