Accedi

Front running delle transazioni su EthereumTempo di lettura: 7 min.

menu categorie articoli

Tempo fa qualcuno ha definito Ethereum come una "Dark Forest", in riferimento a qualcosa che avviene alle transazioni non ancora confermate sulla blockchain. Si tratta di un tipo di attacco chiamato front running...

Il front running delle transazioni è un fenomeno che incide in negativo sulla user experience e sull’operatività della blockchain di Ethereum.

Questa condotta non è una novità degli ultimi tempi. È sempre esistita su Ethereum e, in realtà, affonda le sue radici nei mercati tradizionali, in particolare quello azionario.

Il problema del front running delle transazioni, però, è andato a inasprirsi con l’affermarsi del movimento DeFi.

Cosa è il front running?

La DeFi ha favorito la creazione di una varietà di applicazioni finanziarie. I protocolli DeFi, tra l’altro, consentono lo svolgimento di attività speculative finalizzate a conseguire profitti.

È qui che entra in gioco l’attività del front-runner. Consiste nell’individuare sulla blockchain azioni potenzialmente profittevoli da parte di utenti, e anticiparle per trarne un vantaggio.

In generale, il front-runner analizza la blockchain per individuare delle transazioni alle quali vuole sovrapporsi per guadagnarci qualcosa.

Il termine ha avuto origine nel mercato azionario, ai tempi in cui le negoziazioni avvenivano ancora a mano e su carta attraverso i trading desk.

Ecco un esempio.

Un broker riceve un ordine da un cliente per l’acquisto di un determinato titolo. Il broker valuta che l’entità di quell’ordine farà aumentare il prezzo del titolo, pertanto inserirà un ordine di acquisto per sé stesso prima di quello del cliente.

In questo modo il broker riesce a beneficiare dell’aumento di prezzo a seguito dell’esecuzione dell’ordine del cliente. Oppure, in altra ipotesi, danneggia il cliente per aver fatto aumentare il prezzo del titolo (con il suo acquisto) prima dell’esecuzione dell’ordine commisionatogli.

Naturalmente, la pratica è ingiusta ed è stata dichiarata illegale.

Front running sulla blockchain

Il front running non è altro che una condotta attraverso cui un’entità beneficia di un accesso preventivo a informazioni di mercato privilegiate, riguardanti transazioni e scambi imminenti.

Sulla blockchain, il problema diventa molto più grave.

Innanzitutto, tutte le transazioni vengono trasmesse pubblicamente. Ancora più importante, i partecipanti alla blockchain non sono legati dalla stessa relazione che esiste tra un broker e il suo cliente. Gli aggressori possono sfruttare impunemente la loro conoscenza di una transazione.

L’esempio tipico è quello di un exchange decentralizzato della DeFi.

Un utente inserisce un grosso ordine in acquisto che farà muovere al rialzo il prezzo di un token. Il front-runner vede questa transazione non ancora confermata e l’anticipa con una sua transazione di acquisto dello stesso token. Guadagnerà per via del successivo aumento del prezzo dovuto all’esecuzione dell’ordine dell’utente.

Oppure il front-runner potrebbe far gravare lo slippage sull’utente. Questo si verifica se l’utente inserisce un ordine non limitato e il front runner fa muovere il mercato (magari poco liquido) con una sua transazione che anticipa quella dell’utente.

A cosa è dovuto?

La blockchain consente l’esecuzione di applicazioni decentralizzate, o più in generale di smart contract. Le chiamate di funzione (o le transazioni) sono finalizzate in fasi:

  • prima vengono propagate alla rete, finendo in una “sala d’attesa” chiamata mempool;
  • quindi vengono selezionate da un miner e inserite in un blocco valido;
  • infine il blocco assume maggiore profondità con l’allungamento della chain, in modo da rendere sempre più probabile l’immutabilità della transazione.

