Populär version: En enkel "översättning" för att tolka den @CetusProtocol hackarens analys av teknikchefen: Den här attacken exponerar ett klassiskt heltalsspillproblem, som manifesteras i datatrunkering under typkonvertering. Tekniska detaljer demonterade: 1) Sårbarhetsplats: Problemet uppstår i typkonverteringsmekanismen för get_amount_by_liquidity-funktionen, och cast-konverteringen från U256 till U64 orsakar dataförlust på hög nivå. 2) Attackprocess: 1. Angriparen skickar in en stor mängd likviditetsparametrar genom add_liquidity-funktionen; 2. Antalet B-tokens som krävs för beräkning av systemanrop get_delta_b funktion. 3. I beräkningsprocessen multipliceras de två uppgifterna av U128-typ, och det teoretiska resultatet bör vara U256-typ; Nyckelfel: u256-resultatet omvandlas till u64 när funktionen returneras, vilket resulterar i trunkering av 128-bitars data på hög nivå. 3) Utnyttjandeeffekt: Likviditetskvoten som ursprungligen krävde ett stort antal tokens för att prägla kan nu kompletteras med endast ett mycket litet antal tokens. Angriparen får en stor del av likviditeten till en mycket låg kostnad och realiserar sedan arbitrage av poolen genom att förstöra en del av likviditeten. Enkel analogi: Precis som att använda en kalkylator som bara kan visa 8 siffror för att beräkna 1 miljard × 1 miljard, kan resultatet av en 20-siffrig beräkning bara visa de sista 8 siffrorna, och de första 12 siffrorna försvinner direkt. Angriparen utnyttjar denna sårbarhet. För att vara tydlig: denna sårbarhet har inget att göra med @SuiNetwork:s underliggande säkerhetsarkitektur, och säkerhets-"äran" i Move-språket är fortfarande trovärdig för tillfället. Varför? Move-språket har betydande fördelar när det gäller resurshantering och typsäkerhet, och kan effektivt förhindra säkerhetsproblem på låg nivå, till exempel dubbla utgifter och resursläckage. Men den här gången är Cetus-protokollet ett matematiskt fel på applikationslogikens nivå, inte ett designfel i själva Move-språket. Specifikt är Moves typsystem, även om det är rigoröst, fortfarande beroende av utvecklarens rätta bedömning för explicit casting. När ett program aktivt utför en typkonvertering från U256 till U64 kan kompilatorn inte avgöra om detta är avsiktligt eller ett logiskt fel. Dessutom har denna säkerhetsincident inget att göra med Sui:s underliggande kärnfunktioner som konsensusmekanism, transaktionsbehandling och tillståndshantering. Sui Network utför endast troget de transaktionsinstruktioner som skickas in av Cetus-protokollet, och sårbarheten härrör från de logiska bristerna i själva applikationslagerprotokollet. För att uttrycka det rakt på sak kan ingen mängd avancerade programmeringsspråk helt eliminera logiska fel i applikationslagret. Move kan förhindra de flesta av de underliggande säkerhetsriskerna, men det kan inte ersätta utvecklare med gränskontroll av affärslogik och spillskydd av matematiska operationer.
53.45K