CVE-2023-40591
📋 TL;DR
This vulnerability in go-ethereum (geth) allows attackers to send specially crafted P2P messages that cause vulnerable nodes to consume unbounded amounts of memory, potentially leading to denial of service. All Ethereum nodes running vulnerable geth versions are affected. The vulnerability can be exploited remotely without authentication.
💻 Affected Systems
- go-ethereum (geth)
📦 What is this software?
Go Ethereum by Ethereum
⚠️ Risk & Real-World Impact
Worst Case
Complete node crash and denial of service, potentially disrupting Ethereum network operations and causing financial losses for node operators.
Likely Case
Memory exhaustion leading to node instability, degraded performance, and eventual crash requiring manual restart.
If Mitigated
No impact if patched version is running or if network controls prevent malicious P2P traffic.
🎯 Exploit Status
No public exploit code available, but vulnerability details are public.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.12.1-stable and later (including 1.12.2-unstable)
Vendor Advisory: https://github.com/ethereum/go-ethereum/security/advisories/GHSA-ppjg-v974-84cm
Restart Required: Yes
Instructions:
1. Stop the geth service. 2. Backup configuration and data. 3. Download and install geth v1.12.1 or later from official sources. 4. Restart the geth service.
🔧 Temporary Workarounds
No known workarounds
allThe vendor states there are no known workarounds for this vulnerability.
🧯 If You Can't Patch
- Implement network segmentation to restrict P2P traffic to trusted nodes only
- Monitor memory usage and restart nodes if abnormal consumption is detected
🔍 How to Verify
Check if Vulnerable:
Check geth version with 'geth version' command. If version is below 1.12.1, the system is vulnerable.
Check Version:
geth version
Verify Fix Applied:
Run 'geth version' and confirm version is 1.12.1 or higher.
📡 Detection & Monitoring
Log Indicators:
- Abnormal memory consumption patterns
- Node crash logs
- Out of memory errors in system logs
Network Indicators:
- Unusual P2P traffic patterns
- High volume of incoming P2P connections
SIEM Query:
source="geth.log" AND ("out of memory" OR "panic" OR "fatal") OR source="system.log" AND process="geth" AND ("killed" OR "oom")
🔗 References
- https://geth.ethereum.org/docs/developers/geth-developer/disclosures
- https://github.com/ethereum/go-ethereum/releases/tag/v1.12.1
- https://github.com/ethereum/go-ethereum/security/advisories/GHSA-ppjg-v974-84cm
- https://geth.ethereum.org/docs/developers/geth-developer/disclosures
- https://github.com/ethereum/go-ethereum/releases/tag/v1.12.1
- https://github.com/ethereum/go-ethereum/security/advisories/GHSA-ppjg-v974-84cm