
PoC, der das Problem der Manipulation der Transaktionszeit (CVE-2024-45244) in der Hyperledger Fabric Blockchain abdeckt.
HLF_TxTime_spoofing – ein PoC, der das Problem der Manipulation der Transaktionszeit (mittels GetTxTimestamp() oder GetHistoryForKey()) in der Hyperledger-Fabric-Blockchain behandelt. Getestet mit v2.5.5 und v3.0.0-beta.
Das Projekt besteht aus mehreren Teilen:
Zusätzliche Funktionen zum Verständnis der Geschäftslogik: CalcDividents() – gibt die für eine bestimmte Anzahl von Tagen angesammelte Dividende und den ursprünglichen Einlagebetrag zurück. subtractTimestamp() – gibt die Differenz zwischen der aktuellen Zeit und dem Zeitpunkt der Ersteinlage zurück.
Rufen Sie Stake_insecure() auf, um eine Einlage mit dem ursprünglichen Betrag hinzuzufügen. Rufen Sie CheckDividents_insecure() auf, um sicherzustellen, dass sich der Einlagebetrag nicht geändert hat. Ändern Sie die lokale Zeit auf dem Client und rufen Sie erneut CheckDividents_insecure() auf.
Finanzieller Angriff: Das Vorstellen der Zeit um ein Jahr ermöglichte es, 20 % Jahreszinsen zu erhalten.
Erfolgreicher finanzieller Angriff
Auf gleiche Weise stellen wir fest, dass die Transaktionszeit in GetHistoryForKey() manipuliert werden kann.
In dieser Chaincode-Variante überprüfen wir die Transaktionszeit mit der Zeit, die vom NTP-Server (Network Time Protocol) bezogen wurde (unter Verwendung des NTP-Client-Pakets). Jeder Chaincode hat seine eigene NTP-Server-Adresse (d. h. unterschiedliche Chaincode-Pakete) zur Verteilung. Bei Zeitabweichung wird ein Fehler angezeigt: "wrong time". Hinweis: NTP-Verkehrsdaten können gefälscht werden (Daten werden im Klartext übertragen).
Nicht erfolgreicher finanzieller Angriff
In dieser Chaincode-Variante überprüfen wir die Transaktionszeit mit der Zeit, die vom NTS-Server (Network Time Security) bezogen wurde (unter Verwendung des NTS-Client-Pakets). Jeder Chaincode hat seine eigene NTS-Server-Adresse (d. h. unterschiedliche Chaincode-Pakete) zur Verteilung. Bei Zeitabweichung wird ein Fehler angezeigt: "wrong time".
Nicht erfolgreicher finanzieller Angriff
In dieser Chaincode-Variante überprüfen wir die Transaktionszeit mit der lokalen Zeit (d. h. der Zeit auf dem Peer-Knoten). Bei Zeitabweichung wird ein Fehler angezeigt: "wrong time". Hinweis: Auf allen Peer-Knoten muss eine korrekte Systemzeit vorhanden sein.
Nicht erfolgreicher finanzieller Angriff
hlf-time-oracle ist ein Chaincode für die Hyperledger-Fabric-Blockchain, der anderen Chaincodes eine genaue Zeit zur Verfügung stellt. hlf-time-oracle basiert auf dem NTP-Paket und dem NTS-Paket. Dadurch wird das Sicherheitsproblem gelöst, das mit der möglichen Manipulation der Transaktionszeit durch den Blockchain-Client verbunden ist. Der Chaincode stellt die Funktionen GetTimeNtp() und GetTimeNts() bereit. Der Aufruf dieser Funktionen erzeugt einen Aufruf der NTP- (Network Time Protocol) und NTS- (Network Time Security) Server. Die von einem dieser Server empfangene Zeit kann verwendet werden, um die Korrektheit der Client-seitig definierten Transaktionszeit zu überprüfen. Entwickler von Chaincodes für Blockchains können hlf-time-oracle anstelle des eigenständigen Schreibens von Code zur Interaktion mit NTP- und NTS-Servern verwenden. hlf-time-oracle speichert während seines Betriebs keine Daten in der Blockchain.