☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 🐛 CWE-400
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-32972

CVE-2024-32972 Supply Chain Attack in Go-ethereum
📅 PUBLISHED: 2024-05-06 14:26 UTC 🔄 UPDATED: 2026-09-23 20:19 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.85%
👁️
0.85% probability
21.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-32972 is a high-severity denial-of-service (DoS) vulnerability in go-ethereum (geth), the primary Golang execution layer implementation of the Ethereum protocol. An unauthenticated, remote attacker can exploit this flaw by sending specially crafted p2p messages to a vulnerable node, causing it to consume excessive memory resources. This can lead to node instability, crashes, or complete unavailability, disrupting network participation and potentially impacting dependent services. The vulnerability affects all geth versions prior to 1.13.15. The fix is included in geth version 1.13.15 and onwards.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the Go package github.com/ethereum/go-ethereum. Organizations using geth as part of their infrastructure must ensure they are not pulling vulnerable versions from package registries or building from source without applying the patch. The supply chain risk is moderate, as the vulnerable component is a core network client; a compromised or crashed node can lead to loss of consensus participation and financial losses for staking or transaction processing services.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.5 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Attack Vector (AV): Network – The attack is performed remotely over the network.
  • Attack Complexity (AC): Low – No special conditions are required; the attack can be executed repeatedly.
  • Privileges Required (PR): None – No authentication is needed.
  • User Interaction (UI): None – The victim node does not need to perform any action.
  • Scope (S): Unchanged – The vulnerability only affects the vulnerable component.
  • Confidentiality (C): None – No data is exposed.
  • Integrity (I): None – No data is modified.
  • Availability (A): High – The vulnerability directly impacts node availability, leading to a denial of service.

Threat Level: High. The low attack complexity and lack of authentication make this an attractive target for attackers aiming to disrupt Ethereum network operations.

Deep Dive & Mechanics

The vulnerability resides in the p2p (peer-to-peer) message handling logic of geth. The Ethereum p2p protocol uses RLPx for encrypted transport and devp2p for sub-protocol messaging. When a node receives a message, it must decode and process it. The flaw is triggered by a specially crafted message that causes the decoder to allocate an excessive amount of memory.

Root Cause: The issue is likely in the message size validation or memory allocation during the decoding of certain p2p message types. An attacker can send a message with a malformed length field or nested structure that forces the node to allocate memory proportional to the attacker-controlled data, leading to memory exhaustion.

Attack Flow:

  1. Attacker identifies a geth node (version < 1.13.15) with an open p2p port (default 30303).
  2. Attacker establishes a TCP connection and performs the RLPx handshake.
  3. Attacker sends a specially crafted devp2p message (e.g., a Disconnect, Ping, Pong, or FindNode message with manipulated payload).
  4. The vulnerable node begins decoding the message, allocating memory based on the crafted data.
  5. Memory consumption spikes, potentially causing the node to crash (OOM) or become unresponsive.

Vulnerable vs. Patched Code

The exact code change is not publicly detailed, but the fix in version 1.13.15 likely involves:

  • Vulnerable: The message decoder does not properly limit the maximum size of incoming p2p messages or the depth of nested structures.
  • Patched: The decoder now enforces strict size limits and depth checks, rejecting oversized or malformed messages before memory allocation.

Conceptual Example (Vulnerable):

func decodeMessage(data []byte) (*Message, error) {
    // No size check on data
    msg := new(Message)
    err := rlp.DecodeBytes(data, msg)
    // ...
}

Conceptual Example (Patched):

func decodeMessage(data []byte) (*Message, error) {
    if len(data) > maxMessageSize {
        return nil, errors.New("message too large")
    }
    msg := new(Message)
    err := rlp.DecodeBytes(data, msg)
    // ...
}

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A vulnerable geth node (version < 1.13.15) running on a test network.
  • A custom script or tool to craft malicious p2p messages.

Lab Setup:

  1. Victim Node: Run a geth node on a private testnet (e.g., using --dev mode) with version 1.13.14.
    geth --dev --http --http.port 8545 --port 30303
    
  2. Attacker Node: Use a Python script with the rlpx library or raw socket programming to send crafted messages.

