Skip to main content
← All vulnerabilities
CVE-2023-46132GHSA-V9W2-543F-H69MBIT-HYPERLEDGER-FABRIC-ORDERER-2023-46132BIT-HYPERLEDGER-FABRIC-PEER-2023-46132BIT-HYPERLEDGER-FABRIC-TOOLS-2023-46132

Crosslinking transaction attack in hyperledger/fabric

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.2.14, 2.5.5
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: partial

Summary

Hyperledger Fabric is an open source permissioned distributed ledger framework. Combining two molecules to one another, called "cross-linking" results in a molecule with a chemical formula that is composed of all atoms of the original two molecules. In Fabric, one can take a block of transactions and cross-link the transactions in a way that alters the way the peers parse the transactions. If a first peer receives a block B and a second peer receives a block identical to B but with the transactions being cross-linked, the second peer will parse transactions in a different way and thus its world state will deviate from the first peer. Orderers or peers cannot detect that a block has its transactions cross-linked, because there is a vulnerability in the way Fabric hashes the transactions of blocks. It simply and naively concatenates them, which is insecure and lets an adversary craft a "cross-linked block" (block with cross-linked transactions) which alters the way peers process transactions. For example, it is possible to select a transaction and manipulate a peer to completely avoid processing it, without changing the computed hash of the block. Additional validations have been added in v2.2.14 and v2.5.5 to detect potential cross-linking issues before processing blocks. Users are advised to upgrade. There are no known workarounds for this vulnerability.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • hyperledger fabric

    From 1.0.0 · fixed in 2.2.14; From 2.3.0 · fixed in 2.5.5

  • github.com/hyperledger/fabricGo

    From 1.0.0-alpha · fixed in 2.2.14

  • github.com/hyperledger/fabricGo

    From 2.3.0 · fixed in 2.5.5

References 1

GitHub · hyperledger/fabric