Välkommen till Sherlock's Vulnerability Spotlight! Varje vecka kommer vi att lyfta fram en effektfull sårbarhet som våra forskare upptäckte under en Sherlock-granskning. Den här veckan har vi ett överdrivet uttag via felkonfiguration. Den hittades av @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 och @0xleastwood i @NotionalFinance V3-tävlingen.
Om currentBalance är 999 900 USDC och withdrawAmountExternal är 1 000 000 USDC, finns det otillräckligt saldo i kontraktet och ytterligare medel måste tas ut från penningmarknaden (t.ex. Compound).
Eftersom kontraktet redan har 999 900 USDC behöver endast ytterligare 100 USDC tas ut från penningmarknaden för att uppfylla begäran om uttag på 1 000 000 USDC
Men istället för att ta ut 100 USDC från penningmarknaden, tar Noional ut 1 000 000 USDC från marknaden enligt funktionen oracle.getRedemptionCalldata(withdrawAmountExternal). Som ett resultat tas ett överskott på 999 900 USDC ut från penningmarknaden.
Vad är effekten? Detta ledde till en alltför stor mängd tillgångar som gick på tomgång i Nominellt och inte genererade någon avkastning eller ränta på penningmarknaden, vilket ledde till en betydande förlust av avkastning för användarna eftersom de skulle få en lägre ränta än väntat och drabbas av möjlighetsförluster.
Angripare kan potentiellt missbruka detta för att dra tillbaka de medel som Noional investerat på penningmarknaden, vilket leder till sorg och häpnadsväckande förlust av avkastning/ränta för protokollet.
Lösningen: I huvudsak, före korrigeringen, sa koden till oraklet: "Förbered steg för att ta ut allt som användaren vill ha från penningmarknaden." När det borde ha sagt: "Ta bara bort det vi saknar från penningmarknaden."
Efter korrigeringen, för det tidigare exemplet, förblir de 999 900 USDC som redan innehas av kontraktet orörda och fortsätter att tjäna avkastning, förbättra effektiviteten och bevara avkastningen för alla användare.
Denna sårbarhet härrörde från ett subtilt logiskt fel i hur uttagsbelopp beräknades och godkändes. Genom att förbise kontraktets befintliga saldo drog systemet i onödan ut för stora mängder pengar från penningmarknaden, vilket ledde till kapitalineffektivitet och avkastningsförluster. Vi är stolta över att ha hjälpt till att säkra Notional genom denna upptäckt. När det absolut måste vara säkert är Sherlock det rätta valet.
Visa original
2,83 tn
35
Innehållet på den här sidan tillhandahålls av tredje part. Om inte annat anges är OKX inte författare till den eller de artiklar som citeras och hämtar inte någon upphovsrätt till materialet. Innehållet tillhandahålls endast i informationssyfte och representerar inte OKX:s åsikter. Det är inte avsett att vara ett godkännande av något slag och bör inte betraktas som investeringsrådgivning eller en uppmaning att köpa eller sälja digitala tillgångar. I den mån generativ AI används för att tillhandahålla sammanfattningar eller annan information kan sådant AI-genererat innehåll vara felaktigt eller inkonsekvent. Läs den länkade artikeln för mer detaljer och information. OKX ansvarar inte för innehåll som finns på tredje parts webbplatser. Innehav av digitala tillgångar, inklusive stabila kryptovalutor och NFT:er, innebär en hög grad av risk och kan fluktuera kraftigt. Du bör noga överväga om handel med eller innehav av digitala tillgångar är lämpligt för dig mot bakgrund av din ekonomiska situation.