Exploit Script (Python - Conceptual):

import socket
import struct

# Craft a malicious RLPx message (simplified)
def craft_malicious_message():
    # This would contain a malformed payload that triggers memory allocation
    payload = b'\x00' * 10_000_000  # 10MB of zeros
    # Wrap in RLPx frame
    frame = struct.pack('>I', len(payload)) + payload
    return frame

def exploit(target_ip, target_port=30303):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((target_ip, target_port))
    # Perform RLPx handshake (omitted for brevity)
    # Send malicious message
    msg = craft_malicious_message()
    sock.send(msg)
    sock.close()

if __name__ == '__main__':
    exploit('192.168.1.100')

Expected Outcome: The victim node's memory usage spikes, and it may crash or become unresponsive.

Blue Team (Defense & Detection)

Defensive Measures:

  • Immediate Patching: Upgrade to geth 1.13.15 or later.
  • Network Segmentation: Restrict p2p port (30303) access to only known peers using firewall rules.
  • Rate Limiting: Implement connection rate limiting and message size limits at the network perimeter.
  • Monitoring: Monitor memory usage of geth processes and set alerts for abnormal spikes.

Detection:

  • Monitor for rapid memory consumption in geth processes.
  • Analyze p2p traffic for unusually large message sizes.
  • Use the detection rules provided below.

Indicators of Compromise (IOCs)

  • Network Indicators:
    • Unusually large p2p messages (>1MB) on port 30303/TCP.
    • Rapid connection attempts from a single IP to multiple geth nodes.
  • Host Indicators:
    • geth process consuming >2GB of memory unexpectedly.
    • geth process crashing with out-of-memory (OOM) errors.
    • Log entries indicating "message too large" or "decode error" after patching.
  • File Indicators:
    • Core dumps from geth crashes (if enabled).

Detection Engineering

YARA Rule

rule CVE_2024_32972_Memory_Exhaustion {
    meta:
        description = "Detects potential memory exhaustion attack against geth p2p"
        author = "Valters IT"
        date = "2024-10-27"
        reference = "CVE-2024-32972"
    strings:
        $rlpx_header = { 22 00 00 00 }  // RLPx frame header (example)
        $large_payload = { 00 00 00 01 00 00 00 }  // Large size indicator
    condition:
        $rlpx_header at 0 and $large_payload
}

Sigma Rule

title: CVE-2024-32972 - geth Memory Exhaustion via Malformed P2P Messages
id: 8a9b3c2d-1e5f-4a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects excessive memory consumption in geth processes indicative of exploitation.
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/geth'
    condition: selection
    timeframe: 5m
    aggregation:
        field: Image
        function: sum
        metric: MemoryUsage
        condition: gt 2000000000  # 2GB
falsepositives:
    - Legitimate high-traffic nodes
level: high

Suricata Rule

alert tcp any any -> any 30303 (msg:"CVE-2024-32972 - Potential geth Memory Exhaustion Attack"; flow:to_server; content:"|22 00 00 00|"; depth:4; byte_test:4,>,1048576,0,relative; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Patch: Upgrade all geth nodes to version 1.13.15 or later.
    # Using Go
    go get github.com/ethereum/go-ethereum@v1.13.15
    # Or download binary from official releases
    
  2. Restart: Restart all geth services after patching.

Mitigation (if patching is delayed):

  • Firewall: Restrict inbound connections to port 30303 to only known, trusted peer IPs.
  • Monitoring: Implement real-time memory monitoring and alerting for geth processes.
  • Resource Limits: Use systemd or Docker to limit the memory available to the geth container/process (e.g., --memory=4g in Docker).

Long-Term:

  • Regularly update geth to the latest stable version.
  • Subscribe to the go-ethereum security mailing list for future advisories.
  • Implement network intrusion detection systems (NIDS) with the provided Suricata rule.

Valters IT
DevSecOps & Cyber Threat Intelligence

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-32972/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.