☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-29917

CVE-2025-29917 Supply Chain Attack in Suricata
📅 PUBLISHED: 2025-04-10 21:00 UTC 🔄 UPDATED: 2026-09-23 20:27 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: CONFIRMED — 3+ 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.27%
👁️
0.27% probability
6.7× 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
6.2
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-29917 is a high-severity vulnerability in Suricata, a widely used Network Intrusion Detection System (NIDS), Intrusion Prevention System (IPS), and Network Security Monitoring engine. The flaw resides in the decode_base64 keyword, where the bytes setting is not properly limited. An attacker can craft network traffic that, when processed by a Suricata signature using this keyword, triggers excessive memory allocation—up to 4 GiB per thread. This can lead to a Denial of Service (DoS) condition, exhausting system resources and potentially crashing the Suricata process. The vulnerability is fixed in Suricata version 7.0.9.

⚡ 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 is not directly related to a package manager (NPM, PyPI, Go, Ruby) but affects the Suricata engine itself, which is often distributed via operating system packages or compiled from source. Organizations should verify their Suricata version and apply the patch from the official repository or package maintainer.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.2 (Medium)
  • Attack Vector (AV): Local (AV:L) – The attacker must be able to send network traffic to the Suricata sensor.
  • Attack Complexity (AC): Low (AC:L) – No special conditions are required.
  • Privileges Required (PR): None (PR:N) – No authentication needed.
  • User Interaction (UI): None (UI:N) – No user action required.
  • Scope (S): Unchanged (S:U) – The vulnerability does not affect other components.
  • Confidentiality (C): None (C:N) – No data exposure.
  • Integrity (I): None (I:N) – No data modification.
  • Availability (A): High (A:H) – Complete loss of availability due to resource exhaustion.

Threat Level: Medium. While the CVSS score is 6.2, the potential for a single crafted packet to cause 4 GiB memory allocation per thread makes it a serious DoS risk for production environments.

Deep Dive & Mechanics

The vulnerability is in the decode_base64 keyword used in Suricata rules. This keyword decodes base64-encoded data within network packets. The bytes setting specifies how many bytes to decode. Due to insufficient input validation, an attacker can specify an extremely large value for bytes, causing Suricata to allocate memory proportional to that value. Since the allocation is per thread, a multi-threaded Suricata instance could allocate up to 4 GiB per thread, quickly exhausting available memory and leading to a crash or system instability.

The root cause is a missing upper bound check on the bytes parameter. The fix in version 7.0.9 introduces a limit to prevent excessive allocations.

Vulnerable vs. Patched Code

Vulnerable Code (simplified):

// In decode_base64 handling
int bytes = get_bytes_from_rule(rule);
char *buffer = malloc(bytes); // No limit check
if (buffer == NULL) {
    // Handle error
}

Patched Code (simplified):

// In decode_base64 handling
int bytes = get_bytes_from_rule(rule);
if (bytes > MAX_ALLOWED_BYTES) {
    // Reject or limit
    bytes = MAX_ALLOWED_BYTES;
}
char *buffer = malloc(bytes);
if (buffer == NULL) {
    // Handle error
}

The patch adds a check to cap the bytes value to a safe maximum, preventing uncontrolled memory allocation.

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A target running Suricata with a rule using decode_base64 with a bytes setting.
  • Ability to send network traffic to the Suricata sensor.

Exploit Concept: Craft a network packet that triggers a Suricata rule with decode_base64 and a large bytes value. Since no public exploit code is available, the following is a conceptual example using Python and Scapy.

#!/usr/bin/env python3
from scapy.all import *
import struct

# Craft a packet that matches a rule using decode_base64 with bytes=4294967295
# This is a simplified example; actual exploitation depends on the specific rule.
payload = b"A" * 100  # Placeholder payload
packet = IP(dst="192.168.1.100")/TCP(dport=80)/Raw(load=payload)
send(packet, iface="eth0")

Expected Outcome: Suricata allocates up to 4 GiB of memory per thread, potentially causing a crash or system slowdown.

Blue Team (Defense & Detection)

Detection:

  • Monitor memory usage of Suricata processes. A sudden spike to gigabytes per thread is a strong indicator.
  • Use the detection rules provided in the Detection Engineering section.

Mitigation:

  • Immediately upgrade to Suricata 7.0.9 or later.
  • If upgrade is not possible, remove or modify any custom rules that use decode_base64 with a large bytes value.
  • Implement resource limits (e.g., cgroups, ulimit) to cap Suricata's memory usage.

Indicators of Compromise (IOCs)

  • Network: Packets that trigger excessive memory allocation in Suricata. Specific patterns depend on the rule used.
  • System: High memory usage by Suricata processes (e.g., > 4 GiB per thread).
  • Logs: Suricata logs may show out-of-memory errors or crashes.
  • File: No specific file IOCs.

Detection Engineering

YARA Rule

rule CVE_2025_29917_Suricata_Memory_Exhaustion {
    meta:
        description = "Detects Suricata memory exhaustion attempts via decode_base64"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-29917"
    strings:
        $s1 = "decode_base64" nocase
        $s2 = "bytes" nocase
    condition:
        all of them
}

Sigma Rule

title: Suricata Memory Exhaustion via decode_base64
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects potential exploitation of CVE-2025-29917 by monitoring Suricata memory usage.
author: Valters IT
date: 2025-04-10
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/suricata'
    condition: selection
fields:
    - Image
    - CommandLine
falsepositives:
    - Legitimate high-traffic scenarios
level: high

Suricata Rule

alert tcp any any -> any any (msg:"CVE-2025-29917 - Potential decode_base64 memory exhaustion"; content:"|64 65 63 6f 64 65 5f 62 61 73 65 36 34|"; nocase; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Upgrade Suricata to version 7.0.9 or later.
  2. Workaround: If upgrade is not possible, review and modify any custom rules that use decode_base64 with a bytes setting. Limit the bytes value to a safe maximum (e.g., 65536).
  3. Monitoring: Implement memory usage monitoring for Suricata processes and set alerts for abnormal spikes.
  4. Resource Limits: Use operating system controls (e.g., ulimit, cgroups) to limit the memory a Suricata process can allocate.
  5. Network Segmentation: Restrict access to Suricata sensors to trusted networks only.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-29917/ · 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.