CVE-2026-90705
Executive Summary
CVE-2026-90705 is an OS command injection vulnerability in the D-Link DWR-M921 mobile router (firmware 1.1.52), residing in the formsysCmd function accessible via the /boafrm/formsysCmd endpoint within the Boa dispatch table component. An authenticated attacker with network access can manipulate the sysCmd argument to execute arbitrary operating system commands on the underlying device, resulting in full compromise of the router's integrity, confidentiality, and availability scope. Although the CVSS base score is 6.6 (Medium), the scope change (S:C) indicates that successful exploitation escapes the vulnerable component's security context, elevating the real-world risk for downstream network segments reliant on this device.
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 class is CWE-77 (Improper Neutralization of Special Elements used in a Command, commonly referred to as Command Injection). The NVD description specifies that the flaw affects the function formsysCmd, located at the path /boafrm/formsysCmd, and that it is reachable through the Boa web server's dispatch table. The Boa web server — a lightweight embedded HTTP daemon frequently deployed on consumer and SOHO routing hardware — routes incoming HTTP requests to registered handler functions. Here, the handler formsysCmd processes the sysCmd argument without adequate sanitization or escaping of shell metacharacters.
The core mechanism: an attacker supplies crafted input for the sysCmd parameter. Because the application passes this user-controlled string into a system command execution context (for example, a shell invocation) without neutralizing metacharacters such as ;, |, &&, $(), or backticks, the injected payload is interpreted by the underlying OS shell rather than treated as inert data. This allows arbitrary command execution with the privileges of the Boa web server process — typically root on embedded firmware.
The CVSS vector CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L reveals several salient characteristics:
- AV:N (Network) — the endpoint is remotely reachable.
- AC:L (Low) — no special conditions or race windows are required; a single malicious request suffices.
- PR:H (High) — the attacker must possess valid credentials (the request is authenticated). This is the primary factor suppressing the base score despite the severe impact class.
- UI:N (None) — no victim user interaction is necessary.
- S:C (Changed) — successful exploitation compromises resources beyond the vulnerable component, meaning the router firmware's security boundary is traversed and other network resources become reachable.
- C:L/I:L/A:L — limited impact to confidentiality, integrity, and availability individually, but scope change amplifies overall severity.
The disclosure notes the exploit "has been publicly disclosed and may be utilized," indicating proof-of-concept material is in circulation. However, no Nuclei template, exploit code, or PoC repository was provided in the tracked data sources, so the exact payload syntax is not reproduced here.
Exploitation Scenarios
No public PoC was provided in the tracked data; the following attack chain is inferred strictly from the vulnerability class and the specific identifiers present in the NVD description (formsysCmd, /boafrm/formsysCmd, sysCmd argument, Boa dispatch table, DWR-M921 1.1.52).
Reconnaissance / Target Identification. An adversary scans internet-exposed or laterally reachable D-Link DWR-M921 devices. Because the Boa web server presents a recognizable administrative interface, fingerprinting can identify the device model and firmware version. Shodan or similar internet-wide scanners can enumerate exposed management interfaces matching the DWR-M921 product signature on common HTTP management ports (e.g., 80/8080).
Authentication. The CVSS vector specifies PR:H — the attacker must be authenticated. The adversary therefore obtains valid administrative credentials, either through default credentials, credential stuffing, prior phishing, or a separate authentication-bypass vulnerability. Without valid credentials, the
formsysCmdhandler is not directly reachable.Triggering the Flaw. The attacker sends a crafted HTTP request to
/boafrm/formsysCmd, supplying a malicious value in thesysCmdargument. The Boa dispatch table maps this path to theformsysCmdfunction, which processes the argument and passes it toward OS command execution without neutralization of shell metacharacters.Payload / Execution (vulnerability-class level). By embedding command separators or substitution operators in the
sysCmdvalue, the attacker causes the device's shell to execute an arbitrary command. The specific payload characters are not disclosed in the source data; at the class level, this is textbook command injection — the shell interprets injected syntax as a new command rather than as part of the intended argument.Post-Exploitation Impact. Successful execution grants the attacker operating-system-level command execution on the router with the privileges of the Boa process (commonly root on embedded Linux firmware). This enables: persistence via modified startup scripts, installation of backdoors, DNS hijacking to redirect downstream clients, traffic interception/man-in-the-middle (justifying the S:C scope change), lateral movement into the internal network the router serves, and participation in botnets. The limited CIA subscores (L) reflect per-request impact, but sustained access materially increases real-world damage.
Impact Assessment
Affected systems: D-Link DWR-M921 mobile routers running firmware version 1.1.52. Because the CVSS score is 6.6 (Medium), it is easy to underestimate; however, the Scope Change (S:C) is a critical multiplier. When a router is compromised, every device behind it inherits risk.
Business impact: These devices are often deployed in branch offices, mobile/field operations, remote kiosks, or as failover WAN connectivity. Compromise yields a choke-point foothold from which an attacker can:
- Intercept, redirect, or alter network traffic (confidentiality loss across the scope).
- Modify routing, DNS, or firewall rules (integrity loss).
- Render the device unusable or reset connectivity (availability loss).
Blast radius: Because routers are network hops, the blast radius is not the single device but the entire connected subnet or WAN link. An attacker with command execution can pivot into trusted internal segments that assume the router is benign infrastructure.
Subscore interpretation: AV:N makes it remotely exploitable; AC:L makes it reliable; PR:H constrains the initial population of attackers to those with credentials; UI:N means no user is required to trigger; S:C widens impact beyond the component; C:L/I:L/A:L reflect the immediate vector but understate cumulative risk under sustained exploitation.
Detection Guidance
Sigma Rule
title: D-Link DWR-M921 formsysCmd OS Command Injection Attempt
id: 8b1c2f40-9070-4a5e-9d33-cve2026dlink
status: experimental
description: Detects HTTP requests to the Boa /boafrm/formsysCmd endpoint on D-Link DWR-M921 devices containing shell metacharacters in the sysCmd argument, indicative of CVE-2026-90705 exploitation.
author: valtersit.com
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-90705
date: 2026/01/01
logsource:
category: webserver
product: boa
detection:
selection_uri:
cs-uri-stem|contains: '/boafrm/formsysCmd'
selection_payload:
cs-uri-query|contains:
- 'sysCmd='
selection_metachar:
cs-uri-query|contains:
- ';'
- '|'
- '&&'
- '$( )'
- '`'
- '%3B'
- '%7C'
condition: selection_uri and selection_payload and selection_metachar
falsepositives:
- Legitimate administrative use of the system command feature with benign parameters
level: high
tags:
- attack.t1190
- cve.2026.90705
YARA Rule
rule CVE_2026_90705_DLink_formsysCmd_Exploit
{
meta:
description = "Detects request payloads targeting the D-Link DWR-M921 formsysCmd OS command injection (CVE-2026-90705)"
author = "valtersit.com"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-90705"
date = "2026-01-01"
severity = "high"
strings:
$uri = "/boafrm/formsysCmd" ascii nocase
$param = "sysCmd" ascii nocase
$semi = ";" ascii
$pipe = "|" ascii
$amp = "&&" ascii
condition:
$uri and $param and 1 of ($semi, $pipe, $amp)
}
Suricata IDS Rule
alert http any any -> any any (msg:"CVE-2026-90705 D-Link DWR-M921 formsysCmd OS Command Injection Attempt"; flow:established,to_server; http.uri; content:"/boafrm/formsysCmd"; nocase; http.uri; content:"sysCmd"; nocase; http.uri; pcre:"/(\%3B|;|\||%7C|%26%26|`)/i"; classtype:web-application-attack; reference:cve,2026-90705; reference:url,nvd.nist.gov/vuln/detail/CVE-2026-90705; sid:9000705; rev:1;)
Elastic Detection
sequence by source.ip with maxspan=10s
[network where http.request.method == "GET" and url.path == "/boafrm/formsysCmd" and url.query : "sysCmd*"]
[network where http.request.method == "POST" and url.path == "/boafrm/formsysCmd"]
Splunk SPL Query
index=web sourcetype=access_combined OR sourcetype=boa_access
| search uri_path="/boafrm/formsysCmd"
| eval suspicious=if(match(query, "(?i)(sysCmd=.*(;|\||%3B|%7C|&&|`|%26%26))"), "yes", "no")
| where suspicious="yes"
| stats count values(query) as payloads by src_ip, uri_path
| sort - count
Wazuh OSSEC Rule
<group name="web,dlink,cve-2026-90705,">
<rule id="100705" level="12">
<decoded_as>web-accesslog</decoded_as>
<match>/boafrm/formsysCmd</match>
<regex type="pcre2">sysCmd=.*(;|\||%3B|%7C|&&|`|%26%26)</regex>
<description>CVE-2026-90705: D-Link DWR-M921 formsysCmd OS command injection attempt</description>
<mitre>
<id>T1190</id>
</mitre>
<group>attack,web_attack,</group>
</rule>
</group>
Mitigation & Patch Guidance
Patch confidence: 0/4 — UNPATCHED. No patch evidence was identified from any tracked source; no vendor fix or workaround is documented in the source data. Version 1.1.52 remains vulnerable.
Immediate mitigations
- Restrict access to the DWR-M921 management interface: block external/Internet exposure of the Boa web server (ports 80/443 as applicable) at the firewall and on the device itself.
- Isolate affected routers on a dedicated management VLAN with strict ACLs; prohibit management-plane access from untrusted segments.
- Enforce strong, unique administrative credentials and rotate any default or shared passwords to defeat the PR:H precondition.
- Where operationally feasible, disable the remote-management/system-command feature if it is not required. (Capability names beyond
formsysCmdare not confirmed in the source data — validate on-device before disabling.) - Monitor for anomalous egress and DNS changes originating from the router.
Patch/upgrade steps
- Monitor the D-Link security advisory portal for DWR-M921 firmware releases addressing CVE-2026-90705. Because no patch is confirmed, do not assume any specific version fixes the issue.
- If and when a fixed firmware is released, validate the update, back up configuration, and apply promptly.
- If no patch materializes, evaluate hardware replacement with a device that receives active security maintenance.
Long-term hardening
- Establish an inventory and firmware-lifecycle program for all SOHO/branch edge devices; retire end-of-support hardware.
- Deploy network detection (the Suricata/Sigma rules above) at the network perimeter and internal chokepoints.
- Adopt least-privilege network segmentation so that compromise of an edge router does not grant access to sensitive internal segments.
- Continuously monitor for exploitation signatures and unusual administrative activity on management interfaces.
References
- NVD — CVE-2026-90705: https://nvd.nist.gov/vuln/detail/CVE-2026-90705
- MITRE CWE-77 — Improper Neutralization of Special Elements used in a Command: https://cwe.mitre.org/data/definitions/77.html
- D-Link Security Advisories (monitor for DWR-M921 firmware updates): https://supportannouncement.us.dlink.com/
- MITRE ATT&CK T1190 — Exploit Public-Facing Application: https://attack.mitre.org/techniques/T1190/
- CVSS v3.1 Specification (Scope Change): https://www.first.org/cvss/v3.1/specification-document
Threat actor / exploit-in-the-wild note: The NVD description states the exploit "has been publicly disclosed and may be utilized," indicating exploit availability. However, no specific threat actor campaign, CISA KEV listing (CISA KEV: NO), or confirmed in-the-wild exploitation attributed to a named group was present in the source data. Readers should treat public-disclosure status as elevated risk without assuming confirmed active campaigns.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.