Populær versjon: En enkel "oversettelse" for å tolke analysen av den @CetusProtocol hackeren av teknologisjefen: Dette angrepet avslører et klassisk heltallsoverflytproblem, som manifesteres i dataavkorting under typekonvertering. Tekniske detaljer demontert: 1) Sårbarhetsplassering: Problemet oppstår i typekonverteringsmekanismen til get_amount_by_liquidity-funksjonen, og cast-konverteringen fra U256 til U64 forårsaker tap av data på høyt nivå. 2) Angrepsprosess: 1. Angriperen sender inn en stor mengde likviditetsparametere gjennom add_liquidity-funksjonen; 2. Antall B-tokens som kreves for beregning av systemanrop get_delta_b funksjon; 3. I beregningsprosessen multipliseres de to U128-typedataene, og det teoretiske resultatet skal være U256-type; Nøkkelfeil: U256-resultatet kastes til u64 når funksjonen kommer tilbake, noe som resulterer i avkorting av 128-bits data på høyt nivå. 3) Utnyttelseseffekt: Likviditetskvoten som opprinnelig krevde et stort antall tokens for å prege, kan nå fullføres med bare et svært lite antall tokens. Angriperen skaffer seg en stor andel av likviditeten til en svært lav kostnad, og realiserer deretter arbitrasjen til poolen ved å ødelegge en del av likviditeten. Enkel analogi: Akkurat som å bruke en kalkulator som bare kan vise 8 sifre for å beregne 1 milliard × 1 milliard, kan resultatet av en 20-sifret beregning bare vise de siste 8 sifrene, og de første 12 sifrene forsvinner direkte. Angriperen utnytter dette sikkerhetsproblemet. For å være tydelig: denne sårbarheten har ingenting å gjøre med @SuiNetwork underliggende sikkerhetsarkitektur, og sikkerhets-"herligheten" til Move-språket er fortsatt troverdig foreløpig. Hvorfor? Move-språket har betydelige fordeler når det gjelder ressursstyring og typesikkerhet, og kan effektivt forhindre sikkerhetsproblemer på lavt nivå som dobbeltforbruk og ressurslekkasje. Denne gangen er imidlertid Cetus-protokollen en matematisk feil på applikasjonslogikknivå, ikke en designfeil i selve Move-språket. Nærmere bestemt er Moves typesystem, selv om det er strengt, fortsatt avhengig av utviklerens rette dømmekraft for eksplisitt casting. Når et program aktivt utfører en typekonvertering fra U256 til U64, kan ikke kompilatoren se om dette er tilsiktet eller en logisk feil. I tillegg har denne sikkerhetshendelsen ingenting å gjøre med Suis underliggende kjernefunksjoner som konsensusmekanisme, transaksjonsbehandling og tilstandsstyring. Sui Network utfører bare trofast transaksjonsinstruksjonene som er sendt inn av Cetus-protokollen, og sårbarheten stammer fra de logiske feilene i selve applikasjonslagsprotokollen. For å si det rett ut, ingen mengde avanserte programmeringsspråk kan fullstendig eliminere logiske feil på applikasjonslaget. Move kan forhindre de fleste av de underliggende sikkerhetsrisikoene, men det kan ikke erstatte utviklere med grensekontroll av forretningslogikk og overløpsbeskyttelse av matematiske operasjoner.
After investigating the Cetus exploit transaction, I believe I have identified the root cause of the bug. The issue stems from a type casting from u256 to u64 within the get_amount_by_liquidity function.
Vis originalen
53,95k
151
Innholdet på denne siden er levert av tredjeparter. Med mindre annet er oppgitt, er ikke OKX forfatteren av de siterte artikkelen(e) og krever ingen opphavsrett til materialet. Innholdet er kun gitt for informasjonsformål og representerer ikke synspunktene til OKX. Det er ikke ment å være en anbefaling av noe slag og bør ikke betraktes som investeringsråd eller en oppfordring om å kjøpe eller selge digitale aktiva. I den grad generativ AI brukes til å gi sammendrag eller annen informasjon, kan slikt AI-generert innhold være unøyaktig eller inkonsekvent. Vennligst les den koblede artikkelen for mer detaljer og informasjon. OKX er ikke ansvarlig for innhold som er vert på tredjeparts nettsteder. Beholdning av digitale aktiva, inkludert stablecoins og NFT-er, innebærer en høy grad av risiko og kan svinge mye. Du bør nøye vurdere om handel eller innehav av digitale aktiva passer for deg i lys av din økonomiske tilstand.