Ieguvumi:
- Spēja atpazīt izplatītus ievainojamības modeļus, piemēram, atkārtotu ieeju, piekļuves kontroli, orākula manipulācijas un priekšējo darbību, un skenēt tos, izmantojot statiskās analīzes rīku + mākslīgo intelektu + cilvēku
- Spēja atšķirt mākslīgā intelekta stiprās puses, izskaidrojot rīka izvadi un piešķirot prioritāti viltus pozitīvajiem rezultātiem un vājajām vietām MEV un biznesa loģikā
- Saprotiet, ka "tīra skenēšana" nav drošības sertifikāts, ka skenēšana ir tikai viens kontroles līmenis
Mēs redzējām revīzijas holistisko disciplīnu iepriekšējā nodaļā. Šajā nodaļā mēs koncentrējamies uz tehniskāku tēmu: ievainojamību skenēšana — sistemātiska zināmu ievainojamību modeļu meklēšana kodā. Šeit mēs izmantosim AI kopā ar statiskās analīzes rīkiem kā palīgu, kas skenē un apraksta zināmos ievainojamības modeļus. Mērķis: padziļināti iepazīt izplatītākās ievainojamības un atšķirt, kur AI ir uzticams un kur nepietiekams to skenēšanai.
Statiskā un dinamiskā skenēšana
Skenēšana ir divu veidu. Statiskā analīze — koda pārbaude, to nepalaižot: tādi rīki kā Slither un Mythril skenē līguma kodu un atzīmē zināmos modeļus. Šajā grupā ietilpst dinamiskā/simboliskā analīze (koda palaišana ar dažādiem ievadiem vai tā matemātiska izpēte): izplūde (bombardēšana ar nejaušu ievadi) un simboliskā izpilde (visu iespējamo ceļu izpēte).
AI neaizstāj šos rīkus, tas tos papildina: kad transportlīdzeklis izdod brīdinājumu, AI paskaidro brīdinājumu vienkāršā valodā; AI var atgādināt, kad rīks izlaiž kādu rakstu; Taču AI vien nevar garantēt, cik daudz tas skenē. Pareizā darbplūsma: rīks + AI + cilvēks.
Padoms. Sniedziet mākslīgajam intelektam statiskās analīzes rīka izvadi (piemēram, Slither ziņojumu) un jautājiet: “Izskaidrojiet katru brīdinājumu vienkāršā valodā, kuri ir reāli riski un kuri varētu būt kļūdaini pozitīvi?” jautāt. AI ir nenovērtējams, lai padarītu neapstrādātu rīku izvadi cilvēkiem saprotamu un prioritāru.
Visizplatītākie ievainojamības modeļi
1. Atkārtota ieeja. Ja funkcija izsauc ārēju līgumu, neatjauninot tā stāvokli, izsauktais līgums var atgriezties, atkal aktivizēt to pašu funkciju un izņemt fondu vairākas reizes. Risinājums: pārbaužu-efektu-mijiedarbības kārtība un atkārtotas ieejas aizsargs.
2. Piekļuves kontroles trūkums. Kritiskā funkcija (izņemšana, izņemšana, jaunināšana) tiek nejauši publiskota. Tā ir viena no visizplatītākajām un dārgākajām kļūdām.
3. Orākulu manipulācijas. Līguma akla paļaušanās uz ārēju cenu avotu (orākulu). Uzbrucējs uzreiz manipulē ar cenu un maldina protokolu. Risinājums: laika svērtā vidējā cena (TWAP), vairāku avotu.
4. Vesela skaitļa pārpilde/izkrišana. Kad skaitlis pārsniedz maksimālo atļauto vērtību un atgriežas sākumā. Modern Solidity lielāko daļu noķer automātiski, taču risks saglabājas zema līmeņa (montāžas) kodā.
5. Priekšējais skrējiens. Darījumi parādās publiskajā pūlā (mempool), pirms tie tiek apstiprināti; Uzbrucējs var redzēt jūsu darījumu un ievietot tam priekšā savu darījumu. MEV (Maksimālā ekstrahējamā vērtība — vērtība, kas iegūta no darījumu secības) ir šī priekšmeta vispārīgais nosaukums.
6. Pakalpojuma atteikums (DoS). Cilpa kļūst pārāk dārga un padara funkciju nelietojamu, vai arī tiek bloķēta atkarība no adreses.
7. Jaunināšanas riski. Krātuves sadursme un pilnvaru ļaunprātīga izmantošana jaunināmos līgumos.
ievainojamība
AI skenēšanas uzticība
Kāpēc
atkārtota ienākšana
augsts
Labi zināms, skaidrs raksts
piekļuves kontrole
augsts
Veidni var skenēt
Veselu skaitļu darbības
augsts
standarta vadība
Orākulu manipulācijas
vidējs
Nepieciešams konteksts
Priekšējais/MEV
Vidēji zems
specifisks protokols
biznesa loģikas kļūda
zems
Autentisks, kontekstuāls
Vāja uzvedne / spēcīga uzvedne
Vāja uzvedne:
Vai šajā kodā ir nepilnības?
Spēcīga uzvedne:
Jūsu loma: drošības pārbaudes palīgs. Skenējiet tālāk norādīto līgumu, lai atrastu šādus zināmos modeļus un "risks/nav/nepārliecināts" katram: atkārtota ieeja, piekļuves kontrole, veselu skaitļu darbības, atkarība no oracle, front-running, DoS, jaunināšanas drošība. Saistiet katru noteikšanu ar attiecīgo rindiņu un paskaidrojiet, kāpēc pastāv risks. Šīs ir hipotēzes, kuras tiks PĀRBAUDĪTAS ar statiskās analīzes rīku un auditoru. Ņemiet vērā, ka var būt kļūdaini pozitīvi rezultāti.
Četras kopējamas veidnes
1) Rīka izvades apraksts:
Tālāk ir sniegts statiskās analīzes rīka (Slither) pārskats. Izskaidrojiet katru brīdinājumu vienkāršā valodā: ko tas nozīmē, vai tas ir reāls risks vai iespējams viltus pozitīvs rezultāts, kādai jābūt tā prioritātei? Nepieņemiet stingru lēmumu; Prioritāte auditora apstiprināšanai.
2) Uz atkārtotu ieeju vērsta skrīnings:
Šajā līgumā atrodiet visas funkcijas, kas veic ārējos zvanus. Pārbaudiet, vai katram no tiem tiek ievērota pārbaužu-efektu-mijiedarbības secība un vai pastāv atkārtotas ieejas aizsargs. Parādiet riskantos ar līniju. Atzīmējiet, ja neesat pārliecināts; Ekspluatācijas koda ģenerēšana.
3) Piekļuves kontroles karte:
Šajā līgumā uzskaitiet visas ārējās/publiskās funkcijas un katrai norādiet "kas var zvanīt" (visi/īpašnieks/lomas). Veiciet kritiskās darbības (izņemšana, drukāšana, jaunināšana) un atzīmējiet tās ar vāju piekļuves kontroli. Pasniedziet to ar tabulu.
4) Viltus pozitīva izslēgšana:
Apsveriet, kāpēc šis skenēšanas brīdinājums varētu nebūt REĀLS risks (viltus pozitīvs): kāds konteksts vai koda nosacījums padarītu šo brīdinājumu nederīgu? Bet nesaki "nav absolūti nekādu problēmu"; Uzskaitiet punktus, kuriem nepieciešams apstiprinājums.
Trīs mini futrāļi (skaitļos)
1. gadījums — transportlīdzekļa un mākslīgā intelekta efektivitāte ir dubultota. Viena komanda vadīja Slither 12 līgumu projektā un saņēma 140 brīdinājumus. Kad AI bija izskaidrojis brīdinājumus un noteicis to prioritāti, izrādījās, ka 95 no 140 brīdinājumiem bija kļūdaini pozitīvi; Komanda koncentrējās uz 45 reāliem kandidātiem. Triāžas laiks samazinājās no 2 dienām līdz 5 stundām. Nodarbība: mākslīgais intelekts ir spēcīgs, lai humanizētu transportlīdzekļa jaudu.
2. gadījums — AI nolaupīja MEV. DEX (decentralizētas apmaiņas) līgumā AI konstatēja, ka standarta modeļi ir tīri, bet neizdevās atklāt ievainojamību; jo tas bija raksturīgs protokola darbību secībai. Cilvēka auditors un simulācija notverti. Nodarbība: Protokolam raksturīgi riski, piemēram, MEV/front-running, ir AI vājā vieta.
3. gadījums — izvairījās tērēt laiku kļūdaini pozitīvam rezultātam. Komanda tika aiztaupīta no nevajadzīgas pārrakstīšanas, kad AI paskaidroja, ka brīdinājums par atkārtotu ieeju patiesībā bija kļūdaini pozitīvs (funkcija jau bija apsargāta). Bet komanda to joprojām apstiprināja ar vienu pārbaudi. Nodarbība: AI nosaka prioritātes; Apstiprinājums atkal nāk ar testēšanu.
Skenēšanas ierobežojumi
Skenēšana atrod zināmus modeļus. Ne rīks, ne AI nevar noteikt jaunu, unikālu vai protokolam raksturīgu ievainojamību. Tāpēc skrīnings ir daļa no audita; nevis pats. Ideja, ka "skenēšana ir tīra, tātad tas nozīmē, ka tā ir droša" ir viens no bīstamākajiem maldiem šajā jomā. Bagarēšana savāc zemu nokarenos augļus; Attiecībā uz dziļiem un unikāliem riskiem būtiskas ir cilvēku zināšanas, testēšana, izplūdes un formāla revīzija.
Uzmanību! Skenēšanas rīka vai AI “tīrs” ziņojums nav drošības sertifikāts. Tā prezentēšana — īpaši investoriem — ir maldinoša un neētiska.
Biežas kļūdas
- Skrīninga aizstāšana ar pārbaudi. Skenēšana ir viens slānis, nevis viss.
- AI izmantošana bez instrumentiem. Statiskā analīze + AI + cilvēka darbs kopā.
- Viltus pozitīvu rezultātu novēršana bez apstiprinājuma. Katrs ekrāns ir pārbaudīts/cilvēks pārbaudīts.
- Protokolam raksturīgo risku (MEV) apiešana, paļaujoties uz AI. AI vājā zona.
- Domājot "tīra skenēšana" = "drošs". Tā nevar atrast nezināmo.
- Ekspluatācijas koda ģenerēšana. Leģitīms ir tikai aizsardzības riska apraksts.
Rezumējot
- Ievainojamības skenēšana meklē zināmus ievainojamības modeļus, izmantojot transportlīdzekli + AI + cilvēku.
- AI spēj izskaidrot statiskās analīzes rīka izvadi un noteikt to prioritāti.
- Uzticama skaidrās shēmās, piemēram, atkārtota ieeja un piekļuves kontrole; Vājš MEV un biznesa loģikā.
- Pat viltus pozitīvu rezultātu novēršanai ir nepieciešams apstiprinājums.
- "Tīra skenēšana" nav drošības sertifikāts; Tas neaizstāj uzraudzību.
Lietojumprogrammas uzdevums
Palaidiet statiskās analīzes rīku līguma paraugā (ja iespējams) vai atrodiet gatavu Slither pārskatu. Lietojiet AI uzvedni "rīka izvades apraksts". Novērtējiet, vai AI: (1) pareizi izskaidro brīdinājumus, (2) ir jēga atšķirt viltus pozitīvus rezultātus un (3) neievēro protokolam raksturīgu risku. Tabulā aizpildiet slejas “Transportlīdzeklis atrasts / AI paskaidrots / cilvēks apstiprināja”.
kontrolsaraksts
- [ ] Es novietoju lūku kā vadības ierīces slāni.
- [ ] Es izmantoju statiskās analīzes rīku + AI + cilvēku kopā.
- [ ] Es meklēju zināmos modeļus kategorijās pēc kategorijas.
- [ ] Es novērsu viltus pozitīvus rezultātus ar apstiprinājumu.
- [ ] Es paļāvos uz cilvēkiem tādās vājās jomās kā MEV/biznesa loģika.
- [ ] Es nepiedāvāju "tīru slaucīšanu" kā garantiju.
- [ ] Es strādāju tikai aizsardzības nolūkos; Es neradīju varoņdarbus.