Populaire versie: Een eenvoudige "vertaling" om de analyse van de @CetusProtocol hacker door de tech-baas te interpreteren: Deze aanval legt een klassiek probleem met de overloop van gehele getallen bloot, dat zich manifesteert in gegevensafkapping tijdens typeconversie. Technische details gedemonteerd: 1) Locatie van kwetsbaarheden: Het probleem doet zich voor in het typeconversiemechanisme van de get_amount_by_liquidity-functie en de cast-conversie van U256 naar U64 veroorzaakt gegevensverlies op hoog niveau. 2) Aanvalsproces: 1. De aanvaller geeft een grote hoeveelheid liquiditeitsparameters door via de add_liquidity functie; 2. Het aantal B-tokens dat nodig is voor de berekening van de systeemaanroep get_delta_b functie; 3. In het berekeningsproces worden de twee gegevens van het type U128 vermenigvuldigd en moet het theoretische resultaat van het type U256 zijn; Belangrijkste fout: Het u256-resultaat wordt naar u64 gecast wanneer de functie terugkeert, wat resulteert in de afkapping van de 128-bits gegevens op hoog niveau. 3) Gebruikseffect: Het liquiditeitsquotum dat oorspronkelijk een groot aantal tokens vereiste om te minten, kan nu worden voltooid met slechts een zeer klein aantal tokens. De aanvaller verkrijgt een enorm deel van de liquiditeit tegen zeer lage kosten en realiseert vervolgens de arbitrage van de pool door een deel van de liquiditeit te vernietigen. Eenvoudige analogie: net als bij het gebruik van een rekenmachine die slechts 8 cijfers kan weergeven om 1 miljard × 1 miljard te berekenen, kan het resultaat van een 20-cijferige berekening alleen de laatste 8 cijfers weergeven en verdwijnen de eerste 12 cijfers direct. De aanvaller maakt misbruik van dit beveiligingslek. Voor alle duidelijkheid: deze kwetsbaarheid heeft niets te maken met de onderliggende beveiligingsarchitectuur van @SuiNetwork, en de beveiligingsglorie van de Move-taal is voorlopig nog geloofwaardig. Waarom? De Move-taal heeft aanzienlijke voordelen op het gebied van resourcebeheer en typebeveiliging, en kan beveiligingsproblemen op laag niveau, zoals dubbele uitgaven en het weglekken van resources, effectief voorkomen. Deze keer is het Cetus-protocol echter een wiskundige fout op het niveau van de applicatielogica, geen ontwerpfout in de Move-taal zelf. Met name het typesysteem van Move, hoewel rigoureus, vertrouwt nog steeds op het juiste oordeel van de ontwikkelaar voor expliciete casting. Wanneer een programma actief een typeconversie uitvoert van U256 naar U64, kan de compiler niet zeggen of dit opzettelijk is of een logische fout. Bovendien heeft dit beveiligingsincident niets te maken met de onderliggende kernfuncties van Sui, zoals het consensusmechanisme, de verwerking van transacties en statusbeheer. Sui Network voert alleen getrouw de transactie-instructies uit die door het Cetus-protocol zijn ingediend, en de kwetsbaarheid komt voort uit de logische gebreken van het protocol van de applicatielaag zelf. Om het botweg te zeggen, geen enkele hoeveelheid geavanceerde programmeertalen kan logische fouten op de applicatielaag volledig elimineren. Move kan de meeste onderliggende beveiligingsrisico's voorkomen, maar het kan ontwikkelaars niet vervangen door grenscontrole van bedrijfslogica en overloopbeveiliging van wiskundige bewerkingen.
53.44K