Il crollo da 120 milioni di dollari di Balancer: come una serie di piccoli swap ha quasi fatto crollare un AMM di alto livello

L'exploit di Balancer v2 del 3 novembre ha causato perdite per circa 120 milioni di dollari sul protocollo principale e su diversi fork. Secondo l'analisi post-incidente del team di sicurezza di SlowMist, l'exploit è derivato da un difetto di perdita di precisione nell'aritmetica a virgola fissa intera utilizzata per calcolare i fattori di scala all'interno dei pool stabili componibili, progettati per coppie di asset quasi alla parità come USDC/USDT o WETH/stETH.

Nell'ultimo aggiornamento, SlowMist ha confermato che questa falla causava piccole ma costanti discrepanze di prezzo durante gli swap, soprattutto quando gli aggressori utilizzavano la funzione di swap batch per concatenare più operazioni all'interno di un'unica transazione. La strategia degli aggressori veniva eseguita in più fasi.

SlowMist Postmortem

L'attaccante ha scambiato BPT con token di liquidità per ridurre le riserve di liquidità del pool, preparandosi a swap di piccole dimensioni. Ha eseguito swap tra token di liquidità (osETH → WETH) per preparare un controllo preciso degli errori di precisione di piccoli swap. Ha eseguito swap $osETH → attentamente controllati per accumulare errori di precisione. Ha scambiato tra token di liquidità (WETH → osETH) per ripristinare la liquidità. Ha ripetuto i passaggi da 2 a 4 per amplificare continuamente l'errore. Ha scambiato nuovamente i token di liquidità in BPT per ripristinare il saldo del pool.

L'aggressore ha inizialmente scambiato BPT con token di liquidità per prosciugare e ridurre le riserve di liquidità del pool, nel tentativo di prepararsi a swap di piccolo importo. Ha quindi effettuato swap tra token di liquidità (osETH → WETH) per impostare il controllo sugli errori di precisione degli swap di piccolo importo. Successivamente, ha eseguito swap osETH → WETH altamente controllati per accumulare intenzionalmente errori di precisione.

Successivamente, l'attaccante ha effettuato nuovamente lo scambio di token di liquidità (WETH → osETH) per ripristinare una liquidità sufficiente. Dopo aver ripetuto i passaggi 2-4 in loop per espandere continuamente l'errore accumulato, ha infine scambiato nuovamente i token di liquidità in BPT per riportare il pool in equilibrio. Sfruttando ripetutamente il difetto di precisione con swap di piccole dimensioni, l'attaccante ha spinto il sistema a saldare un "importo in uscita" finale che superava l'importo effettivamente dovuto, consentendogli di intascare un profitto enorme.

SlowMist è riuscito a tracciare le operazioni dell'aggressore su più indirizzi e catene. Ha scoperto che i fondi iniziali venivano instradati tramite Tornado Cash, poi attraverso nodi intermedi e utilizzo di gas.zip cross-chain, prima di essere assemblati su indirizzi basati su Ethereum contenenti migliaia di ETH e WETH.

Sforzi di bonifica

Come parte degli sforzi di ripristino, i pool CSPv6 nella rete interessata sono stati sospesi, la disattivazione di fabbrica CSPv6 è stata disattivata, gli indicatori sono stati eliminati per i pool interessati e i principali LP sono stati ritirati in sicurezza, tra gli altri passaggi.

Il team di Balancer si è coordinato con i white hat, i partner di sicurezza informatica e diverse reti per recuperare o congelare parte dei fondi rubati. Tra questi, 5.041 osETH di StakeWise, per un valore di circa 19 milioni di dollari, e 13.495 osGNO, per un valore stimato di circa 2 milioni di dollari.

Ai team di progetto e agli auditor che si trovano ad affrontare scenari simili, SlowMist ha affermato che l'attenzione dovrebbe essere rivolta al miglioramento della copertura dei test per casi estremi e condizioni al contorno. Inoltre, l'azienda ha esortato i progetti a prestare particolare attenzione alle strategie di gestione della precisione in condizioni di scarsa liquidità.

Il post Il crollo da 120 milioni di dollari di Balancer: come una serie di piccoli swap ha quasi fatto crollare un AMM di alto livello è apparso per la prima volta su CryptoPotato .

Inizia a scrivere il termine ricerca qua sopra e premi invio per iniziare la ricerca. Premi ESC per annullare.

Torna in alto