A backdoor-shaped hole in the router's WireGuard group setup lets anyone run commands as root if the management page is reachable
The vulnerable component is /bin/ioos, function sub_41a1d8, in the WireGuard CLI Group Handler. The group_name argument is passed to an OS shell without sanitization, allowing an unauthenticated remote attacker to inject arbitrary commands by sending a crafted request to the management interface. Affected version is WAVLINK WN536AX6-A firmware V260507_2.0.0; no earlier or later ranges were provided in the official record.
Vendor severity is CRITICAL 10.0 with AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H. That score is technically valid for an internet-exposed router, because command injection yields root-level control and scope change to the OS. In enterprise practice, however, WN536AX6-A is a consumer/SOHO WiFi 6 router with remote management off by default and a small enterprise footprint, so the practical severity sits at HIGH rather than CRITICAL.
4 steps from start to impact.
Reach the management interface
- Device reachable on TCP 80/443 from attacker
- Remote management enabled or attacker on LAN
- Default remote administration is disabled
- Most SOHO routers sit behind NAT and are not internet-visible
- WAVLINK is not a common enterprise edge appliance
WAVLINK WN536AX6-A can identify exposed devices; network ACLs should block inbound management.Send crafted request to WireGuard CLI Group Handler
group_name to a value containing shell metacharacters (e.g., ; reboot; or a reverse shell). The sub_41a1d8 function concatenates this value into a shell command without escaping.- Endpoint is unauthenticated
- No input validation on
group_name
- Web UI may require a valid session on some firmware builds, but the CVE record indicates
PR:N
OS command execution as root on router
- Command injection reaches a shell interpreter
- Router process runs as root (common on WAVLINK firmware)
- Little friction once injection succeeds
- Embedded devices rarely have EDR or app control
Pivot to LAN/VPN clients or persist
- Router hosts WireGuard tunnels or serves as network gateway
- Internal network reachable from router
- Low-value home routers have limited pivoting value
- Enterprise branch VPN deployments are rare for this product
group_name in /bin/ioos. This removes the command injection entirely; schedule within 180 days under the noisgate remediation SLA for HIGH, or sooner if the vendor releases it.group_name, and alert on any hits. This doesn't stop the first attempt but gives you detection coverage; residual risk remains HIGH until the patch is applied.- Disabling WireGuard tunnels does not mitigate the vulnerability; the vulnerable CLI group handler may still be reachable via the management interface even with no active tunnels.
- Changing Wi-Fi passwords or SSIDs has no effect; the flaw is in the management/CLI layer, not Wi-Fi authentication.
- Rebooting the router does not remove injected commands if the attacker already gained root and installed persistence.
The supporting signals.
| In-the-wild status | No known campaigns; not in CISA KEV as of prompt data. |
|---|---|
| KEV status | Not listed in CISA KEV (KEV listed: No). |
| Public exploit | Exploit disclosed publicly per CVE record; no named GitHub repo or researcher available in this environment. |
| EPSS | Unknown; not provided in record. Treat as low-to-moderate until data is available. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — unauthenticated network attack, low complexity, high impact, scope changed. |
| Affected version | WAVLINK WN536AX6-A firmware V260507_2.0.0. |
| Fixed version | Not published in provided record; vendor contacted early about disclosure. |
| CWE | CWE-77 (Improper Neutralization of Special Elements used in a Command). |
| Disclosure date | 2026-11-02. |
| Reporting researcher/org | Not named in provided record; vendor contacted early. |
| Exposure data | No Shodan/GreyNoise/Censys data provided; SOHO routers typically behind NAT, remote admin often disabled. |
Sources.
Why this verdict
- Unauthenticated remote command injection is inherently severe — vendor's 10.0 baseline assumes the management interface is reachable; on an exposed unit that's technically accurate.
- Deployment-role multiplier is weak: the WN536AX6-A is a consumer/SOHO WiFi 6 router, not a canonical enterprise edge appliance like F5/Palo Alto/FortiGate; <1% of units plausibly serve as corporate VPN/edge, so the high-value-role floor does not bind.
- Default exposure is low: remote administration is disabled by default and most units sit behind NAT, meaning the attacker usually needs LAN access or an exposed WAN admin port.
- No KEV listing or known active exploitation campaigns despite a public exploit disclosure, so urgency is lower than a confirmed in-the-wild critical.
Why not higher?
The device is not a canonical high-value-role component, and public footprint data suggests the overwhelming majority are home or consumer deployments. If this router were an enterprise VPN concentrator exposed to the internet, it would be CRITICAL. The lack of active exploitation and low enterprise share keep it below that.
Why not lower?
If the management interface is reachable, the attacker gets root-level code execution on a network edge device—traffic interception, VPN key theft, and LAN pivot are all possible. That is worse than MEDIUM; a HIGH verdict is warranted even with low prevalence.
Crowdsourced verification payload.
Run from a Linux or macOS workstation with network access to the WAVLINK router's LAN IP. Invoke: bash check_wavlink_cve-2026-120277.sh 192.168.10.1 (replace with the router's IP). Requires outbound HTTP access to the router; no special privileges needed on the workstation.
#!/usr/bin/env bash
# Verify WAVLINK WN536AX6-A firmware for CVE-2026-120277
# Usage: bash check_wavlink_cve-2026-120277.sh <router_ip>
set -uo pipefail
if [ $# -lt 1 ]; then
echo "Usage: $0 <router_ip>" >&2
exit 3
fi
IP="$1"
for path in "/" "/status.html" "/cgi-bin/status" "/index.html"; do
resp=$(curl -sk --max-time 5 "http://${IP}${path}" 2>/dev/null || true)
ver=$(echo "$resp" | grep -oE 'V[0-9]{6}_[0-9]\.[0-9]\.[0-9]' | head -1)
if [ -n "$ver" ]; then
if [ "$ver" = "V260507_2.0.0" ]; then
echo "VULNERABLE: firmware version $ver matches affected version."
exit 0
else
echo "PATCHED: device reports version $ver (not affected V260507_2.0.0)."
exit 0
fi
fi
done
echo "UNKNOWN: could not determine firmware version from HTTP management interface."
exit 2