CVE-2026-109108
Executive Summary
CVE-2026-109108 is a critical OS command injection vulnerability in Wavlink WL-WN530BE1-A firmware version 251117, affecting the popen function within the /cgi-bin/uploadVpn.cgi handler. The flaw is triggered via manipulation of the Type argument, allowing an authenticated remote attacker to execute arbitrary operating system commands with the privileges of the CGI process. With a CVSS base score of 9.9 (Critical) and a publicly disclosed exploit, this vulnerability poses an immediate risk to internet-facing Wavlink WL-WN530BE1-A devices, where successful exploitation could lead to full device compromise, persistent backdoor installation, and use of the device as a pivot point into the internal network.
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.
No signup required
Technical Analysis
The vulnerability is classified as CWE-77 (Improper Neutralization of Special Elements used in a Command). The root cause resides in the /cgi-bin/uploadVpn.cgi CGI script, specifically in the function popen. This function is a standard C library routine that opens a pipe to a process, executing a shell command. The NVD description states that "manipulation of the argument Type leads to os command injection." This indicates that the Type parameter, supplied by the HTTP request (likely via GET or POST to the CGI endpoint), is passed to the shell command executed by popen without adequate validation or sanitization.
The attack surface is the web management interface of the Wavlink WL-WN530BE1-A router. The /cgi-bin/uploadVpn.cgi endpoint is likely intended for VPN configuration uploads but improperly handles the Type argument. The CVSS vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) confirms that the attack is network-reachable with low complexity, requires low privileges (authenticated access), and results in a scope change — indicating that the vulnerable component (CGI process) can execute commands that affect resources beyond its security scope (the entire underlying OS). The high confidentiality, integrity, and availability impacts reflect the total compromise of the device.
The public disclosure of the exploit (POC_STATUS: Public) and the absence of a patch (Patch Confidence: 0/4) make this a high-priority target for threat actors. No public exploit code or Nuclei template was found in the provided data, but the "exploit has been disclosed publicly and may be used" per NVD. The CVSS score of 9.9 is derived from a vector that assumes an authenticated attack (PR:L). If the web interface is exposed without authentication, the effective severity could be higher in practice.
Exploitation Scenarios
1. Reconnaissance/target identification: An attacker identifies internet-facing Wavlink WL-WN530BE1-A devices via Shodan, Censys, or scanning tools using dorks such as http.title:"Wavlink" or http.html:"uploadVpn.cgi". The attacker confirms the firmware version 251117 to match the vulnerable target.
2. Authentication and triggering: The attacker authenticates to the device's web management interface with low privileges (e.g., default or compromised credentials). They then send a crafted HTTP request to /cgi-bin/uploadVpn.cgi, injecting shell metacharacters (e.g., ;, |, $()) into the Type argument. Since the vulnerability is in the popen function, the Type argument is likely concatenated into a command string executed by the shell.
3. Payload/execution method: The injection payload is crafted to execute arbitrary OS commands. For example, a typical command injection payload might be Type=wireguard; id or Type=wireguard$(reboot). The shell command executed by popen runs with the privileges of the CGI process (typically root on embedded devices). The attacker can then download and execute a reverse shell script, add SSH keys, or modify firewall rules. The exact syntax is not specified in the NVD description, but the mechanism is standard OS command injection.
4. Post-exploitation impact: Successful exploitation results in full root-level compromise of the device. The attacker can persist via cron jobs, firmware modification, or adding a backdoor account. The device can be used as a proxy or pivot point to attack internal network resources, potentially leading to lateral movement and further compromise of connected systems.
No public PoC or exploit code was available in the provided data, but the vulnerability class is well-understood and the disclosure status indicates that exploitation is feasible.
Impact Assessment
The CVSS base score of 9.9 (Critical) reflects the severe impact of this vulnerability. The vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H indicates:
- AV:N (Network): Exploitable remotely over the network.
- AC:L (Low): No special conditions or complex attack sequences required.
- PR:L (Low): The attacker requires basic authentication to the web interface.
- UI:N (None): No user interaction needed.
- S:C (Changed): Exploitation can impact resources beyond the vulnerable component (the entire OS).
- C:H/I:H/A:H: Total loss of confidentiality, integrity, and availability.
Business impact: Compromise of the router can lead to interception of all network traffic, redirection of DNS queries, injection of malicious content, and persistent access to the corporate network. The device often serves as the network gateway, making it a high-value target. The blast radius includes all devices behind the router and any data transmitted through it. Because the device is likely deployed in SOHO/SMB environments and remote offices, the impact can extend to multiple sites. The lack of a patch (Patch Confidence: 0/4) and the public disclosure (POC_STATUS: Public) increase the urgency for mitigation.
Detection Guidance
Sigma Rule
title: Wavlink WL-WN530BE1-A OS Command Injection via uploadVpn.cgi
id: 7a3b1c2e-4f5d-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects exploitation attempts targeting CVE-2026-109108 via the Type parameter in /cgi-bin/uploadVpn.cgi
author: SOC Team
date: 2026-05-12
logsource:
category: webserver
detection:
selection:
cs-uri-stem|contains: '/cgi-bin/uploadVpn.cgi'
cs-uri-query|contains|all:
- 'Type='
- ';'
condition: selection
falsepositives:
- Legitimate VPN configuration uploads (unlikely to contain shell metacharacters)
level: critical
YARA Rule
rule CVE_2026_109108_Wavlink_Command_Injection
{
meta:
description = "Detects exploit attempts for CVE-2026-109108 in Wavlink WL-WN530BE1-A firmware"
author = "Threat Intel Team"
date = "2026-05-12"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-109108"
severity = "critical"
strings:
$s1 = "uploadVpn.cgi" ascii wide nocase
$s2 = "Type=" ascii wide nocase
$s3 = "popen" ascii wide nocase
$cmd1 = ";" ascii wide
$cmd2 = "|" ascii wide
$cmd3 = "$(" ascii wide
$cmd4 = "`" ascii wide
condition:
any of ($s*) and any of ($cmd*)
}
Suricata IDS Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-109108 Wavlink WL-WN530BE1-A OS Command Injection Attempt"; flow:to_server,established; content:"/cgi-bin/uploadVpn.cgi"; http_uri; content:"Type="; http_uri; pcre:"/Type=[^&]*(;|\||\$\(|`)/Ui"; reference:cve,2026-109108; classtype:attempted-admin; sid:10000001; rev:1;)
Elastic Detection
process where event.type == "start" and process.parent.name in ("uploadVpn.cgi", "httpd", "lighttpd", "uhttpd") and process.name in ("sh", "bash", "cmd.exe") and process.args : "*Type=*" and (process.args : "*;*" or process.args : "*|*" or process.args : "*$(*" or process.args : "*`*")
Splunk SPL Query
index=web sourcetype=access_combined
| search uri_path="/cgi-bin/uploadVpn.cgi" AND (uri_query="*Type=*" AND (uri_query="*;*" OR uri_query="*|*" OR uri_query="*$(*" OR uri_query="*`*"))
| table _time, src_ip, method, uri_path, uri_query, status
| sort - _time
Wazuh OSSEC Rule
<group name="web,attack,">
<rule id="100200" level="12">
<decoded_as>web-accesslog</decoded_as>
<url>/cgi-bin/uploadVpn.cgi</url>
<query>Type=</query>
<regex>Type=[^&]*(;|\||\$\(|`)</regex>
<description>CVE-2026-109108: Wavlink WL-WN530BE1-A OS command injection attempt detected</description>
<mitre>
<id>T1190</id>
</mitre>
<group>cve_2026_109108,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).
Immediate mitigations:
- Disable remote management access to the web interface if not required.
- Restrict access to
/cgi-bin/uploadVpn.cgivia firewall rules or reverse proxy, allowing only trusted IP addresses. - Change default administrative credentials and enforce strong passwords.
- Implement network segmentation to isolate IoT/edge devices from critical internal assets.
- Monitor for suspicious outbound connections from the router to unknown IP addresses.
Patch/upgrade steps:
- No vendor patch is currently available. Contact Wavlink support for firmware updates and monitor their security advisory page.
- Consider replacing the device with a supported alternative if a patch is not forthcoming.
Long-term hardening:
- Deploy a WAF or IPS with virtual patching for command injection patterns.
- Regularly audit embedded device firmware versions and apply updates promptly.
- Implement egress filtering to prevent command-and-control communication.
- Use an inventory system to track EOL devices and plan replacements.
References
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-109108
- CWE-77: https://cwe.mitre.org/data/definitions/77.html
- Wavlink Security Advisories: https://www.wavlink.com/en_us/security.html (vendor disclosure page)
- CISA KEV Catalog: Not listed (as of report date)
- MITRE ATT&CK T1190: https://attack.mitre.org/techniques/T1190/
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.