CVE-2023-20198: экстренно закрываем Web UI на 47 Cisco IOS XE за выходные
Критическая уязвимость в Cisco IOS XE Web UI, CVSS 10.0, активно эксплуатируется. Как мы за выходные отключили HTTP/HTTPS-доступ к управлению на всех устройствах клиентов.
CVE-2023-20198 - критическая уязвимость в Cisco IOS XE Web UI, CVSS 10.0, активная эксплуатация в дикой природе, создание учётных записей уровня привилегий 15
Cisco выпустила Security Advisory по CVE-2023-20198 в конце сентября, и уязвимость сразу получила CVSS 10.0 - максимальный балл. Суть: неаутентифицированный удалённый злоумышленник может через Web UI управления IOS XE создать учётную запись с привилегиями уровня 15, то есть фактически получить полный контроль над устройством. Никакой преаутентификации, никакой пользовательской интеракции. Просто HTTP-запрос к открытому интерфейсу.
Threat intelligence на тот момент уже фиксировал активную эксплуатацию в дикой природе. Это не гипотетическая угроза - это работающий эксплойт, который уже применяется против реального железа.
Почему это важно именно для нашей клиентской базы
Cisco IOS XE - это не только маршрутизаторы. Это коммутаторы уровня доступа и агрегации, беспроводные контроллеры, ASR, ISR серий. Короче, у большинства организаций это и есть сетевая инфраструктура. Если кто-то получает привилегии уровня 15, он получает возможность менять маршрутизацию, перехватывать трафик, добавлять туннели, убирать ACL. На промышленных объектах с ICS это уже история про физическую безопасность, а не только про сеть.
Web UI в IOS XE включён по умолчанию во многих шаблонах развёртывания - и далеко не все администраторы осознают, что он торчит не только во внутреннем management VLAN, но иногда и на более широких интерфейсах. Мы это видели неоднократно: конфигурируют устройство по шаблону вендора, Web UI остаётся активным, потом никто не трогает.
Что решили делать и как это выглядело на практике
Ждать планового патча в штатном окне не стали. CVE с CVSS 10.0 и подтверждённой активной эксплуатацией - это основание для внепланового изменения. Cisco на момент публикации ещё не выпустила патч, только рекомендовала отключить HTTP-сервер. Логично: если патча нет, убери поверхность атаки.
Митигация по рекомендации Cisco:
no ip http server- отключает HTTP (порт 80)no ip http secure-server- отключает HTTPS (порт 443)
После применения сохранить конфиг командой copy running-config startup-config, иначе при перезагрузке откатится.
Звучит просто. Технически - да. Организационно - уже интереснее, когда устройств под пятьдесят, они разбросаны по нескольким клиентам с разными change management процессами, и надо всё сделать за выходные.
Как закрыли 47 устройств
Сначала инвентаризация: выгрузили список всех IOS XE в управлении, отфильтровали устройства с включённым ip http server или ip http secure-server. Это сделали через Ansible - у нас есть плейбуки для сбора show running-config с последующим grep по нужным строкам. Заодно выяснили, у кого Web UI вообще был доступен не только из management VLAN.
Дальше - согласование с клиентами. Большинство сразу дали добро: объяснять, что CVSS 10.0 и активная эксплуатация, долго не пришлось. Пара организаций попросила провести изменения строго в субботу ночью, чтобы не трогать рабочий день. Окей, работаем.
Применение шло волнами по клиентам. На каждом устройстве: подключение через SSH (не через Web UI, очевидно), применение двух команд, copy run start, проверка что show ip http server status показывает disabled. Потом быстрый пинг-тест и проверка доступности управленческого SSH - убеждаемся, что устройство живо и просто перестало отвечать на HTTP/HTTPS.
Примерно треть устройств потребовала ручной работы из-за нестандартных конфигураций: кое-где был настроен порт не по умолчанию, где-то Web UI использовался для мониторинга через кастомные скрипты. Там - отдельные переговоры, альтернативный транспорт для мониторинга через SNMP или NETCONF, потом уже отключение.
К воскресному вечеру все 47 устройств без Web UI, конфиги сохранены, отчёт клиентам отправлен.
Что осталось незакрытым
Честно: часть устройств ждёт патча. Отключить Web UI - это не закрыть уязвимость, это убрать поверхность атаки. Если где-то Web UI нужен по функциональным причинам, там сейчас стоит ограничение по ACL на доступ только с управленческих хостов - тоже не идеально, но лучше открытого порта на весь мир.
Cisco патч на момент написания не выпустила. Когда выйдет - применим по плановому окну. Это уже отдельная история, которую будем вести через аудит конфигураций с контролем версий прошивок.
Практическое наблюдение
Когда мы проводили аудит после MOVEit, один из выводов был про retention логов: если атака была тихой, ретроспективно восстановить ничего не получится. Здесь та же история, но с другим акцентом.
CVE-2023-20198 примечательна тем, что атакующий создаёт учётку уровня 15 - то есть оставляет артефакт в системе. Это чуть лучше с точки зрения forensics: можно проверить show running-config | include username и посмотреть, нет ли там незнакомых имён. Cisco рекомендует именно это делать в рамках проверки на компрометацию, если Web UI был доступен.
Мы прошлись по всем устройствам до отключения. Посторонних учёток не нашли. Но несколько устройств имели достаточно старые конфиги с давно забытыми сервисными учётками - это уже отдельная тема для ревизии, которую теперь придётся делать.
Общий вывод банальный, но от этого не менее актуальный: management-интерфейсы сетевого оборудования не должны быть доступны без строгого ограничения по источнику. Это касается Web UI, но в той же мере - SSH без ограничений по ACL, SNMP community с write-доступом и всего остального из того, что принято не трогать, пока работает.