
PoC couvrant le problème de la manipulation de l'heure des transactions (CVE-2024-45244) dans la blockchain Hyperledger Fabric.
HLF_TxTime_spoofing - une preuve de concept (PoC) couvrant le problème de la manipulation du temps de transaction (en utilisant GetTxTimestamp() ou GetHistoryForKey() ) dans la blockchain Hyperledger Fabric. Testé sur les versions 2.5.5 et 3.0.0-beta
Le projet se compose de plusieurs parties :
Fonctions supplémentaires pour comprendre le fonctionnement de la logique métier :
Appelez Stake_insecure() pour ajouter un dépôt avec le montant du dépôt initial. Appelez CheckDividents_insecure() pour vous assurer que le montant du dépôt n'a pas changé. Modifiez l'heure locale sur le client et appelez à nouveau CheckDividents_insecure().
Attaque financière : avancer l'heure d'un an vous a permis d'obtenir un intérêt annuel de 20 %.
Attaque financière réussie
De la même manière, nous nous assurons que le temps de transaction peut être manipulé dans GetHistoryForKey().
Dans cette variante du chaincode, nous vérifions le temps de transaction par rapport au temps reçu du serveur NTP (Network Time Protocol) (en utilisant le paquet client ntp). Chaque chaincode possède sa propre adresse de serveur NTP (c'est-à-dire des paquets de chaincode différents) pour la distribution. En cas d'écart de temps, une erreur s'affichera : "wrong time". Notez que les données du trafic NTP peuvent être usurpées (les données sont transmises en clair).
Attaque financière infructueuse
Dans cette variante du chaincode, nous vérifions le temps de transaction par rapport au temps reçu du serveur NTS (Network Time Security) (en utilisant le paquet client nts). Chaque chaincode possède sa propre adresse de serveur NTS (c'est-à-dire des paquets de chaincode différents) pour la distribution. En cas d'écart de temps, une erreur s'affichera : "wrong time".
Attaque financière infructueuse
Dans cette variante du chaincode, nous vérifions le temps de transaction par rapport à l'heure locale (c'est-à-dire l'heure du nœud pair). En cas d'écart de temps, une erreur s'affichera : "wrong time". Notez qu'une heure correcte est requise sur tous les nœuds pairs.
Attaque financière infructueuse
hlf-time-oracle est un chaincode pour la blockchain Hyperledger Fabric qui fournit l'heure exacte aux autres chaincodes. hlf-time-oracle est basé sur le paquet ntp et le paquet nts. Il résout ainsi le problème de sécurité associé à une éventuelle manipulation du temps de transaction par le client de la blockchain. Le chaincode fournit les fonctions GetTimeNtp() et GetTimeNts(). L'appel de ces fonctions déclenche un appel aux serveurs NTP (Network Time Protocol) et NTS (Network Time Security). Le temps reçu de l'un de ces serveurs peut être utilisé pour vérifier l'exactitude du temps de transaction défini côté client. Les développeurs de chaincodes pour la blockchain peuvent utiliser hlf-time-oracle au lieu d'écrire leur propre code pour interagir avec les serveurs NTP et NTS. hlf-time-oracle n'enregistre aucune donnée dans la blockchain pendant son fonctionnement.