Ponti hackerati

I ponti TL;DR svolgono un ruolo sempre più importante nel consentire a varie blockchain di comunicare tra loro. Condividendo l'esperienza sia dell'hacking pratico da cappello bianco sia della loro nuova leadership nel campo dell'auditing web3, i fratelli e fondatori di Sayfer Nir Duan (CEO) e Or Duan (CTO) hanno presentato alla Israel Crypto Community (ICC) il 22/9/ 2022 sul motivo per cui i bridge sono così suscettibili agli attacchi, su come vengono violati e quali sono gli approcci migliori per un audit di smart contract di successo su un bridge.

Perché un ponte dovrebbe essere verificato?

I bridge sono un obiettivo estremamente redditizio per gli hacker crittografici. Più di $ 1.6 miliardi sono stati rubati solo nel 2022. Questo, in combinazione con la complessità intrinseca che deriva dalla codifica di un bridge, rende il controllo una parte indispensabile del processo di implementazione.Sayfer aiuta altre aziende a diventare più sicure eseguendo test di penetrazione, che sono una parte cruciale di un controllo di sicurezza completo. Il controllo intelligente dei contratti è una parte specializzata del controllo di sicurezza progettato per il codice rivolto alla blockchain di una moderna applicazione web3, decentralizzata o dapp. Il processo di audit mira a garantire che una volta che il contratto immutabile è distribuito sulla blockchain, possa fare solo ciò che è destinato a fare. I bridge rappresentano un caso ancora più specializzato per gli auditor, poiché contengono componenti di codice in entrambe le catene, nonché un componente off-chain. Se corretto mentalità di sicurezza e l'auditing non sarà implementato in questo regno dello sviluppo web3, è molto probabile che milioni di dollari in token continueranno ad essere prosciugati da bridge mal progettati.

Guida dettagliata all'auditing di un bridge

Scopri l'architettura

Naturalmente, l'auditing richiede di invocare la mentalità dell'hacker white-hat di cercare vulnerabilità e modi per attaccare il contratto nello stesso modo in cui lo farebbe un hacker black-hat. La parte più importante prima di decidere come affrontare l'attacco a un ponte è capire il suo modello di sicurezza. Nel senso più generale i ponti possono esserlo di fiducia, o trustless. Il modello di fiducia, o il centralizzata bridge, si basa su un componente di governo che alla fine può decidere quanto denaro si sposta da una catena all'altra. In un trustless o decentrata bridge, esiste un meccanismo di consenso separato, che convalida ogni richiesta di trasferimento del denaro tra le catene. Questa parte è estremamente importante quando decidiamo come hackerare o, per i nostri scopi, controllare questo ponte. Mentre un bridge centralizzato può essere considerato indegno da molti nella comunità crittografica, a causa della loro dipendenza da una singola entità, le complicazioni di sicurezza che derivano dal mantenimento di un meccanismo di consenso completamente separato non lasciano bridge senza fiducia senza i loro avvertimenti.

Gestione delle chiavi

Chi controlla le chiavi? Perché se questo non è sicuro, niente lo è, come abbiamo visto con il Ronin hackerare. Anche se il consenso è distribuito tra un numero di entità diverse, dobbiamo considerare quanto sarebbe facile subentrare e fino a che punto qualcuno sarebbe disposto a spingersi per farlo.

Architettura del validatore

Quando si tratta di bridge decentralizzati, non c'è nessuno o pochi enti governativi, quindi l'attenzione è puramente sulla qualità dei validatori, chi sono, qual è il meccanismo di consenso, chi può aderirvi, come funziona la comunicazione peer-to-peer tra i validatori è fatto, ecc.

Comprensione della base di codice

Dopo aver scavato nell'architettura di base, se è attendibile o meno, e chi ha il controllo delle chiavi del protocollo, possiamo esaminare i componenti della base di codice. Il primo passo è leggere la documentazione fornita dagli sviluppatori. Un buon team di sviluppo del bridge dovrebbe documentare ogni modifica a causa della complessità intrinseca dell'attività. Se possibile, parla con il team e prova a ridurre il ciclo di feedback in un secondo momento ricevendo risposte alle domande dal vivo.

Gli script di distribuzione del contratto sono forse una delle parti più importanti dell'audit; leggili attentamente, perché a volte le vulnerabilità derivano solo dagli script di distribuzione, piuttosto che direttamente dallo smart contract. Se disponi degli strumenti, esegui gli script localmente sul tuo computer, ma non si distribuire qualsiasi cosa su una mainnet o testnet pubblica durante un audit.

