L'exploit stesso era brutalmente semplice nel concetto e devastante nell'effetto. Il 17 giugno 2016, secondo post-mortem ampiamente documentati e le stesse discussioni tecniche di Ethereum, un attaccante ha sfruttato una vulnerabilità di ri-entrata nella funzione di divisione di The DAO per ritirare fondi in modo ricorsivo prima che il contratto potesse aggiornare i saldi. Questo è il tipo di bug che suona come una nota a piè di pagina di un programmatore fino a quando non diventa un evento finanziario. La logica del contratto consentiva una chiamata esterna prima che le modifiche di stato fossero finalizzate, e l'attaccante ha sfruttato quell'ordine di operazioni per continuare a chiedere al contratto di pagare nuovamente mentre il libro mastro credeva ancora che il saldo originale fosse rimasto intatto.
Il dramma tecnico si è svolto non in un'aula di tribunale in marmo, ma nell'esecuzione del codice, blocco dopo blocco. La blockchain ha registrato i trasferimenti in vista pubblica, il che ha reso il furto insolitamente leggibile dopo il fatto. Ma la leggibilità non è la stessa cosa della prevenzione. Quando gli osservatori hanno capito cosa stavano vedendo, l'attacco aveva già prosciugato una grande parte dei fondi vulnerabili in un contratto secondario controllato dall'attaccante. Nelle descrizioni successive, l'importo a rischio era di circa 3,6 milioni di ether, sebbene il calcolo finale della perdita si fosse intrecciato con la successiva decisione di fork e le meccaniche di recupero. La contabilità precisa era importante, ma il punto più profondo era che un programma destinato ad automatizzare la fiducia era stato costretto a ripetere un permesso errato fino a quando il caveau si era svuotato.
Il carico di manutenzione dietro un sistema come The DAO era enorme. Se fosse stata una società convenzionale, si sarebbe immaginato personale di back-office, revisori, riconciliazioni bancarie e funzionari di conformità. Qui, le protezioni equivalenti erano la revisione del codice, la supervisione della comunità e l'assunzione che una blockchain pubblica avrebbe esposto comportamenti scorretti abbastanza rapidamente da correggerli. Quell'assunzione si è rivelata solo parzialmente vera. I dati pubblici possono rivelare un attacco, ma non lo fermano. E una volta che il valore era all'interno di un contratto intelligente, non c'erano cassieri umani per interrompere il processo.
Una prima scena di tensione è emersa quando sviluppatori e membri della comunità hanno realizzato che il deflusso non era un'attività ordinaria. I canali di analisi online si sono riempiti di tracce di transazione mentre i partecipanti cercavano di capire se il contratto fosse stato legittimamente diviso o manipolato in modo malevolo. La pressione emotiva era immediata. Se il modello era un bug, allora miliardi di dollari di fiducia di mercato potevano evaporare. Se non era un bug, allora il DAO stava funzionando come progettato, il che era un'ipotesi ancora più spaventosa perché avrebbe significato che il design stesso aveva incorporato la vulnerabilità.
La menzogna al centro dell'operazione non era una dichiarazione fabbricata ma un'equivalenza falsificata: che la visibilità pubblica significasse sicurezza pubblica. In realtà, la trasparenza del contratto consentiva semplicemente di vedere la violazione in tempo reale. Il sistema non aveva un rituale quotidiano di riconciliazione manuale che potesse catturare un exploit di caso limite. Non c'era nessuna persona da chiamare quando le assunzioni del codice fallivano sotto pressione avversaria. In questo senso, l'attacco ha esposto l'illusione più consequenziale del progetto: che la fiducia potesse essere rimossa dalla finanza senza rimuovere anche la necessità di custodia.
Il fatto sorprendente, e uno su cui vale la pena soffermarsi, è che l'exploit non era un'intrusione esotica sponsorizzata dallo stato o una svolta nella crittografia. Era un difetto logico. Questo avrebbe dovuto essere confortante, perché i difetti logici sono comprensibili. Invece era inquietante, perché suggeriva che il mercato non era stato sconfitto da hacking avanzati, ma da un fallimento della disciplina software ordinaria su scala straordinaria. La fascinazione pubblica per la blockchain aveva fatto pensare a molte persone che il nuovo sistema fosse più forte del vecchio. In questo caso, era semplicemente più veloce.
Ci sono stati quasi incidenti in senso più ampio. Le preoccupazioni per la sicurezza erano state discusse prima dell'attacco, e l'esistenza di quegli avvertimenti ha reso l'impatto successivo più amaro. Ma nelle ore e nei giorni successivi all'exploit, c'è stata anche una corsa per contenere i danni reputazionali. La comunità di Ethereum doveva decidere se preservare la sacralità della catena così come la storia l'aveva registrata, o intervenire per invertire il furto. Quella decisione non è stata presa da un singolo amministratore delegato o da un tribunale. È emersa da sviluppatori, miner, scambi, investitori e dibattiti pubblici, il che significa da una crisi decentralizzata senza un'autorità centrale.
Pubblicamente, i difensori della rete hanno cercato di inquadrare l'incidente come un evento eccezionale piuttosto che come un fallimento strutturale. Quella distinzione era importante perché il futuro di Ethereum dipendeva dal fatto che le persone credessero che la catena potesse assorbire gli shock. Ma le crepe erano visibili a chi prestava attenzione. Un sistema che aveva promesso certezza stava ora dibattendo se la certezza stessa potesse essere rivista. Il software aveva fatto esattamente ciò per cui era stato programmato, eppure tutti potevano vedere che il risultato era inaccettabile.
Nei post-mortem tecnici, l'exploit di ri-entrata è diventato un caso da manuale. In termini di governance, è diventato molto peggio: un referendum su se il codice immutabile dovesse rimanere immutabile quando il risultato sembrava furto. La violazione aveva già esposto la menzogna della sicurezza. Ciò che è venuto dopo avrebbe esposto qualcosa di più profondo: che anche una comunità decentralizzata alla fine deve scegliere quali regole contano di più, il codice scritto o il senso umano di giustizia che dice che il codice è andato fuori strada.