Quindi il front running è un attacco in cui un nodo malevolo osserva una transazione che è stata trasmessa alla rete, ma non ancora finalizzata. L’attaccante tenta di far sì che la propria transazione venga confermata prima – o al posto – della transazione osservata.

I miner sono nella migliore posizione per condurre questi attacchi. Dispongono di un controllo dettagliato sull’insieme esatto di transazioni che verranno eseguite e sul loro ordine.

Ma, in generale, qualsiasi utente che monitora le transazioni sulla rete (ad esempio, eseguendo un full node) può vedere transazioni non confermate.

Sulla blockchain di Ethereum, gli utenti devono pagare il gas utilizzato dalla rete per processare le loro transazioni. Il prezzo (gas price) che gli utenti offrono per il gas consumato può aumentare o diminuire la velocità con cui i miner includeranno in un blocco la transazione.

Un miner (normalmente orientato al profitto) che vede transazioni identiche ma con fee diverse, darà priorità alla transazione che paga un prezzo del gas più alto (a causa dello spazio limitato nei blocchi).

Non è altro che un asta del gas. Pertanto un utente qualsiasi che esegue un full node, può eseguire il front running delle transazioni in sospeso inviando sue transazioni con un prezzo del gas più elevato.

Infine, anche i nodi di inoltro delle transazioni ben posizionati sulla rete potrebbero tentare di influenzare il modo in cui le transazioni vengono propagate. Ciò può influire sull’ordine in cui i miner ricevono le transazioni o se le ricevono affatto.

Tipologie di attacchi

Con il front running possono essere eseguiti una varietà di attacchi, che vanno ben al di là dell’attività di trading e più in generale delle applicazioni finanziarie.

Le ipotesi sono innumerevoli. Sarebbe più facile elaborare della categorie generali di azioni di front running piuttosto che individuare ogni singolo caso specifico.

Ad esempio, un’ipotesi di front running potrebbe aversi anche nel caso di vulnerabilità in uno smart contract. Un utente potrebbe provare a sfruttare un bug per ottenere un guadagno, ma il front runner potebbe copiare la stessa transazione e anticiparlo per utilizzare la vulnerabilità a suo vantaggio.

Oppure un utente prova a inviare un bug per ricevere un bounty, ma viene fregato dal front runner che gli copia la transazione e lo anticipa. Ancora nel caso della registrazione di un dominio, dove l’attaccante riesce a registrarlo prima che venga confermata la transazione dell’utente.

Conclusioni

Esistono una serie di modi per prevenire, rilevare o mitigare gli attacchi front running.

Fornire i dettagli di specifiche soluzioni si rivelerebbe complesso, considerando la loro mutabilità nel tempo e lo scopo di descrizione ad alto livello di questo articolo.

Limitandoci a una esposizione generica, in una prima categoria di soluzioni la blockchain rimuove la capacità del miner di ordinare arbitrariamente le transazioni e cerca di imporre un ordine per le stesse.

Non è il caso dell’attuale protocollo di Ethereum, in cui il miner include e ordina le transazioni a sua descrizione.

Una seconda categoria di rimedi consiste nell’implementazione di tecniche crittografiche per limitare la visibilità delle transazioni, fornendo al potenziale front-runner meno informazioni su cui basare la propria strategia.

Altre soluzioni consistono nel progettare direttamente le dApp per rimuovere l’importanza dell’ordine delle transazioni.

Il front running è un problema molto diffuso tra le dApp di Ethereum. Ma gli sviluppatori non hanno come propensione principale quella di progettare dApp resistenti al front running.

È possibile creare logiche applicative a livello di dApp per mitigare questi attacchi. Ma la loro pervasività tra le varie categorie di dApp, suggerisce che mitigazioni generali a livello di blockchain sarebbero probabilmente più efficaci.

Accedi al meglio del mondo cripto e delle applicazionidecentralizzate

In soli 5 minuti di lettura Ogni sabato alle 09:00, gratis nella tua casella email

Picture of Guest

Guest

Picture of Guest

Guest

Commenti

Una risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *