Subiecte populare
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Bine ați venit la Sherlock's Vulnerability Spotlight! În fiecare săptămână, vom evidenția o vulnerabilitate de impact pe care cercetătorii noștri au descoperit-o în timpul unui audit Sherlock.
Săptămâna aceasta avem o retragere excesivă prin configurare greșită.
A fost găsit de @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 și @0xleastwood în concursul @NotionalFinance V3.

Dacă currentBalance este de 999.900 USDC și withdrawAmountExternal este de 1.000.000 USDC, atunci există un sold insuficient în contract și trebuie retrase fonduri suplimentare de pe piața monetară (de exemplu, Compound).

Deoarece contractul are deja 999.900 USDC, doar încă 100 USDC trebuie retrași de pe piața monetară pentru a îndeplini cererea de retragere de 1.000.000 USDC
Cu toate acestea, în loc să retragă 100 USDC de pe piața monetară, Notional retrage 1.000.000 USDC de pe piață conform funcției oracle.getRedemptionCalldata(withdrawAmountExternal). Ca urmare, un exces de 999.900 USDC este retras de pe piața monetară.
Care este impactul?
Acest lucru a dus la o cantitate excesivă de active care au rămas inactive în Notional și nu au generat randamente sau dobânzi pe piața monetară, ceea ce a dus la o pierdere semnificativă a randamentului pentru utilizatori, deoarece aceștia ar primi o rată a dobânzii mai mică decât se aștepta și ar suferi pierderi de oportunitate.
Atacatorii ar putea abuza de acest lucru pentru a atrage fondurile pe care Notional le-a investit pe piața monetară, ceea ce ar duce la pierderi amețitoare de randamente/dobânzi pentru protocol.
Soluția:
În esență, înainte de remediere, codul îi spunea oracolului: "Pregătește pași pentru a retrage tot ce dorește utilizatorul de pe piața monetară".
Când ar fi trebuit să spună: "Scoateți doar ceea ce ne lipsește de pe piața monetară".

După remediere, pentru exemplul anterior, cei 999.900 USDC deja deținuți de contract rămân neatinși și continuă să obțină randament, îmbunătățind eficiența și păstrând randamentele pentru toți utilizatorii.
Această vulnerabilitate a rezultat dintr-un defect logic subtil în modul în care au fost calculate și aprobate sumele de retragere. Prin trecerea cu vederea a soldului existent al contractului, sistemul a retras în mod inutil fonduri excesive de pe piața monetară, ceea ce a dus la ineficiență de capital și pierderi de randament.
Suntem mândri că am ajutat la securizarea Notional prin această descoperire. Când trebuie neapărat să fie sigur, Sherlock este alegerea potrivită.
2,84K
Limită superioară
Clasament
Favorite