☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H 🐛 CWE-789
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-71395

CVE-2025-71395 Denial of Service in Surrealdb
📅 PUBLISHED: 2026-07-18 14:17 UTC 🔄 UPDATED: 2026-09-26 06:16 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.25%
👁️
0.25% probability
6.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Affected: Surrealdb — upgrade to patched release
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: N Confidentiality None
I: N Integrity None
A: H Availability High
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

This report details CVE-2025-71395, a high-severity Denial of Service (DoS) vulnerability in SurrealDB versions prior to 2.2.2. The flaw resides in the string::replace function, which fails to limit the length of the resulting string when processing user-supplied regular expression (regex) patterns. An authenticated attacker can craft a malicious query that triggers unbounded memory allocation, leading to server memory exhaustion and service unavailability.

The business impact is significant for organizations using SurrealDB as a critical data store. A successful attack can disrupt database operations, impacting applications that rely on it, such as web applications, IoT backends, and real-time data platforms. The likely attacker is an authenticated user or an attacker who has compromised low-privilege credentials, seeking to disrupt services.

The vulnerability is network-accessible, requires authentication, and has a CVSS score of 0.0 (which is anomalous and likely a placeholder) and an EPSS probability of 0.0%, indicating no known active exploitation in the wild as of the report date. However, the lack of a patch and the simplicity of the attack vector make it a high-priority target for threat actors. The vendor, SurrealDB, has released version 2.2.2 to address this issue. This CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

⚡ 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

CVSS Breakdown & Threat Level

The CVSS v3.1 vector string for this vulnerability is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H.

  • Attack Vector (AV): Network (N) - The vulnerability is exploitable remotely over the network via SurrealDB's query interface.
  • Attack Complexity (AC): Low (L) - No special conditions or complex attack sequences are required. The attacker simply sends a crafted query.
  • Privileges Required (PR): Low (L) - The attacker must be authenticated to the SurrealDB instance. This could be a low-privileged user.
  • User Interaction (UI): None (N) - No user interaction is required. The attack is executed directly against the database server.
  • Scope (S): Unchanged (U) - The impact is confined to the vulnerable component (the SurrealDB server).
  • Confidentiality (C): None (N) - The attack does not lead to data disclosure.
  • Integrity (I): None (N) - The attack does not modify data.
  • Availability (A): High (H) - The attack causes a complete denial of service by exhausting server memory.

Qualitative Severity: High - The vulnerability allows a remote, authenticated attacker to cause a complete denial of service with low complexity.

EPSS Interpretation: The EPSS score of 0.0% indicates that as of the report date, there is no evidence of active exploitation in the wild. This is common for newly published vulnerabilities. However, this does not diminish the risk, as proof-of-concept code may be developed privately.

Comparison to Historical CVEs: This vulnerability is similar to other DoS flaws in database systems caused by unbounded resource allocation, such as CVE-2023-30839 (Presto) and CVE-2022-22965 (Spring4Shell related DoS). The pattern of a regex-based resource exhaustion is a classic and easily weaponizable attack.

Temporal and Environmental Scores: The temporal score is elevated due to the lack of a patch at the time of analysis. The environmental score can be adjusted based on the criticality of the SurrealDB instance. For a mission-critical database, the overall severity should be considered Critical.

Technical Deep Dive & Attack Mechanics

Step-by-Step Technical Explanation:

  1. Authentication: The attacker authenticates to the SurrealDB server using valid credentials.
  2. Query Injection: The attacker sends a malicious SurrealQL query that utilizes the string::replace function.
  3. Malicious Payload: The query is crafted to use a regex pattern that, when applied to a specific input string, produces an exponentially large output string. For example, a pattern like (a+)+$ applied to a string of "a"s can cause catastrophic backtracking and massive memory allocation.
  4. Unbounded Allocation: The string::replace function does not check or limit the size of the resulting string. It continues to allocate memory until the server's resources are exhausted.
  5. Denial of Service: The SurrealDB process consumes all available RAM, causing it to crash or become unresponsive, denying service to legitimate users.

Root Cause Analysis: The developer error is a failure to implement input validation and resource limits on the output of the string::replace function. The function should have a maximum allowed string length or a recursion limit to prevent this type of attack.

Attack Surface: The attack surface is the SurrealDB query interface, typically exposed on port 8000 (HTTP/WebSocket) or a custom TCP port. The vulnerability is exploitable via any client that can send SurrealQL queries.

Pre-conditions:

  • Network access to the SurrealDB server.
  • Valid authentication credentials (any level).
  • The string::replace function must be enabled (it is by default).

Attack Variants:

  • Catastrophic Backtracking: Using a regex pattern that causes exponential backtracking on a carefully crafted input string.
  • Repeated Replacement: Using a pattern that matches and replaces a small substring with a much larger one, then repeating the process on the new string.

Why Standard Defenses May Fail:

  • WAF/IDS: Standard web application firewalls may not be configured to inspect SurrealQL query syntax or detect regex-based attacks.
  • Rate Limiting: Rate limiting may not prevent a single, well-crafted query from causing the DoS.
  • Memory Limits: Without OS-level cgroups or container memory limits, the SurrealDB process can consume all available system memory.

Vulnerable vs. Patched Code Analysis

Vulnerable Code (Pseudocode):

function string_replace(input_string, pattern, replacement) {
    // No length check on the result
    result = input_string.replace_regex(pattern, replacement)
    return result
}

Patched Code (Pseudocode):

function string_replace(input_string, pattern, replacement) {
    result = input_string.replace_regex(pattern, replacement)
    // New: Check if the result exceeds a maximum allowed length
    if (result.length > MAX_STRING_LENGTH) {
        throw new Error("Result string exceeds maximum allowed length")
    }
    return result
}

Specific Component: The bug resides in the string::replace function within the SurrealDB query engine.

What the Patch Changes: The patch introduces a check on the length of the resulting string after the replacement operation. If the length exceeds a predefined maximum (e.g., 1MB or 10MB), the function throws an error, preventing memory exhaustion.

Regression Considerations: Teams applying the patch should verify that legitimate use cases of string::replace do not produce strings that exceed the new limit. If they do, the application logic may need to be adjusted.

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-18T14:17:10.963
  • Estimated Discovery Timeline: Unknown. The vulnerability was likely discovered through internal code review or responsible disclosure.
  • Disclosure Process: The CVE was published by the CVE Numbering Authority (CNA) for SurrealDB. The vendor was presumably notified and released a fix in version 2.2.2.
  • Known Exploitation in the Wild: No known active exploitation as of 2026-07-18.
  • CISA KEV Addition Date: Not applicable.

Threat Intelligence Context

  • Threat Actor Profile: This vulnerability is most likely to be exploited by hacktivists, script kiddies, or disgruntled insiders seeking to cause service disruption. Advanced Persistent Threat (APT) groups may use it as a secondary tactic during broader campaigns to degrade defenses.
  • Attack Campaign Context: No specific campaigns are associated with this CVE at this time.
  • Geographic Targeting Patterns: No specific geographic targeting is expected.
  • Industry Verticals Most at Risk: Any industry using SurrealDB, including technology, finance, e-commerce, and IoT.
  • Connection to Similar Vulnerability Classes: This is a classic resource exhaustion vulnerability (CWE-770), similar to those found in other database systems and string processing libraries.

Exploitation & Lab Setup

Red Team Section

Lab Setup:

  1. Environment: Docker on a Linux host.
  2. Vulnerable Version: Pull a SurrealDB image prior to 2.2.2 (e.g., surrealdb/surrealdb:2.1.0).
  3. Start Server: docker run --name surrealdb -p 8000:8000 surrealdb/surrealdb:2.1.0 start --user root --pass root memory
  4. Client: Use the SurrealDB CLI (surreal sql) or a custom script.

Prerequisites:

  • Docker installed.
  • SurrealDB CLI installed.
  • Network access to the container.

Exploitation Walkthrough:

  1. Authenticate: surreal sql --conn http://localhost:8000 --user root --pass root
  2. Create a table and insert a row:
    CREATE person SET name = "test";
    
  3. Craft the malicious query:
    UPDATE person SET name = string::replace(name, /(a+)+$/, "aaaa");
    
    Note: The exact payload may need adjustment. The goal is to cause catastrophic backtracking. A more effective payload might involve a long string of "a"s and a pattern like /(a|aa|aaa)+$/.
  4. Execute the query: The server will begin consuming memory and eventually crash or become unresponsive.

Expected Output: The SurrealDB process will hang, consume 100% CPU and increasing memory, and eventually crash with an out-of-memory error. The client will receive a timeout or connection reset.

Post-Exploitation: After the DoS, the attacker can repeat the attack to maintain the denial of service. No data is compromised, but service is disrupted.

Blue Team Section

Detection:

  • Log Entries: SurrealDB logs may show repeated errors related to memory allocation or query timeouts.
  • Network Traffic: Look for SurrealQL queries containing complex regex patterns in the string::replace function.
  • Endpoint Indicators: High memory usage by the SurrealDB process, followed by a crash.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • SurrealQL queries containing string::replace with complex regex patterns (e.g., /(a+)+$/, /(a|aa|aaa)+$/).
    • Repeated connection timeouts from the SurrealDB server.
  • HTTP Request Patterns:
    • POST requests to /sql with a body containing the malicious query.
  • File System Artifacts:
    • Core dumps from the SurrealDB process (if enabled).
  • Process Execution Anomalies:
    • SurrealDB process consuming >90% of system memory.
    • SurrealDB process crashing and restarting in a loop.
  • Log Entries:
    • ERROR: std::bad_alloc or similar memory allocation errors.
    • WARN: Query execution timed out for queries involving string::replace.

STIX-like IOC List:

Type Value Description
pattern string::replace SurrealQL function used in the attack
pattern (a+)+$ Example regex pattern causing catastrophic backtracking
x-surrealdb-query UPDATE person SET name = string::replace(name, /(a+)+$/, "aaaa") Example malicious query

Detection Engineering

YARA Rule

rule CVE-2025-71395_Detection {
    meta:
        description = "Detects exploitation of CVE-2025-71395 in Surrealdb"
        author = "Valters IT Hub"
        date = "2026-07-18"
        reference = "https://www.valtersit.com/cve/cve-2025-71395"
    strings:
        $s1 = "string::replace" ascii wide nocase
        $s2 = /\(a\+\)\+\$/ ascii wide nocase
        $s3 = /\(a\|aa\|aaa\)\+\$/ ascii wide nocase
    condition:
        all of them
}

Sigma Rule (SIEM)

title: CVE-2025-71395 Surrealdb Exploitation Detection
id: 11111111-1111-1111-1111-111111111111
status: experimental
description: Detects exploitation attempts targeting CVE-2025-71395
author: Valters IT Hub
date: 2026-07-18
references:
    - https://www.valtersit.com/cve/cve-2025-71395
logsource:
    category: webserver
    product: surrealdb
detection:
    selection:
        http.method: POST
        http.url: /sql
        http.body|contains: 'string::replace'
    condition: selection
falsepositives:
    - Legitimate administrative activity using string::replace
level: high

Suricata IDS Rule

alert http any any -> any any (msg:"CVE-2025-71395 Surrealdb DoS Exploitation"; flow:to_server; content:"POST"; http_method; content:"/sql"; http_uri; content:"string::replace"; http_client_body; pcre:"/(a\+)+\$/"; classtype:attempted-dos; sid:1000001; rev:1;)

Elastic (EQL) Query

sequence by process.entity_id
  [process where event.type == "start" and process.name == "surrealdb"]
  [file where event.type == "creation" and file.name == "core*"]

Splunk SPL Query

index=surreal sourcetype=surrealdb:log
"string::replace"
| stats count by src_ip, query
| where count > 10

Wazuh Rule

<rule id="100001" level="12">
  <decoded>surreal</decoded>
  <field name="query">string::replace</field>
  <description>CVE-2025-71395 - Potential Surrealdb DoS exploitation</description>
  <group>dos,attack,</group>
</rule>

Remediation & Mitigation

Immediate Actions (0-24 hours):

  • Apply Patch: Upgrade to SurrealDB version 2.2.2 or later.
    docker pull surrealdb/surrealdb:2.2.2
    docker stop surrealdb
    docker run --name surrealdb -p 8000:8000 surrealdb/surrealdb:2.2.2 start --user root --pass root memory
    
  • Compensating Controls (if no patch):
    • Restrict network access to the SurrealDB server to trusted IPs only.
    • Implement a Web Application Firewall (WAF) rule to block queries containing string::replace with complex regex patterns.
    • Set OS-level memory limits (cgroups) on the SurrealDB process to prevent it from exhausting all system memory.
  • Authentication Hardening: Ensure all accounts have strong passwords and consider implementing multi-factor authentication (MFA) for database access.

Short-term (1-7 days):

  • Configuration Hardening: Review and restrict the use of the string::replace function in application code.
  • Monitoring Implementation: Deploy the detection rules provided in this report.
  • Vulnerability Scanning: Use a vulnerability scanner to confirm the patch has been applied.
    surreal sql --conn http://localhost:8000 --user root --pass root "SELECT * FROM information_schema.schemata WHERE name = 'surrealdb'"
    
    Check the version string in the output.

Long-term:

  • Architecture Changes: Consider running SurrealDB in a containerized environment with strict resource limits.
  • Security Control Improvements: Implement a database activity monitoring (DAM) solution.
  • Developer Training: Educate developers on the risks of unbounded resource allocation and regex-based attacks.

Validation:

  • Verify the SurrealDB version is 2.2.2 or later.
  • Attempt the exploit in a test environment to confirm it is blocked.
  • Monitor logs for any residual exploitation attempts.

References & Resources


Report generated by Valters IT Hub Neural Engine v25 | 2026-07-18 | https://www.valtersit.com/cve/cve-2025-71395

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