Hvad er Integer Overflow Attack?
Integer Overflow Attack opstår, når et programs tal når sin maksimumværdi og ruller tilbage, så en angriber kan manipulere saldi eller grænser. I krypto kan den tilbagevending få en kontrol som "har du nok tokens?" til at blive et ja, når svaret burde være nej. Forestil dig en gammel bils kilometertæller, der går fra 999999 til 000000, men med penge på spil.
»Moderne compilere gør dette umuligt.« Ikke helt. Mange smarte kontrakter bruger stadig ukontrolleret aritmetik visse steder, specialiseret matematik eller assembly, som kan genindføre overflow-fejl.
Hvordan Integer Overflow Attack fungerer
Her er en kort gennemgang med en tokenkontrakt som eksempel.
- Trin 1: Kontrakten gemmer saldi med heltal af fast størrelse og har en funktion, der lægger til, trækker fra eller ganger beløb.
- Trin 2: Angriberen vælger input, der skubber et tal forbi dets maksimum, hvilket får det til at rulle rundt til en lille eller nul-lignende værdi.
- Trin 3: Den tilbagevending får en kontrol til at gå igennem. Eksempel: efter tilbagevending ser saldoen enorm ud eller en overførselsgrænse ser meget lille ud, så et require accepteres.
- Trin 4: Angriberen præger ufortjente tokens, omgår et loft eller overfører midler, de ikke burde kunne flytte.
- Trin 5: De flytter gevinsterne gennem handler eller broer og stikker af inden nogen opdager det.
Ægte historie: flere ERC 20 tokens havde engang en fejl i batch overflow, der lod angribere præge absurde mængder, for derefter at sælge dem på børserne. Ja, det skete.
Hvorfor Integer Overflow Attack er vigtigt
Hvis du holder tokens, bygger apps eller handler DeFi, bør du være opmærksom. Det handler om tal, og tal driver krypto.
- Fordel: At vide, hvordan det virker, hjælper dig med at opdage røde flag tidligt og beskytte dine penge.
- Perspektiv: Aritmetiske fejl er tidløse. Nye kæder og værktøjer dukker op, men matematiske fejl bliver stadig udnyttet af professionelle.
- Relevans: Du vil se det i tokenforsyningsberegninger, belønningssystemer, NFT tællere og populære dApps, der håndterer brugerbalancer.
I Solidity skal du lade aritmetik være tjekket som standard og holde unchecked blokke små og reviderede. Tilføj fuzztests, der prøver ekstreme værdier, ikke kun de almindelige tilfælde.
Vigtige kendetegn ved Integer Overflow Attack
Hvad der adskiller det fra andre fejl:
- Tilbagevending: Tal hopper fra maksimum tilbage til nul som en loopet tæller.
- Tavs: Ingen indbygget fejlmelding hvis matematik er ukontrolleret, så fejl fremstår som gyldige resultater.
- Triggerbart: Ofte kan brugerstyrede input tvinge det præcise øjeblik frem.
- Gentageligt: Når den er fundet, kan angribere lave et script og køre det mod mange mål.
Variationer
Hovedvarianter du vil høre om, samme familie, forskellige ruter:
- Underflow: Subtraktion går under nul og ruller rundt til en kæmpestor værdi.
- Addition: At lægge til en saldo eller forsyning skubber det over maksimum og tilbage til små tal.
- Multiplikation: Belønningsmultiplikatorer eller skalafaktorer får værdien til at overstige grænserne.
- Tæller: Token ID eller forsyningstællere ruller over og tillader, at minting fortsætter ud over loftet.
Integer Overflow Attack er ikke kun i Solidity. Den kan dukke op i Vyper, Rust, Move eller specialiseret assembly, og mange offentligt kendte eksploits kogte ned til ukontrolleret matematik omkring saldi eller forsyninger.
Eksempel
En belønningsfunktion ganger et brugerangivet tal med en stor bonus, værdien ruller rundt, kontrol af loftet passerer, og Integer Overflow Attack gør det muligt for angriberen at præge langt flere tokens end tiltænkt.
Sjovt faktum
Den klassiske arcade-maskine med level 256 kill screen? Den berygtede frysning skyldtes et integer overflow, hvilket viser, at selv retrospil kan komme til at fremvise fejl, som også findes i krypto.
Afrunding
Se Integer Overflow Attack som tal, der tager en omgang, og tyve der løber gennem hullet; hold matematikken tjekket, så du sover bedre.
