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,82 K
35
Conținutul de pe această pagină este furnizat de terți. Dacă nu se menționează altfel, OKX nu este autorul articolului citat și nu revendică niciun drept intelectual pentru materiale. Conținutul este furnizat doar pentru informare și nu reprezintă opinia OKX. Nu este furnizat pentru a fi o susținere de nicio natură și nu trebuie să fie considerat un sfat de investiție sau o solicitare de a cumpăra sau vinde active digitale. În măsura în care AI-ul de generare este utilizat pentru a furniza rezumate sau alte informații, astfel de conținut generat de AI poate să fie inexact sau neconsecvent. Citiți articolul asociat pentru mai multe detalii și informații. OKX nu răspunde pentru conținutul găzduit pe pagini terțe. Deținerile de active digitale, inclusiv criptomonedele stabile și NFT-urile, prezintă un grad ridicat de risc și pot fluctua semnificativ. Trebuie să analizați cu atenție dacă tranzacționarea sau deținerea de active digitale este adecvată pentru dumneavoastră prin prisma situației dumneavoastră financiare.