Il 3 gennaio, il progetto Radiant Capital ha subito un grave attacco con prestito flash, con la conseguente perdita di 1.900 ETH (circa 4,5 milioni di dollari). Radiant Capital è un protocollo di prestito cross-chain decentralizzato che consente agli utenti di depositare e prestare vari asset su diverse blockchain, eliminando i silos di liquidità.

Secondo i dati on-chain, l’hacker ha approfittato di una finestra temporale per l’attivazione di un nuovo mercato e di un problema di arrotondamento nel codice base Compound/Aave per eseguire un attacco flash Loan. Questo metodo di attacco si riferisce al prestito di una grande quantità di fondi, al completamento di una serie di operazioni all'interno di un blocco e alla restituzione dei fondi prima della fine del blocco per realizzare un profitto.

Attacco di vulnerabilità brevemente

Secondo quanto riferito da PeckShield e PeckShield, gli aggressori hanno sfruttato una vulnerabilità informatica in Radiant Capital, consentendo loro di ritirare grandi quantità di USDC a prezzi bassi controllando precisione e arrotondamento. L'USDC è una valuta stabile il cui valore è ancorato al dollaro USA ed è uno degli asset comunemente utilizzati nei protocolli finanziari decentralizzati.

Il processo di attacco dell'aggressore è il seguente:

1. L'aggressore ha prima preso in prestito 3 milioni di USDC tramite il prestito flash AAVE da utilizzare come fondi di avvio per l'attacco. I prestiti flash si riferiscono al prestito di una grande quantità di fondi, al completamento di una serie di operazioni all'interno di un blocco e alla restituzione dei fondi prima della fine del blocco per realizzare un profitto.

2. L'aggressore ha promesso 2 milioni di USDC al contratto Radiant e ha ottenuto 2 milioni di token di certificato rUSDCn.

3. L'attaccante esegue un prestito flash tramite il contratto Radiant, prende in prestito 2 milioni di USDC, restituisce i 2 milioni di USDC nella funzione di callback ed estrae gli USDC impegnati nel secondo passaggio. Infine, la funzione di prestito flash chiamerà la funzione transferfrom trasferire gli USDC dell'attaccante nel contratto. In questo momento, verrà addebitata una commissione di gestione di 9/10000 e la commissione di gestione raccolta diventerà la liquidità del pool.

4. Ripetendo il passaggio 3 molte volte, l'aggressore controlla che il liquidityIndex sia molto grande, liquidityIndex=27180000000099999999999998631966035920. LiquidityIndex è una variabile utilizzata nel contratto Radiant per registrare la crescita della liquidità. Aumenterà con l'accumulo di tempo e interessi.

5. Successivamente, l'attaccante crea un nuovo contratto e vi inserisce 543.600 USDC, perché 5436 (valore USDC) è esattamente il doppio del 2718 (valore liquidityIndex) nel passaggio 4, che può essere facilmente controllato mediante arrotondamento.

6. L'aggressore ha ipotecato tutti i 543.600 USDC nel contratto Radiant e ha ottenuto lo stesso importo in rUSDCn.

7. L'aggressore ha estratto 407.700 USDC, che avrebbero dovuto distruggere 407.700 rUSDCn, ma come accennato in precedenza, la funzione di masterizzazione ha eseguito calcoli di espansione e arrotondamento di precisione. 40770000000000000000000000000000000000/271800000000999999999999998631966035920=1,49999999 e il risultato dell'arrotondamento è 1, quindi il risultato sarà 1/3 più piccolo. Come mostrato nell'immagine qui sotto, 407.700 USDC avrebbero dovuto essere distrutti, ma ne sono rimasti 271.800, indicando che solo 271.800 sono stati distrutti e l'attaccante ha ritirato 407.700 USDC.

8. L'aggressore sfrutta la vulnerabilità nel passaggio 7 per ripetere l'operazione di ritiro del pegno, e il ritiro è sempre 1/3 superiore all'importo promesso, e infine scambia tutti gli USDC nel pool.

I fondi al momento non sono a rischio

Radiant Capital ha riconosciuto il problema nella sua carica ufficiale e ha affermato di aver sospeso il mercato dei prestiti su Arbitrum e di stare indagando sulla causa e sull'impatto dell'incidente. Arbitrum è una soluzione di ridimensionamento di secondo livello che aumenta la velocità delle transazioni e riduce i costi su Ethereum. Radiant Capital ha inoltre affermato che nessun fondo utente è attualmente a rischio e prevede di emettere un rapporto di rilevamento e riprendere le operazioni una volta risolto il problema.

Conclusione:

Questo incidente ci ricorda ancora una volta che la sicurezza dei protocolli finanziari decentralizzati è fondamentale e deve essere continuamente controllata e testata per prevenire potenziali vulnerabilità e attacchi. Gli utenti dovrebbero inoltre essere consapevoli dei rischi e partecipare solo a prestiti e investimenti su piattaforme affidabili. Sebbene Radiant Capital abbia subito pesanti perdite, ha anche mostrato un atteggiamento positivo e senso di responsabilità, sperando di poter recuperare e migliorare la sicurezza e la stabilità del suo protocollo il prima possibile. Allo stesso tempo, spero anche che altri protocolli finanziari decentralizzati possano imparare da questo incidente, rafforzare le proprie precauzioni di sicurezza e fornire agli utenti servizi ed esperienze migliori. #RadiantCapital #黑客攻击