Tempo di lettura: 5 minuti



Panoramica:

Ancora una volta un attacco che mette insieme un banale errore umano con la scaltrezza di chi se ne accorge e orchestra le azioni per sfruttare tale errore.

Il 13 aprile 2023, Yearn Finance ha subito una perdita di circa 11,5 milioni di dollari a causa di una violazione della sicurezza che ha permesso ad un attaccante di creare token yUSDT aggiuntivi. Questo è stato possibile a causa di un indirizzo iUSDC non configurato correttamente durante la distribuzione, che ha permesso all'attaccante di generare ulteriori token utilizzando un piccolo deposito di USDT.

Cos’è Yearn Finance

Yearn Finance (abbreviato in YFI) è un protocollo di finanza decentralizzata (DeFi) basato sulla blockchain Ethereum. Il protocollo è stato lanciato nel 2020 da Andre Cronje, uno sviluppatore di software e blockchain.

Il protocollo Yearn Finance è progettato per semplificare il processo di investimento in DeFi. Il protocollo utilizza un insieme di strategie di investimento automatizzate, chiamate "strategie di yield farming", per massimizzare il rendimento degli investimenti dei suoi utenti.

Gli utenti di Yearn Finance possono depositare criptovalute come Ether (ETH) o Stablecoin come USDC o DAI all'interno del protocollo, che poi utilizza queste risorse per investire in diverse piattaforme di DeFi allo scopo di massimizzare i rendimenti. In cambio, gli utenti ricevono YFI, il token nativo del protocollo Yearn Finance, che possono utilizzare per votare sulle decisioni di governance del protocollo.

L’attacco in sintesi

L'attaccante ha sfruttato la configurazione errata del token yUSDT su Yearn Finance e ha utilizzato il token iUSDC di Fulcrum invece del token iUSDT previsto. Ciò ha consentito all'hacker di creare 1,2 quadrilioni di token yUSDT con un deposito di 10.000 dollari, che sono stati poi scambiati con vari stablecoin come DAI, USDC, BUSD, TUSD e USDT.

Sebbene abbia utilizzato Aave V1 per una serie di swap, il team di Aave ha confermato che il suo protocollo non è stato sfruttato nell'attacco e che Aave V1 non è stato influenzato, sottolineando che la causa principale dell'hack era il token yUSDT non configurato correttamente, non Aave.

Informazioni sull’attaccante:

  • Indirizzo: 0x5baC20BEef31d0ECCb369A33514831eD8e9cdfE0

link: https://etherscan.io/address/0x5bac20beef31d0eccb369a33514831ed8e9cdfe0

  • Wallet 1: 0x16Af29b7eFbf019ef30aae9023A5140c012374A5

link: https://etherscan.io/address/0x16Af29b7eFbf019ef30aae9023A5140c012374A5

  • Wallet 2: 0x6f4A6262d06272c8B2E00Ce75e76d84b9D6F6aB8

link: https://etherscan.io/address/0x6f4A6262d06272c8B2E00Ce75e76d84b9D6F6aB8

Contratto pool di prestito Aave V1:

  • Indirizzo: 0x398eC7346DcD622eDc5ae82352F02bE94C62d119

link: https://etherscan.io/address/0x398ec7346dcd622edc5ae82352f02be94c62d119#code

Contratto yUSDT vulnerabile:

  • Indirizzo: 0x83f798e925BcD4017Eb265844FDDAbb448f1707D

link: https://etherscan.io/address/0x83f798e925BcD4017Eb265844FDDAbb448f1707D#code

Panoramica della transazione:

  • Hash della transazione: 0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d

link: https://etherscan.io/tx/0xd55e43c1602b28d4fd4667ee445d570c8f298f5401cf04e62ec329759ecda95d


Scomponiamo l’attacco:

L'attacco a Yearn Finance è stato causato da una configurazione errata che ha fatto sì che il riequilibrio dei pool si basasse su un token sottostante errato. Uno dei pool di strategie, Fulcrum, è stato configurato con l'indirizzo sbagliato, con USDC come token sottostante del pool mal configurato.

L'attaccante ha iniziato l'attacco finanziandolo con 10 ETH usando TornadoCash l’11 aprile 2023, e successivamente ha creato un contratto malevolo il 13 aprile 2023.

L'attaccante ha ottenuto un flash loan per finanziare l'attacco e gradualmente ha restituito il prestito in USDT con il pool di Aave.


