CVE-2023-42449
📋 TL;DR
This vulnerability in Hydra (Cardano's scalability solution) allows a malicious head initializer to steal participant tokens (PTs) during protocol initialization. Attackers can then permanently lock other participants' committed funds or force them to pay ransom. All Hydra users running versions before 0.13.0 are affected.
💻 Affected Systems
- Hydra (Cardano scalability solution)
📦 What is this software?
Hydra by Iohk
⚠️ Risk & Real-World Impact
Worst Case
Malicious initializer permanently locks all other participants' committed funds, making them irrecoverable without paying ransom to the attacker.
Likely Case
Initializer extracts PTs to lock specific participants' funds or spoof commitments, forcing other participants to cover fraudulent transactions during fanout.
If Mitigated
With proper validation checks, PT extraction is prevented, ensuring all participants can reclaim funds and commitments are verified.
🎯 Exploit Status
Exploitation requires being a head initializer with malicious intent. The vulnerability is well-documented in the advisory with specific code locations.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 0.13.0
Vendor Advisory: https://github.com/input-output-hk/hydra/security/advisories/GHSA-9m8q-7wxv-v65p
Restart Required: Yes
Instructions:
1. Stop all Hydra nodes. 2. Update to version 0.13.0 or later. 3. Restart Hydra nodes. 4. Verify the fix by checking that head token validation now properly checks datums against real head IDs.
🔧 Temporary Workarounds
Disable Hydra Head Initialization
allTemporarily disable new Hydra head initialization until patching is complete.
# Configure Hydra to reject new head initialization requests
# Implementation depends on specific deployment configuration
🧯 If You Can't Patch
- Only participate in Hydra heads with trusted initializers you have verified
- Monitor for abnormal head initialization patterns and abort suspicious heads immediately
🔍 How to Verify
Check if Vulnerable:
Check Hydra version: if running any version before 0.13.0, the system is vulnerable.
Check Version:
hydra-node --version
Verify Fix Applied:
Verify version is 0.13.0 or later and confirm that head token validation logic now includes proper datum equality checks against head IDs.
📡 Detection & Monitoring
Log Indicators:
- Unexpected PT extraction during head initialization
- Head initialization transactions with mismatched datums
- Failed abort transactions due to missing PTs
Network Indicators:
- Abnormal head initialization patterns
- Multiple head initializations from same malicious actor
SIEM Query:
Search for: 'head initialization' AND ('PT extraction' OR 'datum mismatch' OR 'validation failure')
🔗 References
- https://github.com/input-output-hk/hydra/blob/1e13b60a7b21c5ccd6c36e3cf220547f5d443cef/hydra-node/src/Hydra/Chain/Direct/Tx.hs#L645-L761
- https://github.com/input-output-hk/hydra/blob/1e13b60a7b21c5ccd6c36e3cf220547f5d443cef/hydra-plutus/src/Hydra/Contract/Initial.hs#L84-L91
- https://github.com/input-output-hk/hydra/blob/master/CHANGELOG.md#0130---2023-10-03
- https://github.com/input-output-hk/hydra/blob/master/hydra-plutus/src/Hydra/Contract/HeadTokens.hs#L76-L136
- https://github.com/input-output-hk/hydra/security/advisories/GHSA-9m8q-7wxv-v65p
- https://github.com/input-output-hk/hydra/blob/1e13b60a7b21c5ccd6c36e3cf220547f5d443cef/hydra-node/src/Hydra/Chain/Direct/Tx.hs#L645-L761
- https://github.com/input-output-hk/hydra/blob/1e13b60a7b21c5ccd6c36e3cf220547f5d443cef/hydra-plutus/src/Hydra/Contract/Initial.hs#L84-L91
- https://github.com/input-output-hk/hydra/blob/master/CHANGELOG.md#0130---2023-10-03
- https://github.com/input-output-hk/hydra/blob/master/hydra-plutus/src/Hydra/Contract/HeadTokens.hs#L76-L136
- https://github.com/input-output-hk/hydra/security/advisories/GHSA-9m8q-7wxv-v65p