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

CVE-2024-58368

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

Executive Summary

This report details CVE-2024-58368, a high-severity vulnerability in SurrealDB versions prior to 1.1.0. The flaw allows an unauthenticated, remote attacker to crash the database server by sending a crafted HTTP request with malformed header values. The root cause is improper parsing of the ID, DB, and NS headers in the HTTP REST API, leading to an uncaught exception and a denial-of-service (DoS) condition.

Business Impact: SurrealDB is a multi-model database used in web applications, real-time systems, and microservices architectures. A successful attack can cause service disruption, leading to application downtime, data unavailability, and potential business continuity issues for organizations relying on SurrealDB for critical operations. The likely attacker is a low-sophistication threat actor or script kiddie seeking to cause disruption, as the attack requires no authentication and is simple to execute.

Vulnerability Class & Attack Vector: This is a Denial of Service (DoS) vulnerability. The attack vector is network-based, exploitable via the HTTP REST API. No authentication is required.

Urgency Assessment: The CVSS score of 7.5 (High) combined with an EPSS probability of 0.0% indicates a high theoretical impact but very low current exploitation activity. The lack of a public PoC and the "unpatched" status (as of the report date) elevate the urgency for proactive mitigation. Organizations should prioritize patching once a fix is available.

Key Facts:

  • Vendor: SurrealDB
  • Affected Versions: All versions before 1.1.0
  • Patch Status: Unpatched (as of 2026-07-18). A fix is available in version 1.1.0.
  • CISA KEV: Not listed.
⚡ 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

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

  • AV:N (Network): The vulnerability is exploitable remotely over the network via HTTP requests to the REST API.
  • AC:L (Low): The attack does not require any special conditions or complex steps. A crafted HTTP request with malformed headers is sufficient.
  • PR:N (None): The attacker does not need any authentication or privileges to exploit the vulnerability.
  • UI:N (None): The attack does not require any user interaction. The attacker sends the request directly to the server.
  • S:U (Unchanged): A successful attack does not compromise other components; it only affects the SurrealDB server itself.
  • C:N (None): There is no impact on data confidentiality.
  • I:N (None): There is no impact on data integrity.
  • A:H (High): The vulnerability causes a complete denial of service, crashing the server and making it unavailable.

Qualitative Severity: High. The vulnerability is remotely exploitable without authentication and results in a complete loss of availability.

EPSS Percentile Interpretation: An EPSS probability of 0.0% means that as of the report date, there is no observed exploitation in the wild. This is common for newly published CVEs or those with no public PoC. It does not mean the vulnerability is not dangerous; it simply indicates a lack of current active exploitation.

Comparison to Similar CVEs: This vulnerability is similar to other DoS flaws in database HTTP interfaces, such as those caused by improper input validation in MongoDB or Elasticsearch. The key differentiator is the specific attack vector (malformed headers) and the lack of authentication required.

Temporal & Environmental Score Considerations:

  • Temporal: The score is likely to increase if a public PoC or exploit code is released. The current "unpatched" status also elevates the risk.
  • Environmental: Organizations with SurrealDB exposed to the internet face the highest risk. Those with the database behind a firewall or VPN have a reduced attack surface.

Technical Deep Dive & Attack Mechanics

Step-by-Step Technical Explanation:

  1. Normal Operation: SurrealDB's HTTP REST API accepts requests with headers like NS (namespace), DB (database), and ID (record ID). The server parses these headers to route the request to the correct database context.
  2. Vulnerable Code Path: The parsing logic for these headers does not properly handle special characters (e.g., %, \, ", or non-printable characters). When a malformed header value is received, the parser enters an unexpected state.
  3. Triggering the Exception: An attacker sends an HTTP request with a header like NS: %00 or DB: \x00 (null byte) or a very long string of special characters. The parser fails to sanitize or validate this input.
  4. Uncaught Exception: The malformed input causes a low-level error (e.g., a panic in Rust, a segmentation fault, or an unhandled exception in the application logic). This exception is not caught by the application's error handling, leading to a crash.
  5. Denial of Service: The SurrealDB server process terminates. All active connections are dropped, and the database becomes unavailable until the service is manually restarted or an auto-restart mechanism kicks in.

Root Cause Analysis: The developer failed to implement proper input validation and sanitization for the ID, DB, and NS HTTP headers. The code likely assumed these headers would contain only alphanumeric characters or standard identifiers, without considering edge cases like null bytes, control characters, or excessively long strings.

Attack Surface:

  • Interface: HTTP REST API (typically port 8000 or 8080).
  • Protocol: HTTP/1.1 or HTTP/2.
  • Exploitable Headers: NS, DB, ID.

Pre-conditions:

  • Network access to the SurrealDB HTTP API.
  • No authentication required.

Attack Variants:

  • Null Byte Injection: Sending a header with a null byte (%00) to cause a panic in the string handling.
  • Long String Attack: Sending an extremely long header value to cause a buffer overflow or memory exhaustion.
  • Special Character Injection: Using characters like \, ", or % to break the parsing logic.

Why Standard Defenses May Fail:

  • WAF Bypass: A Web Application Firewall (WAF) may not have a specific rule for this vulnerability, as it targets specific SurrealDB headers. Generic SQL injection or XSS rules will not block this.
  • Input Validation: Standard input validation at the network perimeter may not inspect HTTP headers deeply enough.
  • Rate Limiting: Rate limiting will not prevent a single crafted request from crashing the server.

Vulnerable vs. Patched Code Analysis

Vulnerable Code (Pseudocode):

// Vulnerable SurrealDB HTTP handler (simplified)
fn handle_request(request: HttpRequest) -> Result<Response, Error> {
    let ns = request.headers.get("NS").unwrap_or_default();
    let db = request.headers.get("DB").unwrap_or_default();
    let id = request.headers.get("ID").unwrap_or_default();

    // Directly using the header values without validation
    let session = Session::new(ns, db, id);
    // ... process request ...
}

Patched Code (Pseudocode):

// Patched SurrealDB HTTP handler (simplified)
fn handle_request(request: HttpRequest) -> Result<Response, Error> {
    let ns = request.headers.get("NS").unwrap_or_default();
    let db = request.headers.get("DB").unwrap_or_default();
    let id = request.headers.get("ID").unwrap_or_default();

    // Input validation and sanitization
    if !is_valid_namespace(&ns) || !is_valid_database(&db) || !is_valid_id(&id) {
        return Err(Error::BadRequest("Invalid header value"));
    }

    let session = Session::new(ns, db, id);
    // ... process request ...
}

fn is_valid_namespace(value: &str) -> bool {
    // Check for allowed characters, length limits, and no null bytes
    value.chars().all(|c| c.is_alphanumeric() || c == '_' || c == '-') && value.len() < 256
}

What the Patch Changes: The patch adds input validation functions (is_valid_namespace, is_valid_database, is_valid_id) that check for:

  • Allowed character sets (alphanumeric, underscores, hyphens).
  • Maximum length limits.
  • Rejection of null bytes and other control characters.

Is the Fix Sufficient? The fix appears sufficient if the validation is comprehensive. However, it must also handle edge cases like Unicode normalization or encoding bypasses.

Regression Considerations: The patch may break applications that use special characters in namespace, database, or record IDs. Teams should test their application's compatibility with the new validation rules before deploying the patch.

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-18T14:17:09.867
  • Estimated Discovery Timeline: Unknown. The vulnerability was likely discovered through internal security testing 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 1.1.0.
  • 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:

  • Script Kiddies: Low-sophistication attackers using automated tools to scan for and crash vulnerable SurrealDB instances.
  • Hacktivists: Groups seeking to cause service disruption for political or ideological reasons.
  • Ransomware Operators (Pre-Encryption): Some ransomware groups use DoS attacks as a distraction or to disable security monitoring before deploying ransomware.

Attack Campaign Context: No specific campaigns are known to be using this CVE.

Geographic Targeting Patterns: Unknown. The attack is opportunistic and targets any internet-exposed SurrealDB instance.

Industry Verticals Most at Risk:

  • Technology: Companies using SurrealDB for SaaS products.
  • E-commerce: Real-time inventory and user session management.
  • Gaming: Leaderboards and player data storage.
  • IoT: Device state management.

Connection to Similar Vulnerability Classes: This is a classic input validation failure leading to a DoS, similar to vulnerabilities in other database systems (e.g., CVE-2021-44228 in Log4j, though that was RCE). The pattern of "untrusted input → uncaught exception → crash" is common in applications written in languages like Rust, Go, or C++.

Exploitation & Lab Setup

Red Team Section

Lab Setup:

  1. Environment: Docker on a local machine or cloud VM.
  2. Vulnerable Version: surrealdb/surrealdb:1.0.0 (or any version < 1.1.0).
  3. Network: Ensure the SurrealDB HTTP API is accessible (default port 8000).
  4. Start the Server:
    docker run -d --name surrealdb-vuln -p 8000:8000 surrealdb/surrealdb:1.0.0 start
    

Exploitation Walkthrough:

  1. Craft the Malicious Request: Use curl to send a request with a malformed NS header.
    curl -X GET "http://localhost:8000/sql" \
      -H "NS: %00" \
      -H "DB: test" \
      -H "Accept: application/json"
    
  2. Observe the Crash: The server process will terminate. The Docker container will exit.
    docker ps -a | grep surrealdb-vuln
    # Output: CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS                     PORTS     NAMES
    # xxxxxxxx   surrealdb/surrealdb:1.0.0   "/surreal start"         10 seconds ago   Exited (1) 5 seconds ago              surrealdb-vuln
    
  3. Expected Output: The server becomes unresponsive. Any subsequent requests will fail with a connection refused error.

Post-Exploitation: After a successful crash, the attacker can:

  • Repeatedly crash the server to cause persistent DoS.
  • Use the downtime to perform other attacks (e.g., if the server is part of a larger infrastructure).
  • No data is stolen or modified.

Blue Team Section

Detection:

  • Log Entries: The SurrealDB server logs may show an error before crashing, such as "panic: invalid header value" or "thread 'main' panicked at ...".
  • Network Traffic: A single HTTP request with unusual characters in the NS, DB, or ID headers.
  • Endpoint Behavioral Indicators: The SurrealDB process exits unexpectedly. A monitoring system (e.g., systemd) may show a "failed" or "crashed" status.

Indicators of Compromise (IOCs)

Network IOCs:

  • Suspicious Ports: Port 8000 (default SurrealDB HTTP API).
  • Connection Patterns: A single HTTP request followed by a connection reset or timeout.

HTTP Request Patterns:

  • Headers: NS, DB, or ID containing:
    • Null bytes (%00 or \x00).
    • Control characters (e.g., %01-%1F).
    • Very long strings (> 1024 characters).
    • Special characters like \, ", %, {, }.

File System Artifacts:

  • Core Dumps: If enabled, a core dump file may be created in the server's working directory.
  • Log Files: Entries in SurrealDB logs indicating a panic or unhandled exception.

Process Execution Anomalies:

  • The surreal process exits unexpectedly with a non-zero exit code.

Log Entries (Successful Exploitation):

  • SurrealDB log: ERROR surreal::net::http: Error processing request: ...
  • System log: systemd[1]: surrealdb.service: Main process exited, code=exited, status=1/FAILURE

STIX-like IOC List:

Type Value Description
http-request-header NS: %00 Malformed namespace header with null byte
http-request-header DB: \x00 Malformed database header with null byte
http-request-header ID: AAAAAAAAA... Excessively long ID header
process-exit-code 1 Non-zero exit code of the SurrealDB process
log-entry panic: SurrealDB log entry indicating a panic

Detection Engineering

YARA Rule

rule CVE-2024-58368_Detection {
    meta:
        description = "Detects exploitation of CVE-2024-58368 in Surrealdb via HTTP headers"
        author = "Valters IT Hub"
        date = "2026-07-18"
        reference = "https://www.valtersit.com/cve/cve-2024-58368"
    strings:
        $ns_header = "NS:" nocase
        $db_header = "DB:" nocase
        $id_header = "ID:" nocase
        $null_byte = "\x00"
        $control_char = { 01-1F }
        $long_string = /[A-Za-z0-9_\-\.]{256,}/
    condition:
        any of ($ns_header, $db_header, $id_header) and
        (any of ($null_byte, $control_char) or $long_string)
}

Sigma Rule (SIEM)

title: CVE-2024-58368 Surrealdb Exploitation Detection
id: 11111111-1111-1111-1111-111111111111
status: experimental
description: Detects HTTP requests with malformed NS, DB, or ID headers targeting SurrealDB
author: Valters IT Hub
date: 2026-07-18
references:
    - https://www.valtersit.com/cve/cve-2024-58368
logsource:
    category: webserver
    product: surrealdb
detection:
    selection:
        http.method: GET|POST|PUT|DELETE|PATCH
        http.url: "/sql*"
        http.headers|contains|all:
            - 'NS:'
            - 'DB:'
            - 'ID:'
    condition:
        http.headers|re: 'NS:.*[\x00-\x1F]|DB:.*[\x00-\x1F]|ID:.*[\x00-\x1F]|NS:.{256,}|DB:.{256,}|ID:.{256,}'
falsepositives:
    - Legitimate administrative activity using special characters
level: high

Suricata IDS Rule

alert http any any -> any 8000 (msg:"CVE-2024-58368 SurrealDB DoS Attempt"; flow:to_server; content:"NS:"; http_header; pcre:"/NS:\s*[\x00-\x1F]/Ri"; sid:1000001; rev:1;)
alert http any any -> any 8000 (msg:"CVE-2024-58368 SurrealDB DoS Attempt (Long Header)"; flow:to_server; content:"NS:"; http_header; pcre:"/NS:\s*.{256,}/Ri"; sid:1000002; rev:1;)

Elastic (EQL) Query

// Detect HTTP requests with malformed headers
sequence by host.hostname
  [network where destination.port == 8000 and
   network.protocol == "http" and
   http.request.headers contains "NS:" and
   (http.request.headers matches ".*NS:.*\\x00.*" or
    http.request.headers matches ".*NS:.*[\\x01-\\x1F].*" or
    length(http.request.headers) > 256)]

Splunk SPL Query

index=surreal sourcetype=access_combined
| search uri="/sql*"
| rex field=headers "NS:\s*(?<ns_value>[^\r\n]+)"
| rex field=headers "DB:\s*(?<db_value>[^\r\n]+)"
| rex field=headers "ID:\s*(?<id_value>[^\r\n]+)"
| where match(ns_value, "[\x00-\x1F]") OR match(db_value, "[\x00-\x1F]") OR match(id_value, "[\x00-\x1F]") OR len(ns_value) > 255 OR len(db_value) > 255 OR len(id_value) > 255
| table _time, src_ip, uri, ns_value, db_value, id_value

Wazuh Rule

<group name="surrealdb,">
  <rule id="100001" level="12">
    <decoded_as>json</decoded_as>
    <field name="log_type">surrealdb</field>
    <match>panic:</match>
    <description>SurrealDB process panic detected - possible CVE-2024-58368 exploitation</description>
    <options>no_full_log</options>
    <group>surrealdb,attack,</group>
  </rule>
</group>

Remediation & Mitigation

Immediate Actions (0-24 hours)

  1. Apply the Patch: Upgrade to SurrealDB version 1.1.0 or later.
    # Docker
    docker pull surrealdb/surrealdb:1.1.0
    docker stop surrealdb-vuln
    docker run -d --name surrealdb-patched -p 8000:8000 surrealdb/surrealdb:1.1.0 start
    
  2. Network-Level Mitigation (If Patch Cannot Be Applied):
    • Firewall Rule: Restrict access to the SurrealDB HTTP API (port 8000) to trusted IP addresses only.
    • WAF Rule: Create a custom WAF rule to block requests with null bytes or control characters in the NS, DB, or ID headers.
  3. Authentication/Authorization Hardening: While not a direct mitigation, ensure that the SurrealDB API is not exposed to the public internet without authentication.

Short-term (1-7 days)

  1. Configuration Hardening:
    • Disable the HTTP API if not needed. Use the WebSocket or binary protocol instead.
    • Implement rate limiting to slow down repeated attack attempts.
  2. Monitoring Implementation:
    • Deploy the detection rules provided in this report.
    • Set up alerts for SurrealDB process crashes.
  3. Vulnerability Scanning:
    # Check the version of a running SurrealDB instance
    curl -s http://localhost:8000/version
    # Expected output for patched version: "1.1.0" or higher
    

Long-term

  1. Architecture Changes:
    • Place SurrealDB behind a reverse proxy (e.g., Nginx, HAProxy) that can perform input validation before forwarding requests.
    • Use a Web Application Firewall (WAF) with custom rules for SurrealDB.
  2. Security Control Improvements:
    • Implement a bug bounty program to encourage responsible disclosure.
    • Conduct regular penetration testing of database interfaces.
  3. Developer Training:
    • Educate developers on secure coding practices, particularly input validation and error handling in Rust/Go.

Validation

  • Check Version:
    curl -s http://localhost:8000/version
    # Should return "1.1.0" or higher
    
  • Test the Fix:
    # Attempt to exploit the patched version
    curl -X GET "http://localhost:8000/sql" -H "NS: %00" -H "DB: test"
    # Expected output: HTTP 400 Bad Request or similar error, not a crash
    

References & Resources


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

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