SmartReco — Analisi statica e dinamica di contratti DeFi
Una pipeline in quattro fasi che affianca l'analisi statica di Slither al replay delle transazioni basato su REVM, poi verifica i risultati dell'una contro l'altra su 17 protocolli DeFi reali.
In breve
Gli analizzatori statici segnalano che cosa potrebbe andare storto; rieseguire transazioni reali mostra che cosa è davvero successo. SmartReco esegue entrambi sugli stessi contratti e correla i risultati, così un finding deve sopravvivere a due metodi indipendenti prima di contare.
Il problema
Enti pubblici, fondi e aziende detengono sempre più spesso valore che si muove attraverso smart contract: asset tokenizzati, canali di pagamento, sperimentazioni di erogazione di contributi. Il codice è pubblico, cosa che viene abitualmente scambiata per il codice è compreso. In pratica l'organizzazione deve rispondere a una domanda per cui non ha strumenti: questo contratto si comporta come il suo sorgente lascia intendere, on-chain, con denaro reale?
- Un audit professionale è raro e costoso, ed è un documento fotografato in un istante — il contratto continua a girare molto dopo che il report è stato archiviato.
- Gli analizzatori statici costano poco e producono lunghi elenchi di cose che potrebbero essere sbagliate. Un team smista l'elenco un paio di volte, trova quasi solo rumore e smette di leggerlo. L'assuefazione agli alert è il modo in cui la segnalazione vera passa inosservata.
- Un avviso che non può essere legato a un comportamento osservato non è una prova. Non è qualcosa su cui un risk officer possa agire, che possa escalare o portare davanti a un consiglio di amministrazione.
Come questo progetto aiuta
SmartReco fa in modo che una segnalazione si guadagni il proprio posto, richiedendo che due metodi indipendenti concordino. Slither legge il sorgente e propone che cosa potrebbe andare storto; un harness REVM riesegue transazioni realmente avvenute e mostra che cosa è andato storto davvero. I due passaggi vengono poi correlati, così ciò che arriva a una persona è sopravvissuto a entrambi.
- Meno rumore per ogni segnalazione. Incrociare gli avvisi statici con l'esecuzione rieseguita filtra esattamente i falsi positivi che portano i team ad abbandonare lo strumento.
- Prove, non congetture. Una segnalazione sostenuta da una transazione rieseguita può essere mostrata, riprodotta e discussa — la forma che un rilievo di rischio deve avere prima che qualcuno agisca.
- Continuo, non fotografato in un istante. La pipeline è un programma, quindi può essere rieseguita mentre la chain avanza, invece di descrivere il contratto com'era il giorno dell'audit.
- Il dato misurabile è l'harness. Oltre il 90% di accuratezza nella riesecuzione su 17 protocolli principali è ciò che dice che le osservazioni sono affidabili; zero vulnerabilità su contratti così tanto auditati è il risultato atteso, non il traguardo.
La parte generalizzabile non riguarda solo la DeFi. Qualsiasi domanda di due diligence nella forma questo sistema in produzione fa davvero ciò che il suo sorgente lascia intendere ha la stessa struttura: un metodo che ragiona sul codice, uno che lo osserva mentre gira e un passo di correlazione che porta a galla solo ciò che entrambi sostengono.
Che cosa fa
- Esegue Slither come analisi statica sul codice sorgente dei contratti per produrre risultati candidati.
- Riesegue transazioni on-chain storiche attraverso REVM per osservare l'esecuzione reale.
- Correla i due passaggi, così gli avvisi statici sono verificati rispetto al comportamento effettivo.
- È stata provata su 17 protocolli DeFi principali, tra cui Aave V3, Compound V3, Uniswap V3, Balancer V2 e Lido.
Risultati
Sui 17 protocolli testati, la pipeline ha riportato zero vulnerabilità e ha raggiunto oltre il 90% di accuratezza nel replay delle transazioni dopo una serie di correzioni al livello di replay.
Un risultato a zero finding su protocolli maturi e ampiamente auditati è l'esito atteso: sono tra i contratti più revisionati in produzione. Il numero significativo qui è l'accuratezza del replay, perché misura se l'harness riproduce fedelmente l'esecuzione on-chain, che è ciò su cui si reggerebbe qualsiasi finding.
Presentazione
Il lavoro è stato documentato e presentato come slide HTML interattive invece che come report statico, così da poter percorrere passo passo le fasi della pipeline e i risultati per protocollo.