
CVE-2026-23813 — AOS-CX pre-auth bypass via nginx regex. Detection script, bypass demo, config-disclosure PoC, and IDS rules.
Неаутентифицированные удаленные злоумышленники могут получить доступ к REST API управления AOS-CX, проталкивая токен
loginчерез излишне разрешающую регулярную версию nginx, открывая поверхность конфигурации на основе OVSDB (включая хешированные учетные данные администратора).
| Ветка | Уязвимая | Исправленная |
|---|---|---|
| 10.17.x | ≤ 10.17.0001 | 10.17.1001 |
| 10.16.x | ≤ 10.16.1020 | 10.16.1030 |
| 10.13.x | ≤ 10.13.1160 | 10.13.1161 |
| 10.10.x | ≤ 10.10.1170 | 10.10.1180 |
python3 detect.py <host[:port]>
Отправляет один GET-запрос только для чтения. Выводит PATCHED, VULNERABLE или UNKNOWN.
Не вносит никаких изменений. Подходит для инвентаризационных обходов.
python3 bypass_demo.py <host[:port]>
Отправляет одну и ту же конечную точку дважды — один раз нормально, один раз с проталкиванием —
и выводит коды ответов рядом. Без изменения состояния. См.
docs/root-cause.md для объяснения почему.
python3 exploit.py <host[:port]>
Только AOS-CX 10.10.x. Создает контрольную точку через неаутентифицированный
путь, читает полную текущую конфигурацию, выводит хеш администратора.
Обход между ветками работает на всех затронутых версиях, но эта
цепочка раскрытия конфигурации зависит от поведения бэкенда, характерного для
ветки 10.10. Контрольная точка сохраняется на устройстве — конечные точки REST,
доступные через обход, не принимают DELETE; удалите ее через консоль /
авторизованную сессию при необходимости.
Python 3.8+ и requests:
pip install requests
Независимый анализ после исправления и PoC от 4252nez — статья на OffSecKit. Оригинальная уязвимость сообщена moonv через программу HPE Bugcrowd; этот репозиторий не имеет отношения к тому отчету.
MIT — см. LICENSE.
| Файл | Назначение |
|---|
detect.py | Неразрушающая проверка статуса исправления |
bypass_demo.py | Образовательная демонстрация механизма обхода |
exploit.py | PoC раскрытия конфигурации (создает контрольную точку) |
detection/nginx-access.md | Сигнатуры логов для nginx access logs |
detection/suricata.rules | Правило Suricata для формы URI обхода |
docs/root-cause.md | Краткое объяснение первопричины |
docs/patch-diff.md | Исправление в одном diff |