
PoC che copre il problema della manipolazione del tempo di transazione (CVE-2024-45244) nella blockchain di Hyperledger Fabric.
HLF_TxTime_spoofing - una PoC che riguarda il problema della manipolazione del tempo delle transazioni (usando GetTxTimestamp() o GetHistoryForKey()) nella blockchain Hyperledger Fabric. Testato su v 2.5.5 e v3.0.0-beta
Il progetto è composto da diverse parti:
In tutti i casi (cioè i chaincode) il deposito è pari al 20% annuo.
Funzioni aggiuntive per comprendere il funzionamento della logica di business: CalcDividents() - restituisce il dividendo accumulato per un dato numero di giorni e l'importo del deposito iniziale subtractTimestamp() - restituisce la differenza tra il tempo corrente e il tempo del deposito iniziale
Chiamare Stake_insecure() per aggiungere un deposito con l'importo iniziale. Chiamare CheckDividents_insecure() per verificare che l'importo del deposito non sia cambiato. Modificare l'ora locale sul client e chiamare nuovamente CheckDividents_insecure().
Attacco finanziario: spostare il tempo in avanti di 1 anno ha permesso di ottenere un interesse annuo del 20%.
Attacco finanziario riuscito
Allo stesso modo ci assicuriamo che il tempo della transazione possa essere manipolato in GetHistoryForKey().
In questa variante del chaincode controlliamo il tempo della transazione rispetto al tempo ricevuto dal server NTP (Network Time Protocol) (using ntp client package). Ogni chaincode ha il proprio indirizzo del server NTP (cioè different chaincode packages) per la distribuzione. In caso di deviazione temporale verrà visualizzato un errore: "ora errata". Nota che i dati del traffico NTP possono essere falsificati (i dati vengono trasmessi in chiaro).
Attacco finanziario non riuscito
In questa variante del chaincode controlliamo il tempo della transazione rispetto al tempo ricevuto dal server NTS (Network Time Security) (using nts client package). Ogni chaincode ha il proprio indirizzo del server NTS (cioè different chaincode packages) per la distribuzione. In caso di deviazione temporale verrà visualizzato un errore: "ora errata".
Attacco finanziario non riuscito
In questa variante del chaincode controlliamo il tempo della transazione rispetto al tempo locale (cioè il tempo nel peer-node). In caso di deviazione temporale verrà visualizzato un errore: "ora errata". Nota che è richiesta una temporizzazione corretta su tutti i nodi peer.
Attacco finanziario non riuscito
hlf-time-oracle è un chaincode per la blockchain Hyperledger Fabric che fornisce un tempo accurato ad altri chaincode. hlf-time-oracle si basa sul ntp pakage e sul nts pakage. Risolve così il problema di sicurezza associato alla possibile manipolazione del tempo delle transazioni da parte del client della blockchain. Il chaincode fornisce le funzioni GetTimeNtp() e GetTimeNts(). Chiamare queste funzioni crea una chiamata ai server NTP (Network Time Protocol) e NTS (Network Time Security). Il tempo ricevuto da uno di questi server può essere utilizzato per verificare la correttezza del tempo della transazione definito dal lato client. Gli sviluppatori di chaincode per blockchain possono utilizzare hlf-time-oracle invece di scrivere codice indipendente per interagire con i server NTP e NTS. hlf-time-oracle non salva alcun dato nella blockchain durante il suo funzionamento.