Sicurezza della DeFi ed i permessi di accesso ai token

ERC-20 (Ethereum Request for Comments 20), proposto da Fabian Vogelsteller nel novembre 2015, è uno standard per i token fungibili utilizzato in circa 1/3 tra tutte le decine di migliaia di blockchain esistenti attualmente e che fornisce una serie di funzionalità come:

  • trasferire token da un account a un altro
  • richiedere il saldo corrente di token di un account
  • richiedere la quantità totale di token disponibile sulla rete
  • approvare che una quantità di token di un account possa essere spesa da un account di terze parti

L’Allowance è una funzione abbastanza comune nel mondo della finanza decentralizzata (DeFi) e ha lo scopo di consentire l’interazione automatica con i token self custoditi in indirizzi privati con applicazioni decentralizzate (Dapps) come gli scambi decentralizzati (DEX) basandosi proprio sull’ultimo dei punti sopraelencati.
Ad esempio i DEX utilizzano le funzioni di approvazione per permettere agli Automated Market Makers (AMM) di svolgere le proprie attività al meglio agevolando la partecipazione nei liquidity pool (LP).

Come e quando vengono concesse le Allowance?

Ogni qualvolta che si utilizzano dei bridge crosschain (ponti per trasferire i token da una blockchain ad un’altra) o si partecipa ai pool di liquidità (LP) nei DEX o si mettono in stacking i token nelle Farm per ricevere interessi, si firmano due transazioni:

la prima transazione di tipo “Approve” è quella che concede i limiti di spesa al contratto della Dapp che stiamo utilizzando, di fatto uno smart contract di terze parti;

la seconda è la transazione che trasferisce i nostri token nell’indirizzo indicato dallo smart contract approvato per iniziare l’esperienza di finanza decentralizzata.

Per evitare che ogni volta che utilizziamo la stessa Dapp ci venga richiesta nuovamente la transazione di Approve, moltissimi smart contracts ci fanno firmare per concedere una Allowance infinita (in pochi ci permettono di scegliere se limitarla alla quantità di token che in quel momento serve realmente), in modo che continuando ad utilizzare la piattaforma possiamo interagirci molto più liberamente ed agevolmente.

Sebbene i wallet di nuova generazione in fase di firma della transazione di Approve ci diano la possibilità di controllare e modificare i limiti di spesa che stiamo concedendo, non è immediato per l’utente medio capirlo ed agire di conseguenza.

Problemi legati alla sicurezza

Questi limiti di spesa che concediamo (che essi siano limitati od infiniti) una volta impostati andrebbero tenuti sotto controllo e dovrebbe esserci la possibilità di revocarli dopo averli concessi.

Le approvazioni dei token sono infatti un vettore di attacco comune sia per gli hacker che per i truffatori:

  • i primi possono individuare e sfruttare le vulnerabilità nel codice di uno smart contract (questo è successo a Wormhole, un bridge tra la rete Ethereum e la rete Solana, per esempio);
  • i secondi attuare dei “rug pull” (tiro del tappeto, un particolare tipo di exit scam che comporta la vendita del pool di liquidità nel quale gli investitori hanno depositato i fondi. Svuotando tale pool, viene meno la liquidità di un token specifico, che di conseguenza perde completamente di valore).

Le approvazioni dei token come detto spesso richiedono un accesso illimitato ai token: se un hacker o un proprietario fraudolento dello smart contract è in grado di sfruttare questo a suo vantaggio, può teoricamente svuotare il portafoglio al quale è consentito l’accesso.

Poche piattaforme implementano un metodo integrato per la ricerca e la revoca delle allowance, mentre i wallet che utilizziamo si occupano solamente di offrire una esperienza utente per conservazione, gestione e trasferimento dei token e non di questi aspetti specifici.

Analisi e possibili rimedi

Esistono pochissimi block explorer che permettono la visualizzazione delle autorizzazioni concesse ma fortunatamente esistono alcuni siti web pionieri che, visitati tramite il browser integrato con il proprio wallet preferito possono connettersi su varie reti offrendo una visualizzazione storica e la possibilità di revoca.

Vediamo ad esempio una anteprima della revoca di allowance su https://evmallowance.com (Figura 1), https://app.unrekt.net (Figura 2), https://cointool.app/approve/bsc (Figura 3).

Figura 1 (evmallowance.com)
Figura 2 (app.unrekt.net)
Figura 3 (cointool.app)

Dopo aver eseguito la transazione di revoca tramite una di queste Dapp ne approfondiamo i dettagli sul block explorer di Binance Chain (Figura 4).

Figura 4 (bscscan.com)

La transazione di revoca consiste in una nuova transazione di Approve (contenente quindi la signature 0x095ea7b3, in verde) che fissa un limite di spesa a zero (in giallo) per lo spender address ricercato (in rosso).

Figura 5 (metamask)

Come vediamo a quello spender era stata lasciata concessa (dopo la partecipazione ad un pool di liquidità) una allowance infinita (Figura 6) per il token denominato BUSD (in arancione).
Il nuovo limite di approvazione che si firma con la revoca (Figura 5) sostituisce i byte “ff” del campo input della vecchia transazione con byte “00” per revocare appunto l’allowance precedentemente concessa e rimettere le cose “a posto”, come se non si fosse mai partecipato a quel pool di liquidità.

Figura 6 (evmallowance.com)

Si noti che le chiamate per una funzione nella Ethereum Virtual Machine sono specificate dai primi quattro byte di dati inviati con una transazione che si trovano nel campo di input (Figura 6).

Di seguito un elenco aggiornato delle Dapps disponibili per tenere sotto controllo e revocare le allowances concesse sulle reti EVM, alcune di esse supportano la revoca delle Allowance oltre che su ERC-20 anche su altri standard come ad esempio gli ERC-721 (NFT).

Articolo a cura di Marco Giuricin

Profilo Autore

Nato a Roma nel novembre del 1976 è un Senior System Administrator con esperienza ventennale nel mondo dell’Information Technology, lavorando da consulente o dipendente presso importanti realtà come Tele Sistemi Ferroviari spa, Alitalia spa, Poste Italiane spa, Corte di Cassazione, Ministero di Grazia e Giustizia, Sir 2001 srl, Arianna 2001 spa, focalizzando la propria attività sulla progettazione, la gestione, la protezione ed il monitoraggio di ambienti sistemistici fisici e virtuali e loro implicazioni su tematiche come fiducia, privacy e sicurezza.
Sviluppatore di siti web di varia natura ed autore del blog sistemistico https://vmgmt.wordpress.com/ incentrato nel fornire piccole soluzioni e suggerimenti su tematiche di protezione dei dati e di disaster & recovery, virtualizzazione, database, blockchain, storage, architetture linux, microsoft, vmware, citrix, netapp, sicurezza logica e privacy anche legate alle tematiche del regolamento UE 2016/679 del garante della privacy (GDPR).

Condividi sui Social Network:

Ultimi Articoli