Bridge di Connext possibile hack! Più di 70 in prima fila

TLDR: Il team di ricercatori di Sayfer ha trovato una nuova potenziale vulnerabilità nei contratti intelligenti del ponte cross-chain di Connext. Sembra che il loro sistema di remunerazione per i router (utenti che rendono possibili i trasferimenti sulle catene di invio e ricezione) sia sensibile al front-running. In effetti, abbiamo trovato più di 1000 transazioni MEV solo sulla blockchain di Ethereum, per un totale di $ 70k di commissioni rubate.

Prendimi ai dettagli tecnici.

Web3 è una visione straordinaria e rivoluzionaria per il World Wide Web che ci offre molte nuove possibilità. Tuttavia, come ogni cosa nuova, presenta lati positivi e negativi e la famosa guerra tra cappello bianco e cappello nero non risparmia web3. Indubbiamente, il web3 è diventato il nuovo parco giochi per gli hacker.

In qualità di società di sicurezza, troviamo spesso vulnerabilità che possono essere utilizzate dagli hacker e in questo articolo vi presenteremo una di queste, la vulnerabilità di prima esecuzione delle commissioni di Connext.

Cos'è Next?

Connext è una piattaforma basata sulla blockchain di Ethereum che consente agli utenti di effettuare transazioni su diverse reti compatibili con Ethereum. Connext svolge la sua funzione senza l'uso di alcun validatore off-chain. Funziona attraverso il Noncustodial Xchain Transfer Protocol (NXTP) per i suoi trasferimenti cross-chain.

Connetti Architettura

NXTP è un protocollo semplice per trasferimenti cross-chain completamente non affidatari e chiamate contrattuali. La chiave da asporto con questo protocollo è quella tutte le informazioni necessarie per entrambe le parti sono disponibili on-chain

Ogni volta che qualcuno sposta denaro da una blockchain a un'altra, si verificano tre passaggi:

  1. Selezione percorso: Gli utenti selezionano le catene e le risorse e avviano un'asta con le informazioni di trasferimento. I router fanno un'offerta per completare il trasferimento entro un intervallo di tempo/prezzo.
  2. Preparare: Gli utenti inviano una transazione ai contratti NXTP sulla catena di invio. Dopo aver visto l'evento del contratto, i router bloccano la liquidità sulla catena ricevente.
  3. Esaudire: Gli utenti forniscono una firma per sbloccare i fondi sulla catena di ricezione e i router utilizzano la firma rivelata per richiedere la liquidità sulla catena di invio.

Cos'è il front-running?

Il front-running è l'atto di mettere una transazione in coda con la conoscenza di una transazione futura. Il front-running su una piattaforma blockchain si verifica normalmente quando un minatore, che ha accesso alle informazioni sulle transazioni in sospeso, effettua un ordine che gli farebbe guadagnare un profitto basato su uno scambio in sospeso. Ad esempio, sulla blockchain di Ethereum, il front-running può verificarsi quando i bot sono in grado di quotare un prezzo del gas più alto rispetto a uno scambio in sospeso, accelerando così la sua elaborazione. Ciò accade principalmente per motivi di arbitraggio.

Mempool è un insieme di transazioni Ethereum che sono state trasmesse alla rete e sono in attesa di essere impacchettate in blocchi. È la premessa per l'attuazione del front-running.

Il bot in prima linea analizza e trova obiettivi che possono essere attaccati scansionando continuamente le transazioni in sospeso nel Mempool.

Il Valore Estraibile Massimo (o Minatore) (MEV) si riferisce ai profitti che i minatori e altre entità possono raccogliere sfruttando la trasparenza della blockchain per avviare transazioni redditizie prima che vengano confermate.

I dettagli tecnici

I router hanno due fonti di reddito: commissioni d'asta ed spese di presentazione del relè.

Come spiegato in Accademia Connessa:

Commissioni d'asta

Ogni volta che un utente trasmette alla rete Connext segnalando la propria intenzione di eseguire un trasferimento cross-chain, i router possono rispondere con offerte sigillate. Il processo sottostante per questo è descritto più dettagliatamente qui: Route Auction. Le offerte includono l'impegno dei router a portare a termine la transazione entro un tempo e una fascia di prezzo predefiniti. Connext abbina quindi l'utente all'offerta più economica.

Una volta che il router rileva un evento che contiene la loro offerta firmata, il router invia la transazione. Per incentivare il router a completare la transazione, l'importo bloccato sulla catena di ricezione viene ridotto della commissione d'asta, che riceve il router.

Commissioni di invio del relè

L'utente che ha avviato la trasmissione firma un messaggio una volta che il router ha preparato la transazione.

Il messaggio viene inviato a un relayer che guadagna un compenso per l'invio. Il relayer è in genere un altro router. Qui viene utilizzato un relayer per consentire agli utenti di inviare transazioni con dati di chiamata arbitrari sulla catena di ricezione senza bisogno di gas per farlo. Il router invia quindi lo stesso messaggio firmato e completa la transazione dal lato del mittente, sbloccando l'importo originale.

Durante la nostra ricerca, abbiamo scoperto che il compiere funzione nel TransactionManager.sol contract manca di un particolare meccanismo di autenticazione, che consente a un utente malintenzionato MEV di front-eseguire la transazione di un relayer e rubare la sua inoltroTasse.

Gli aggressori MEV possono cercare transazioni in sospeso nel Mempool che chiamano il compiere funzione nel Gestore delle transazioni contrarre. Possono quindi eseguire un attacco di spostamento inviando la stessa transazione al Mempool ma con una tariffa del gas più elevata. Ciò aggira le misure di autenticazione attualmente in atto, poiché l'attaccante copia semplicemente la transazione, inclusa la sua firma.

La vulnerabilità alla base di questo attacco ha origine in un errore logico nel file TransactionManager.sol:842.

LibAsset.transferAsset(txData.receivingAssetId, paid(msg.sender), relayerFee);

I relatoreTassa viene inviato al mittente del messaggio, senza alcuna verifica. Chi chiama il compiere funzione ottiene prima la tassa.

Se la transazione capofila supera con successo la transazione originale inviata dal relayer, quella transazione legittima viene quindi ripristinata con un '#F:019' codice di errore, poiché sarebbe la seconda volta che viene eseguito.

L'impatto

L'impatto finanziario qui è fondamentale in quanto si tratta di un attacco economico che prende di mira uno dei componenti del protocollo NXTP: il relayer (è importante notare che i fondi degli utenti non sono attualmente a rischio). Utilizzando gli attacchi MEV, gli aggressori malintenzionati possono potenzialmente rubare le tariffe del relayer, impedendo così l'incentivo del relayer a completare la transazione.

Senza tariffe abbastanza redditizie, i ripetitori potrebbero smettere di fornire il loro servizio, il che, nel tempo, potrebbe impedire il funzionamento del protocollo NXTP.

Questo scenario non è affatto teorico. Durante la nostra ricerca MEV, abbiamo scoperto che questo attacco viene attivamente sfruttato da sofisticati robot di punta generali famiglie che stiamo monitorando. Questi robot causano la perdita di un'enorme quantità di fondi attraverso la rete Ethereum. 

Dalla sua distribuzione, abbiamo riscontrato più di mille attacchi riusciti al TransactionManager.sol contrarre. Uno di questi esempi include:

Transazione dell'attaccante:

  1. https://etherscan.io/tx/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985
  2. https://ethtx.info/mainnet/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985/

Transazione vittima:

  1. https://etherscan.io/tx/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff
  2. https://ethtx.info/mainnet/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff/

Possiamo dire che entrambe le transazioni sono correlate allo stesso trasferimento cross-chain controllando il valore del parametro della firma nei dati della transazione. Poiché le firme sono le stesse nel nostro esempio sopra, sappiamo che entrambi i mittenti stanno cercando di ottenere il relatoreTassa, quindi uno di loro sta cercando di anticipare l'altro. Per identificare il bot, basta confrontare il costo delle transazioni, il più costoso è quello dell'attaccante.

Il nostro team ha stimato che l'importo totale delle commissioni prelevate, solo sulla blockchain di Ethereum, è di circa $ 70.

Reportistica

Abbiamo segnalato questa vulnerabilità a Connext tramite la piattaforma di bug bounty Immunefi. Dopo un lungo scambio, Connext ci ha detto che questa non era una vulnerabilità e che “questo è previsto dalla progettazione".

Ecco la loro ultima risposta:

Riteniamo che i contratti intelligenti potrebbero non essere ancora abbastanza sicuri per gli utenti tradizionali e pensiamo che storie come questo caso ne siano la causa. Crediamo che la crittografia cambierà il mondo (se non lo ha già fatto). Questo è il motivo per cui consideriamo nostra responsabilità informare il mondo su come alcuni protocolli considerano le proprie responsabilità in materia di sicurezza informatica.

Scritto Da
Avigdor Sason Cohen

Avigdor è un ricercatore di sicurezza web3 presso Sayfer. È appassionato delle nuove tecnologie blockchain e di come possiamo assicurarci di svilupparle in modo sicuro.

 

Salta al contenuto