Quindi, guarda i test forniti dagli sviluppatori. Possono aiutarti a comprendere meglio la base di codice, ma anche in seguito a provare i tuoi exploit e test di vulnerabilità. Non devi reinventare la ruota! Se hai test con configurazioni e smontaggi, puoi semplicemente copiare un test, modificarlo e crearne uno tuo.

Infine, e soprattutto quando si esamina un bridge, viene esaminato il flusso delle transazioni end-to-end, comprendendo come esattamente il denaro scorre dalla catena A alla catena B. È qui che risiedono le vere vulnerabilità nei bridge e dove sono gli occhi degli hacker come bene. Ciò ovviamente richiede uno sguardo più approfondito al codice dei contratti stessi, oltre a iniziare a utilizzare vari strumenti open source per aiutare a enumerare il codice e scansionare le vulnerabilità.

Strumenti di controllo

Tracciare a grafico delle chiamate di funzione può essere di grande aiuto per comprendere la struttura dei contratti e le funzioni al loro interno. Surya di ConsenSys offre questa funzionalità.

Gli strumenti che offrono l'analisi differenziale sono anche molto utili per il controllo dei contratti, partendo dal presupposto che molti dei progetti blockchain più popolari e affidabili basano il loro codice su altri progetti open source. Se una base di codice importante che è stata verificata più volte dai leader del settore viene utilizzata in un altro progetto, sebbene ciò non significhi che non possa essere violata, possiamo presumere che sia relativamente sicura e concentrare i nostri sforzi di verifica sulle parti del codice che effettivamente cambiato tra i due progetti. Sempre di più, Sayfer vede i clienti dove trovano gravi vulnerabilità solo nel diff. Questo è il motivo per cui hanno sviluppato uno strumento interno chiamato smartdiffer, che confronta il codice sorgente dei contratti intelligenti e si basa sulle API di Etherscan e Diffchecker.

Gli scanner automatici sono nostri amici come auditor per trovare il "frutto basso". Lo strumento più comunemente usato è strisciano. Oppure sottolinea l'importanza dell'approccio all'esecuzione dello scanner di vulnerabilità: non eseguire semplicemente lo strumento e sperare che non vi siano avvisi rossi. Trattalo esattamente come tale: uno strumento. Per contribuire a ridurre il rumore dall'output, utilizzare i flag per escludere percorsi, dipendenze o rilevatori specifici dalla scansione. Puoi anche utilizzare l'opzione di output in formato .json, che rende relativamente facile filtrare e creare un elenco di cose da fare specifico per il tuo controllo.

Un'altra area da controllare sono gli eventi e gli errori sulla catena. Analizzando questi registri eventi su un block explorer come Etherscan è un ottimo modo per comprendere i casi limite nel codice del contratto intelligente. Spesso, un singolo codice di errore non è motivo di preoccupazione, ma se lo stesso errore si verifica più e più volte, è necessario iniziare a indagare sullo schema e capire perché si comporta in modo anomalo.

L'ultima fase del processo è l'audit manuale. Rivedi tutti i tuoi appunti e tutte le informazioni raccolte finora. Quando guardi un grande sistema di contratti come un ponte, cerca di evitare di andare troppo in profondità nell'analisi di percorsi specifici, perché potresti passare giorni a cercare vulnerabilità in quello che finisce per essere un vicolo cieco. Prova ad andare largo e trova ogni possibile exploit nel lasso di tempo che hai piuttosto che andare in immersioni profonde.

Anche dopo la fase di audit, è importante monitorare i contratti per gli eventi dopo la distribuzione per rilevare e rispondere a eventuali attacchi e assicurarsi che gli eventi in generale corrispondano al comportamento previsto.

Dopo aver appreso queste metodologie, guarda la parte in cui Nir e Or hanno dimostrato una sfida dal vivo all'ICC su come trovare effettivamente la vulnerabilità in un codice:

Sommario

Ci auguriamo che questo post ti dia una migliore comprensione del motivo per cui i bridge vengono attaccati in primo luogo, alcune informazioni sulla nostra metodologia e su come controlliamo il contratto intelligente di un bridge specifico e ti fornisca un esempio reale di exploit. Guarda la parte finale del video per le domande e risposte:

Scritto da: Zoe Ronen


Scritto Da
Anna Shreder

Anna è una ricercatrice di sicurezza presso Sayfer. È appassionata di comprendere e ricercare i vettori di attacco e difesa che compaiono nelle nuove tecnologie emergenti.

Salta al contenuto