Benvenuti nel Vulnerability Spotlight di Sherlock! Ogni settimana, metteremo in evidenza una vulnerabilità significativa scoperta dai nostri ricercatori durante un audit di Sherlock. Questa settimana abbiamo un prelievo eccessivo a causa di una misconfigurazione. È stato scoperto da @bin2chen, @TheCHADuke, iglyx, @tapired, @xiaoming9090 e @0xleastwood nel contest @NotionalFinance V3.
Se il currentBalance è 999.900 USDC e il withdrawAmountExternal è 1.000.000 USDC, allora non ci sono fondi sufficienti nel contratto e devono essere prelevati ulteriori fondi dal mercato monetario (ad esempio, Compound).
Poiché il contratto ha già 999.900 USDC, è necessario prelevare solo ulteriori 100 USDC dal mercato monetario per soddisfare la richiesta di prelievo di 1.000.000 USDC.
Tuttavia, invece di ritirare 100 USDC dal mercato monetario, Notional ritira 1.000.000 USDC dal mercato secondo la funzione oracle.getRedemptionCalldata(withdrawAmountExternal). Di conseguenza, viene ritirato un eccesso di 999.900 USDC dal mercato monetario.
Qual è l'impatto? Questo ha portato a un'eccessiva quantità di asset inattivi in Notional che non generavano alcun rendimento o interesse nel mercato monetario, il che ha comportato una significativa perdita di rendimento per gli utenti, poiché avrebbero ricevuto un tasso d'interesse inferiore a quello previsto e subito una perdita di opportunità.
Gli attaccanti potrebbero potenzialmente abusare di questo per prelevare i fondi che Notional ha investito nel mercato monetario, portando a un griefing e a una perdita straordinaria di rendimenti/interessi per il protocollo.
La Soluzione: Fondamentalmente, prima della soluzione, il codice diceva all'oracolo: "Prepara i passaggi per ritirare tutto ciò che l'utente desidera dal mercato monetario." Quando avrebbe dovuto dire: "Tira solo ciò che ci manca dal mercato monetario."
Dopo la correzione, per l'esempio precedente, i 999.900 USDC già detenuti dal contratto rimangono intatti e continuano a generare rendimento, migliorando l'efficienza e preservando i ritorni per tutti gli utenti.
Questa vulnerabilità derivava da un sottile difetto logico nel modo in cui venivano calcolati e passati gli importi dei prelievi. Trascurando il saldo esistente del contratto, il sistema ha prelevato inutilmente fondi eccessivi dal mercato monetario, portando a inefficienza del capitale e perdita di rendimento. Siamo orgogliosi di aver contribuito a garantire la sicurezza di Notional attraverso questa scoperta. Quando è assolutamente necessario essere sicuri, Sherlock è la scelta giusta.
Mostra originale
Il contenuto di questa pagina è fornito da terze parti. Salvo diversa indicazione, OKX non è l'autore degli articoli citati e non rivendica alcun copyright sui materiali. Il contenuto è fornito solo a scopo informativo e non rappresenta le opinioni di OKX. Non intende essere un'approvazione di alcun tipo e non deve essere considerato un consiglio di investimento o una sollecitazione all'acquisto o alla vendita di asset digitali. Nella misura in cui l'IA generativa viene utilizzata per fornire riepiloghi o altre informazioni, tale contenuto generato dall'IA potrebbe essere impreciso o incoerente. Leggi l'articolo collegato per ulteriori dettagli e informazioni. OKX non è responsabile per i contenuti ospitati su siti di terze parti. Gli holding di asset digitali, tra cui stablecoin e NFT, comportano un elevato grado di rischio e possono fluttuare notevolmente. Dovresti valutare attentamente se effettuare il trading o detenere asset digitali è adatto a te alla luce della tua situazione finanziaria.