L'attaccante ha effettuato un sofisticato attacco che ha sfruttato due protocolli DeFi: Aave V1 e yUSDT/ycUSDT. Aave V1 è una piattaforma di prestito decentralizzata che consente agli utenti di depositare le loro criptovalute e guadagnare interessi su di esse. Il tasso di interesse offerto da Aave V1 viene regolato in modo algoritmico in base all'offerta e alla domanda degli asset depositati. L'attaccante è riuscito a sfruttare una vulnerabilità nel modello di tasso di interesse di Aave V1, che gli ha permesso di svuotare il tasso di interesse della piattaforma, potenzialmente causando una significativa perdita di fondi per i depositanti.

Inoltre, l'attaccante ha trasferito direttamente Fulcrum USDC, uno stablecoin, al pool yUSDT/ycUSDT. Questo pool implica una combinazione di USDT e cUSDT, e l'attaccante potrebbe aver tentato di manipolare il valore del pool approfittando delle discrepanze di prezzo tra questi asset. Trasferendo direttamente Fulcrum USDC al pool, l'attaccante ha attivato un meccanismo di riequilibrio che ha regolato automaticamente il portafoglio per mantenere le proporzioni desiderate degli asset.


In questo caso specifico, l'attaccante ha utilizzato una vulnerabilità nel processo di creazione di bZxUSDC per manipolare il prezzo di yUSDT. bZxUSDC è un token creato dal protocollo bZx che rappresenta il valore di un deposito USDC nel pool di prestito del protocollo. Creando i token bZxUSDC, l'attaccante è stato in grado di accedere al pool di prestito e manipolare il prezzo di yUSDT, un altro token che rappresenta il valore di un deposito USDT nello stesso pool.

Il prezzo di yUSDT era stato aumentato a causa di una configurazione errata che era avvenuta quando il token Fulcrum iUSDC era stato utilizzato al posto del previsto token Fulcrum iUSDT. Questa configurazione errata era persistita sin dalla pubblicazione del contratto, e l'indirizzo per Fulcrum era stato mal configurato, permettendo all'attaccante di sfruttare la situazione.


Ciò ha causato a yUSDT/ycUSDT di recuperare una grande quantità di USDC, pensando erroneamente che il proprio saldo fosse 0. L'attaccante ha quindi utilizzato la funzione Curve Swap con prezzi di quota significativamente sbilanciati e ha scambiato il yUSDT calcolato in modo errato con le stablecoin, il che ha portato a una perdita di $11,5 milioni e il prestito flash è stato poi restituito.

Conclusione:

Nel complesso, le azioni dell'attaccante dimostrano la natura complessa e interconnessa dell'ecosistema DeFi, nonché i potenziali rischi e le vulnerabilità che esistono al suo interno. Sfruttando le debolezze di un protocollo, l'attaccante è stato in grado di influenzare il funzionamento di un altro protocollo e potenzialmente causare perdite finanziarie per gli utenti. Inoltre, le azioni dell'attaccante sono state in grado di sfruttare la vulnerabilità bZxUSDC e causare un significativo riequilibrio del pool, che avrebbe potuto comportare perdite finanziarie per gli utenti.

L'incidente sottolinea l'importanza di test approfonditi e di audit dei protocolli DeFi per prevenire lo sfruttamento di tali vulnerabilità. In questo caso, un errore di configurazione ha permesso all'attaccante di accedere al pool e manipolare il prezzo, dimostrando la necessità di una scrupolosa attenzione ai dettagli nello sviluppo e nella distribuzione di smart contract.

In conclusione, per mantenere l'integrità e la sicurezza di Web3, le misure di sicurezza proattive come la rilevazione di anomalie sono cruciali. Monitorando la blockchain in tempo reale, le piattaforme di sicurezza possono rilevare le anomalie tempestivamente e prevenire gli attacchi informatici. La priorità della sicurezza proattiva nell'ecosistema DeFi in continua crescita è fondamentale per prevenire tali exploit in futuro e per consentire alla comunità di Web3 di costruire un ecosistema più resiliente e affidabile che attiri nuovi utenti e consenta un futuro decentralizzato.

Tuttavia, non si tratta solo di rilevare anomalie in tempo reale. È anche cruciale testare attentamente la logica del codice prima di distribuirlo sulla rete principale per mitigare le vulnerabilità potenziali e prevenire incidenti simili. L'attacco avrebbe potuto essere evitato se durante il processo di distribuzione fosse stata eseguita una valida convalida e conferma dell'indirizzo Fulcrum prima che venisse codificato nell'architetto e distribuito nell'ambiente di produzione/rete.

La missione di SCT ITALIA è quella di sensibilizzare sviluppatori ed aziende sulla sicurezza degli smart contract. Con l'aumentare della complessità dell'ecosistema blockchain, è vitale impegnarsi con i servizi di fornitori professionisti di sicurezza per garantire la sicurezza e l'integrità del sistema.