Some kan beweren dat de jelly -affaire nauwelijks kan worden geclassificeerd als een exploit, omdat “code is wet” en als hyperliquid niet de moeite zou nemen om te leren hoe ze grote posities en liquidaties moeten verwerken, dan is dat erop.
Semantische debatten opzij, op papier, een handelaar gebruikte een systemische kwetsbaarheid in hyperliquid om te proberen winst te maken door het platform te laten bloeden.
Op 26 maart deponeerde een handelaar $ 7 miljoen over drie rekeningen op HyperLiquid, met twee rekeningen die lange posities innamen – $ 2,15 miljoen en $ 1,9 miljoen op gelei – terwijl de derde rekening een shortpositie van $ 4,1 miljoen innam.
Op dat moment was Jelly niets meer dan een middelmatige token, met een marktkapitalisatie die nauwelijks $ 20 miljoen bereikte – perfect rijp voor prijsmanipulatie.
Na de acties van de handelaar steeg de prijs van jelly binnen een uur met meer dan 429%, waardoor de liquidatie van de shortpositie wordt geactiveerd. De positie was echter te groot om te worden behandeld via traditionele liquidatiekanalen, dus werd het doorgegeven aan de markt voor het maken van hyperliquid, bekend als de hyperliquiditeitsprovider (HLP)-een systeem dat oorspronkelijk is ontworpen om te voorkomen dat extreme volatiliteit catastrofale verliezen veroorzaken.
Dat is precies waar de aanvaller op gokte. Het doel was om de hyperliquiditeitsprovider (HLP) te dwingen de shortpositie over te nemen, deze open te houden en aanzienlijke verliezen te veroorzaken naarmate de financieringspercentages stegen. Dit zou geleidelijk miljoenen uit het systeem aftappen. Als de prijs van Jelly $ 0,15374 had bereikt, had de gehele hyperliquidkluis van $ 230 miljoen het risico kunnen lopen, volgens Gautham, mede-oprichter van Polynomial.
Om verdere verliezen te beperken, schakelde HyperLiquid het Jelly-token na een “twee minuten durende validatorstemmen” op en regelde zijn prijs op $ 0,0095-aanzienlijk lager dan zijn handelsprijs op gedecentraliseerde uitwisselingen, die ongeveer $ 0,50 was, banken $ 700.000 in winst.
In de nasleep kreeg Hyperliquid geconfronteerd met een dubbele terugslag: niet alleen vanwege de opvallende kwetsbaarheden, zoals overerving van gedwongen positie, gebrek aan stroomonderbrekers, kleine cap-tokens zonder positielimieten, en een afwezigheid van prijsmanipulatie-waarborgen en geautomatiseerde liquidaties-creëerde een perfecte omgeving voor prijsmanipulatie-maar ook voor de respons op de hack, die de hack benadrukte op de hack, die zijn hoog niveau van gecentraliseerde controle benadrukte.
Ondanks claims van decentralisatie, hebben de acties van het platform, met name de beslissing om het jelly -token te schrappen en zijn prijs vast te stellen op $ 0,0095, oneerlijk slachtoffer van jelly -investeerders, wat aanzienlijke verliezen veroorzaakte voor degenen die tegen veel hogere prijzen hadden gekocht. Deze willekeurige beslissing, genomen zonder duidelijke communicatie of input van de gemeenschap, ondermijnt het vertrouwen in hyperliquid ernstig.
Op 30 maart 2025, Sir. Trading werd gehackt voor meer dan $ 335.000. Hoewel het gestolen bedrag misschien bescheiden lijkt, is het opvallen van deze overval de modus operandi. Het is tot op heden de enige gedocumenteerde exploit die gebruik maakt van de tijdelijke opslagfunctie van Ethereum, geïntroduceerd met de Dencun -upgrade.
Het belangrijkste probleem is dat het kluiscontract van Sir. Trading afhankelijk was van tijdelijke opslag om te controleren wie fondsen mocht intrekken.
Wanneer het kluiscontract met UniSwap interageert om een swap uit te voeren, activeert UniSwap een callback naar de kluis door de uniswapv3Swapcallback -functie aan te roepen.
Om de legitimiteit van de callback te waarborgen, slaat de kluis tijdelijk het adres van de UniSwap -pool op in slot 0x1 in tijdelijke opslag. Deze opslag is tijdelijk en bestaat alleen voor de duur van de uitvoering van de callback.
De reden dat deze stap cruciaal is, is dat het de kluis in staat stelt te bevestigen dat de callback inderdaad afkomstig is van de verwachte UniSwap -pool en niet van een kwaadaardige acteur. De kluis doet deze verificatie door het adres te controleren dat is opgeslagen in slot 0x1.
Wanneer de callback wordt uitgevoerd, vergelijkt de kluis het opgeslagen adres in slot 0x1 met het adres van het contract dat de uniswapv3Swapcallback -functie noemde. Als de twee adressen overeenkomen, weet de kluis dat de callback legitiem uit uniswap is en gaat met de transactie. Als het adres niet overeenkomt, kan de kluis het verzoek afwijzen en ongeautoriseerde toegang voorkomen. De aanvaller exploiteerde een kwetsbaarheid in de afhandeling van UniSwap V3 swap callbacks door het kluiscontract.
In het kluiscontract slaat de uniswapv3Swapcallback -functie tijdelijk het adres van de UniSwap -pool op in slot 0x1 in tijdelijke opslag voor verificatiedoeleinden. Dezelfde opslagsleuf werd echter later hergebruikt om de tokenoverdrachtsbedrag op te slaan, wat leidde tot een opslagbotsing-een scenario waarbij twee verschillende stukken gegevens elkaar in dezelfde geheugenslot overschrijven. De aanvaller was in staat om het tokenoverdrachtsbedrag dat bij de swap betrokken was te regelen.
Hierdoor konden ze een overdrachtsbedrag opgeven dat overeenkwam met de numerieke weergave van hun bewerkte ijdelheidadres. In dit geval is het ijdelheidsadres 0x0000000000001271551295307Acc16ba1e7e0d4281 overeengekomen met het tokenoverdrachtbedrag van 95759995883742311247042417521410689. Slot 0x1, ter vervanging van het originele UniSwap -pooladres.
Het kluiscontract, dat het adres van de UniSwap Pool in slot 0x1 in de verwachting zou zien, heeft in plaats daarvan per ongeluk het ijdelheid van de aanvaller gevonden, omdat het overeenkwam met het overgedragen tokenbedrag. Om deze kwetsbaarheid verder te benutten, heeft de aanvaller een kwaadaardig contract ingezet met behulp van Create2, zodat het adres van het contract identiek was aan het bewerkte ijdelheidsadres.
Toen dit kwaadaardige contract vervolgens uniswapv3Swapcallback werd genoemd, vond de kluis bij het controleren van slot 0x1 hetzelfde adres als degene die de functie (msg.sender) noemde, in de overtuiging dat het de legitieme uniswap -pool is.
Aangezien de kluis op deze cheque vertrouwde om de legitimiteit van de beller te verifiëren, keurde het ten onrechte de callback goed van het contract van de aanvaller, waardoor ze fondsen konden aftappen. Hierdoor kon de aanvaller herhaaldelijk de callback -functie aanroepen, waardoor de fondsen van de kluis werden afgeheven terwijl de oproepen uit de legitieme UniSwap -pool kwamen. De hele aanval werd mogelijk gemaakt door de opslagbotsing, waardoor de aanvaller een beveiligingskritisch adres kon overschrijven met een dat ze controleerden.
Zodra de fondsen waren gestolen, was de aanvaller hen door Railgun gewassen.
Tl; DR:
Sir. Trading vertrouwde op informatie uit een opslagsleuf die te gemakkelijk kon worden gewijzigd. De hacker brute-gedwongen een bijpassend portemonnee-adres, gebruikte een precisie-vervaardigde exploit-sleutel en liet herhaaldelijk de kluis uit door het systeem te misleiden om te geloven dat ze de legitieme uniswap-pool waren.
Protocollen mogen nooit vertrouwen op tijdelijke opslag voor beveiligingskritische controles!
Medio februari 2025 vertrok een aanvaller met $ 9,5 miljoen na het overdreven fondsen van het ZKLEND-protocol. Snel vooruit naar 31 maart – terwijl hij probeerde de gestolen fondsen te witwassen – de aanvaller, die de cryptocurrency -mixer tornado -contant geld had gekozen om hun sporen te verdoezelen, klikte per ongeluk op een nep -tornado -cashwebsite. Als gevolg hiervan werd de hele $ 9,5 miljoen rechtstreeks naar een phishing -oplichter geleid.
Na deze blunder informeerde de aanvaller ZKlend over hun verlies en adviseerde hen zelfs om achter de phishing -oplichter aan te gaan als ze ooit hoopten de gestolen fondsen te herstellen.
