Handing the janitor who already has every key a lockpicking set — impressive, but he was already inside
CVE-2026-6837 is a post-authentication OS command injection in the export-cgi handler on 18 Zyxel wireless access point models (NWA50AX through WAX655E) running firmware ≤ 7.10. The flaw sits in the PKCS#12 certificate export workflow: the password parameter is concatenated into a shell command without neutralising metacharacters like quotation marks. An attacker who already holds administrator-level credentials to the AP's web management interface can inject arbitrary shell commands that execute as root. Zyxel patched all 18 models in the 7.12 firmware train, released 2026-08-04.
The vendor's HIGH / 7.2 score is *technically correct* under CVSS 3.1 accounting (AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H), but it overweights the real-world risk for enterprise teams. The PR:H gate means you need a valid administrator session — not just any login, but the top privilege tier. In a well-run enterprise, AP management interfaces live on an isolated management VLAN, local web-UI access may be disabled in favour of Zyxel Nebula or NCC, and default credentials (admin/1234) should have been rotated at commissioning. The combination of these friction factors means the population of attackers who can actually reach *and authenticate to* the export-cgi endpoint is vanishingly small compared to a typical HIGH-rated vulnerability. There is no evidence of in-the-wild exploitation, the EPSS probability is ~1.5 % (≈65th percentile), and CISA has not added it to the KEV catalog. Downgrading to MEDIUM better reflects the operational reality for a fleet of centrally managed APs.
5 steps from start to impact.
Obtain administrator credentials
admin/1234 pair if it was never changed, or harvesting credentials via a compromised Nebula/NCC management plane. No public tool automates this step specifically for Zyxel APs, though generic HTTP brute-forcers (Hydra, Burp Intruder) work against the login endpoint.- Valid administrator credentials for the target AP
- Knowledge of the AP management IP or hostname
- Enterprise deployments should have rotated the default credentials at provisioning
- Credential storage in Nebula/NCC is separate from local AP web-UI credentials in many configurations
- MFA is not available on Zyxel AP local web UIs, but network-layer access controls (ACLs, jump-box requirement) compensate
Reach the AP management interface
- Network-layer access to the AP's management interface (management VLAN or equivalent)
- Management VLANs are typically ACL-restricted in enterprise deployments
- Zyxel APs behind Nebula Cloud may have local web-UI disabled entirely
- Shodan/Censys show minimal internet-facing exposure of Zyxel AP management ports
Navigate to the PKCS#12 certificate export function
export-cgi endpoint that handles PKCS#12 certificate exports. This is a standard administrative feature — no special configuration enables or disables it. The endpoint accepts a password parameter used to encrypt the exported certificate bundle.- Active authenticated administrator session on the AP web UI
- None — this is a default feature accessible to any admin session
export-cgi, but few organisations forward AP web-UI access logs to SIEM.Inject OS commands via the password parameter
password value containing shell metacharacters (e.g., embedded quotation marks followed by command separators like ; or $()) that break out of the intended openssl pkcs12 command string. The export-cgi binary passes this unsanitised input to the system shell. The PoC developed by researcher Mina Nageh Salama demonstrated this on emulated AArch64 firmware using qemu-aarch64-static. No weaponised public exploit or Metasploit module exists as of October 2026.- Knowledge of the injection syntax (publicly described in the advisory and researcher write-up)
- No turnkey exploit tool — attacker must craft the payload manually or adapt the researcher's PoC
- The PoC was validated against emulated firmware; minor differences may exist on physical hardware
Achieve root-level command execution on the AP
- Successful command injection in step 4
- AP hardware is resource-constrained (ARM SoC, limited storage) — staging complex implants is harder than on a server
- Firmware updates or factory resets wipe persistence
- Network segmentation limits lateral movement from the AP
admin/1234 credentials on every AP to unique, strong passwords stored in a PAM or secrets vault. This hardens attack-path step 1 and eliminates the most likely credential-acquisition vector. If using Nebula/NCC for centralized management, ensure local web-UI passwords are distinct from cloud management credentials. Apply within the 365-day remediation window.export-cgi endpoint becomes unreachable. This is a zero-cost configuration change.- WAF/reverse proxy in front of the AP — AP management interfaces are not typically fronted by a WAF; deploying one adds complexity without meaningful coverage since the injection is in a POST parameter that a generic WAF may not inspect in the PKCS#12 export context.
- Wireless client isolation / WLAN segmentation — This protects wireless clients from each other but does not restrict access to the AP's own management interface, which is on a separate IP/VLAN.
- Disabling certificate features — The export-cgi endpoint cannot be selectively disabled without firmware modification; it ships as part of the base web-UI.
The supporting signals.
| In-the-wild exploitation | No confirmed exploitation. Not listed in CISA KEV. No GreyNoise or Shadowserver tags observed. No threat-intel reports link this CVE to botnet or APT activity as of October 2026. |
|---|---|
| Proof-of-concept availability | Researcher Mina Nageh Salama (GitHub) developed a PoC on emulated AArch64 firmware using qemu-aarch64-static. Write-up referenced on Exploit Intel and KSEC Forum. No Metasploit module, no Nuclei template, no ExploitDB entry. Not indexed on pocindex.io. |
| EPSS probability / percentile | ~1.5 % probability of exploitation in the next 30 days, approximately 65th percentile. Low-to-moderate signal — consistent with a post-auth flaw that has no weaponised tooling. |
| CISA KEV status | Not listed. No due date assigned. No federal mandate to patch on an accelerated timeline. |
| CVSS vector interpretation | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H — Network-reachable, low complexity, but high privileges required. Scope unchanged means impact is confined to the vulnerable AP. The PR:H gate is the dominant friction factor. |
| Affected version ranges | 18 Zyxel AP models: NWA50AX, NWA50AX PRO, NWA55AXE, NWA55AX PRO, NWA55AX PTP, NWA90AX, NWA90AX PRO, NWA110AX, NWA210AX, NWA220AX-6E, WAX300H, WAX510D, WAX610D, WAX620D-6E, WAX630S, WAX640S-6E, WAX650S, WAX655E. All firmware through 7.10(model-specific build)C0. |
| Fixed versions | Firmware 7.12 train across all 18 models. WAX650S specifically: 7.12(ABRM.0)C0. Released 2026-08-04. |
| Exposure data | Zyxel AP management interfaces are overwhelmingly internal-only. Shodan/Censys show minimal internet-facing exposure of Zyxel WAX/NWA management ports. These are indoor enterprise APs, not edge appliances. Default credentials (admin/1234) are the larger concern for unmanaged deployments. |
| Disclosure timeline | Disclosed 2026-08-04 via Zyxel security advisory. NVD published same day. |
| Reporting researcher | Mina Nageh Salama — independent pentesting researcher focused on embedded device security. GitHub: minanagehsalalma. |
Sources.
- Zyxel Security Advisory (2026-08-04)
- NVD — CVE-2026-6837
- CybersecurityNews — Zyxel Patches Command Injection Flaw in 18 APs
- SentinelOne Vulnerability Database — CVE-2026-6837
- Mina Nageh Salama — Researcher GitHub Profile
- Strix.ai — CVE-2026-6837 Analysis
- Rewterz Threat Advisory — Zyxel AP Command Injection
- RedPacket Security — CVE-2026-6837 Alert
Why this verdict
- PR:H gate is dominant friction: The CVSS vector requires *administrator-level* credentials — not just any authenticated user. An attacker who already holds AP admin creds has likely already compromised the management plane or has insider access, making this a post-compromise lateral move rather than an initial access vector. This alone warrants a 1–2 point reduction from the vendor baseline.
- Management interface isolation: Enterprise APs sit on management VLANs with ACL restrictions. The management web UI is not internet-facing by design. Nebula/NCC-managed deployments may disable the local web UI entirely. The attacker must already be inside the management network segment — implying post-initial-access positioning.
- No exploitation evidence compounds the friction: Zero KEV listing, no GreyNoise/Shadowserver tags, no botnet adoption, EPSS at ~1.5 % (65th percentile). The PoC exists only in emulated form from the original researcher — no weaponised tooling, no Metasploit module, no Nuclei template.
- Scope unchanged (S:U): Impact is confined to the AP itself. Root on a Zyxel AP gives traffic interception and pivot potential, but does not directly yield domain compromise, fleet takeover, or supply-chain impact. The blast radius is host-level plus connected wireless clients.
- Role multiplier: (a) *Low-value role* — lab/test AP, home office: MEDIUM impact, limited blast radius. (b) *Typical role* — enterprise office AP: MEDIUM impact; root access enables wireless traffic interception and pivot, but network segmentation and NAC limit lateral movement. (c) *High-value role evaluation* — APs are not in the canonical high-value role catalog (not identity infrastructure, not hypervisors, not CI/CD, not backup, not network edge firewalls, not SCADA). Even in sensitive locations (executive suites, healthcare), a compromised AP's blast radius is host → connected clients → potential pivot, NOT domain → fleet → supply chain. No deployment role produces a floor-triggering outcome (domain takeover, fleet compromise, mass data egress, supply-chain pivot). The floor rule does not apply.
- Default credentials are a deployment hygiene issue, not a CVE severity issue: While
admin/1234is concerning, CVSS correctly models the intended auth requirement as PR:H. Organisations that have not changed default AP credentials have a configuration management gap, not a reason to rate this CVE higher.
Why not higher?
This is not HIGH because the admin-auth gate is genuine and meaningful friction: an attacker who can authenticate as AP admin has already achieved a level of access that makes root on the AP an incremental gain, not a transformative one. There is no scope change, no active exploitation, and no weaponised tooling. APs are not canonical high-value targets — compromising one does not cascade to domain, fleet, or supply-chain impact.
Why not lower?
This is not LOW because the vulnerability does deliver root-level OS command execution on a network infrastructure device, the PoC is publicly described and reproducible, and the default-credential problem means some fraction of deployments are more exposed than the PR:H gate would suggest. A compromised AP can intercept all wireless client traffic and leak RADIUS shared secrets or PSKs — real harm in the wrong hands.
Crowdsourced verification payload.
Run this script from any Linux/macOS host that has network access to the target AP's management interface. Invoke as: bash check_cve_2026_6837.sh 192.168.1.2 admin YourPassword. Requires curl and grep. No elevated privileges needed on the auditor workstation.
#!/usr/bin/env bash
# check_cve_2026_6837.sh — Zyxel AP firmware version check for CVE-2026-6837
# Usage: bash check_cve_2026_6837.sh <AP_IP> [username] [password]
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -euo pipefail
AP_IP="${1:?Usage: $0 <AP_IP> [username] [password]}"
USER="${2:-admin}"
PASS="${3:-1234}"
FIXED_MAJOR=7
FIXED_MINOR=12
echo "[*] Checking firmware on Zyxel AP at ${AP_IP}..."
# Attempt to authenticate and retrieve firmware info via the web UI
# Zyxel APs expose firmware version on the dashboard or via CGI endpoints
RESPONSE=$(curl -skL --max-time 15 \
--cookie-jar /tmp/zyxel_cookie_$$ \
-d "username=${USER}&password=${PASS}" \
"https://${AP_IP}/cgi-bin/login" 2>/dev/null || true)
# Try to fetch system info page
SYSINFO=$(curl -skL --max-time 15 \
--cookie /tmp/zyxel_cookie_$$ \
"https://${AP_IP}/cgi-bin/system_status" 2>/dev/null || true)
# Clean up cookie
rm -f /tmp/zyxel_cookie_$$
# Extract firmware version string (pattern: V7.10 or V7.12 etc.)
FW_VERSION=$(echo "${SYSINFO}${RESPONSE}" | grep -oP 'V?\d+\.\d+\([A-Z]+\.\d+\)' | head -1)
if [ -z "${FW_VERSION}" ]; then
# Fallback: try SNMP if curl failed
if command -v snmpget &>/dev/null; then
FW_VERSION=$(snmpget -v2c -c public "${AP_IP}" \
1.3.6.1.4.1.890.1.15.3.1.12.0 2>/dev/null | grep -oP 'V?\d+\.\d+\([A-Z]+\.\d+\)' || true)
fi
fi
if [ -z "${FW_VERSION}" ]; then
echo "[!] UNKNOWN — Could not retrieve firmware version from ${AP_IP}."
echo " Verify network connectivity, credentials, and that the management UI is enabled."
exit 2
fi
echo "[*] Detected firmware: ${FW_VERSION}"
# Parse major.minor from version string like 7.10 or 7.12
MAJOR=$(echo "${FW_VERSION}" | grep -oP '\d+\.\d+' | head -1 | cut -d. -f1)
MINOR=$(echo "${FW_VERSION}" | grep -oP '\d+\.\d+' | head -1 | cut -d. -f2)
if [ -z "${MAJOR}" ] || [ -z "${MINOR}" ]; then
echo "[!] UNKNOWN — Could not parse firmware version numbers."
exit 2
fi
if [ "${MAJOR}" -gt "${FIXED_MAJOR}" ] || \
([ "${MAJOR}" -eq "${FIXED_MAJOR}" ] && [ "${MINOR}" -ge "${FIXED_MINOR}" ]); then
echo "[+] PATCHED — Firmware ${FW_VERSION} is >= 7.12. CVE-2026-6837 is fixed."
exit 0
else
echo "[-] VULNERABLE — Firmware ${FW_VERSION} is < 7.12. CVE-2026-6837 applies."
echo " Update to firmware 7.12 or later for your model."
exit 1
fi