flawopen.com/Teardowns/cve-2026-76504-cisco-sdwan-api-authentication-bypass
CVE-2026-76504: обход аутентификации в Cisco SD-WAN Manager
CVE-2026-76504 позволяет удалённому неаутентифицированному злоумышленнику обойти правило аутентификации API в Cisco Catalyst SD-WAN Manager и получить доступ к API с правами администратора. Cisco подтверждает активную эксплуатацию; обновите систему до исправленной версии своей ветки и проверьте менеджер на компрометацию.[1], [5]
Представьте защищённую дверь, проверка которой распознаёт только один вариант написания адреса. Злоумышленник меняет написание с помощью URI-кодирования: одна часть системы распознаёт ту же дверь, а правило безопасности — нет. По данным Cisco, из-за этого запрос мог обойти аутентификацию и попасть к API от имени администратора. Исправление должно единообразно обрабатывать адрес и применять одно правило доступа; для операторов поддерживаемое Cisco решение — обновление ПО.[1]
Ключевые понятия и термины
URI-кодирование- Представление символов пути URL в виде байтов с процентным кодированием. Все уровни должны одинаково декодировать и сравнивать путь.[1], [7]
Обход аутентификации- Запрос достигает защищённой функции, хотя система не установила личность вызывающей стороны требуемым способом.[1]
Правило API-сессии- Правило менеджера, проверяющее наличие действительной аутентифицированной сессии API до доступа к конечной точке.[1]
Связи со стандартами
- Ссылка CWE для слабого места, описанного в этом руководстве: CWE-177
- OWASP Top 10:2025 — A01:2025 Broken Access Control
- CISA KEV — добавлено 2026-09-30 — CVE-2026-76504
Анализ первопричины
Cisco связывает CVE-2026-76504 с неправильной обработкой URI-кодирования в HTTP-запросах при сессионной аутентификации API Catalyst SD-WAN Manager. Специально сформированный запрос может обойти правило аутентификации, ограничивающее доступ к определённой конечной точке API, и получить доступ с правами администратора. Cisco оценивает уязвимость как CVSS 3.1 9,8 Critical, сообщает, что продукт затронут независимо от конфигурации, и указывает, что PSIRT узнала об активной эксплуатации в сентябре 2026 года. В бюллетене приведён URI-кодированный запрос к j_security_check как пример IOC и особо отмечено, что можно использовать любой один закодированный символ; не считайте этот пример полной сигнатурой обнаружения. Cisco не публикует уязвимый исходный код или diff исправления, поэтому приведённая ниже пара кода иллюстрирует проектирование авторизации и не является кодом Cisco или воспроизведением. Cisco перечисляет исправленные выпуски по веткам и указывает, что полноценного обходного решения нет. Сетевые ограничения и Live Protect — временные меры; щит может мешать легитимному входу и не заменяет обновление.[1], [5]
Исправленные версии CVE-2026-76504 по типу развёртывания
| Развёртывание / ветка | Исправленная версия | Действие |
|---|---|---|
| Локальные версии до 20.9 | Перейдите на поддерживаемую ветку с опубликованной исправленной версией. | Выполните миграцию; не оставайтесь на старой неподдерживаемой ветке. |
| Локальная ветка 20.9 | 20.9.10.1 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Локальная ветка 20.12 | 20.12.8.2 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Локальная ветка 20.15 | 20.15.6.1 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Локальная ветка 20.18 | 20.18.4.1 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Локальная ветка 26.1 | 26.1.2.1 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Локальная ветка 26.2 | 26.2.1 | Обновите каждый менеджер до этой или более поздней версии поддерживаемой ветки. |
| Cisco SD-WAN Cloud (Cisco Managed) | 20.15.605 или новее; Cisco сообщает, что облачный сервис исправлен. | Убедитесь, что используется управляемый сервис; для его обновления действия клиента не требуются. |
Пошаговый сценарий атаки
Удалённый запрос достигает API менеджера
Учётная запись и действия пользователя не требуются. Доступ из интернета повышает риск; поставщик указывает, что конфигурация не влияет на наличие уязвимости.[1]
URI-кодированный путь обходит правило аутентификации
Cisco указывает на непоследовательную обработку URI-кодирования при аутентификации API-сессии. Публичные данные не раскрывают уязвимую реализацию.[1]
Исходный код: Уязвимый vs Защищённый вариант
Cisco не публикует уязвимый исходный код или diff исправления. Этот пример Python показывает общий принцип проектирования, а не код Cisco: маршрутизация и авторизация должны использовать одну проверенную каноническую цель запроса, а защищённые конечные точки должны требовать подтверждённую личность. Используйте документированную нормализацию маршрутизатора/framework; не добавляйте самодельное или повторное декодирование путей. Поддерживаемое исправление CVE-2026-76504 — обновление до указанного Cisco выпуска своей ветки.[1], [7]
Фрагмент исходного кода: Иллюстративный пример на Python канонизации URI и границы авторизации; не код Cisco
from urllib.parse import unquote, urlsplit
def dispatch(raw_target, session, routes):
# Один уровень проверяет ещё закодированный путь.
path_for_auth = urlsplit(raw_target).path
if path_for_auth.startswith("/api/") and session is None:
raise PermissionError("authentication required")
# Следующий уровень декодирует путь перед поиском маршрута. Эти решения могут не совпасть.
route_path = unquote(path_for_auth)
return routes[route_path]()
import re
from urllib.parse import unquote, urlsplit
def canonical_path(raw_target):
raw_path = urlsplit(raw_target).path
if re.search(r"%(?![0-9A-Fa-f]{2})", raw_path):
raise ValueError("malformed URI encoding")
path = unquote(raw_path, errors="strict")
if "%" in path or "\\" in path:
raise ValueError("ambiguous path encoding")
if any(part in {".", ".."} for part in path.split("/")):
raise ValueError("path traversal segment")
return path
def dispatch(raw_target, session, routes):
path = canonical_path(raw_target) # Decode and validate exactly once.
route = routes.get(path)
if route is None:
raise LookupError("route not found")
requires_authentication, handler = route
if requires_authentication and session is None:
raise PermissionError("authentication required")
return handler()
Чек-лист по защите системы для инженеров
- ✓Проведите инвентаризацию всех Catalyst SD-WAN Manager, включая узлы кластера и площадки аварийного восстановления; зафиксируйте ветку и точную сборку.[1], [2]
- ✓Обновите каждый локальный менеджер до первой исправленной версии, указанной Cisco для его текущего основного выпуска; не переходите на более высокий основной выпуск без прямого указания TAC. Выпуски до 20.9 необходимо перенести на поддерживаемую исправленную ветку, соблюдая рекомендации Cisco по совместимости.[1], [2]
- ✓До обновления соберите admin-tech-файлы с параметрами Log и Tech на каждом менеджере, узле кластера и площадке DR; не ждите результатов IOC перед установкой исправления.[2]
- ✓Откройте обращение Cisco TAC Severity 3 с
CVE-2026-76504в заголовке и передайте собранные файлы для проверки IOC; при подтверждении компрометации выполните рекомендации TAC.[1], [2] - ✓Проверьте
serviceproxy-access.logиvmanage-server.logна запросыj_security_checkс неизвестных или неавторизованных адресов и необычную активность аккаунтовviptela-reserved-;%6a— только пример, а не полная сигнатура.[1] - ✓До обновления всех менеджеров ограничьте доступ к управлению доверенными хостами и разместите управляющие компоненты за фильтрующим устройством; это временно уменьшит доступность, но не устранит уязвимость.[1]
- ✓Используйте щит Cisco Live Protect только как временную частичную защиту после оценки влияния на вход пользователей; всё равно запланируйте обновление ПО.[1]
- ✓Для Cisco SD-WAN Cloud (Cisco Managed) убедитесь, что служба сообщает версию 20.15.605 или новее; Cisco указывает, что клиентам не нужно выполнять действия для управляемого обновления.[1], [2]
Источники
- Cisco Security Advisory — CVE-2026-76504
- Cisco remediation workflow for the September 2026 SD-WAN advisory
- Cyber Security Agency of Singapore active-exploitation advisory
- Canadian Centre for Cyber Security advisory AV26-978
- CISA Known Exploited Vulnerabilities Catalog — CVE-2026-76504
- NVD record — CVE-2026-76504
- MITRE CWE-177 — Improper Handling of URL Encoding