Attaccare uno Smart Contract
Come accennato nel capitolo precedente il codice eseguito dagli Smart Contract Bitcoin e' pubblico e quindi puo' essere analizzato ed eventualmente attaccato.
Last updated
Was this helpful?
Come accennato nel capitolo precedente il codice eseguito dagli Smart Contract Bitcoin e' pubblico e quindi puo' essere analizzato ed eventualmente attaccato.
Last updated
Was this helpful?
Se provenite dal precedente capitolo e non avete minato blocchi dopo aver inoltrato la transazione finale siete gia' pronti.
Altrimenti potete eseguire il seguente per ripristinare la situazione
Qui sulla sinistra trovate due localhost bookmarks riguardo la mempool.
Bitcoin regtest mempool mostra un resoconto della mempool senza i dettagli delle singole transazioni.
Hansel get raw mempool mostra i dettagli delle singole transazioni.
Tramite il seguente comando siamo in grado di recuperare il primo transaction ID disponibile in mempool (arrivando dall'esercizio precedente abbiamo solo una transazione in mempool).
Per poter accedere al codice sorgente (redeem script + parametri di input) dello Smart Contract bisogna prima ottenere lo ScriptSig!
Noterete che lo ScriptSig e' composto da due sequenze esadecimali separate da uno spazio. L'ultima sequenza e' sempre la versione serializzata del redeem script.
Per attaccare uno Smart Contract abbiamo bisogno di capire come funziona e quindi di poter leggere la versione del redeem script che mostra i nomi delle opcodes altrimenti e' un po' dura :)
Osservando a fondo il redeem script deduciamo che l'unica verifica svolta e' l'OP_EQUAL finale.
Questo significa che conoscendo il parametro di input corretto possiamo costruire una nuova transazione che dirotti il pagamento.
Con la release di Bitcoin Core 0.12 nel 2016 e' stato inserito il BIP-125 che consente di sostituire una transazione in mempool con una, che spende la stessa UTXO, le quali fee per i miner sono maggiori.
Per svolgere il nostro attacco dobbiamo quindi dedurre quante fee erano inizialmente previste dalla transazione che vogliamo attaccare.
Possiamo utilizzare lo stesso script del capitolo precedente per creare la transazione dell'hacker!!
L'ultimo passaggio che rimane da fare e' inviare la transazione e poi controllare che sia stata sostiuita in mempool.
Ottimo! Con il seguente comando possiamo verificare che la transazione attualmente in mempool e' diretta verso l'address del LOHACKER!