ADG Оставить заявку
Блог Информационная безопасность 6 мин чтения

Cisco IOS XE: апрельские CVE и чек-лист обновления прошивки в production

В апреле 2021 Cisco закрыла серию критических уязвимостей в IOS XE. Описываем, как мы готовим окно обслуживания и откат для обновления сетевого оборудования заказчиков.

Контекст момента

Cisco IOS XE: серия критических уязвимостей в апреле 2021, рекомендации к обновлению

В апреле Cisco выпустила очередной пакет бюллетеней безопасности. Среди них - несколько CVE, касающихся IOS XE: уязвимости в web UI (CVE-2021-1446, CVE-2021-1392), в обработке NETCONF/YANG (CVE-2021-1385), в компоненте SD-WAN. Оценки CVSS варьируются от 6 до 8.6 - не все десятки, но часть позволяет выполнить код или получить повышенные привилегии без аутентификации через веб-интерфейс.

У нескольких заказчиков на периметре и внутри сети стоит оборудование на IOS XE - маршрутизаторы серий ISR 4000, ASR 1000, иногда коммутаторы Catalyst в режиме Cisco DNA. Это значит, что апрельские бюллетени нас касаются напрямую.

Обновление прошивки сетевого оборудования в production - это не apt upgrade. Это окно обслуживания, план отката, согласование с заказчиком и нервы. Ниже - то, как мы к этому готовимся.

Какие CVE и что с ними делать

Самое неприятное в апрельском пакете - CVE-2021-1392: уязвимость в обработке HTTP-запросов к web UI IOS XE позволяет неаутентифицированному атакующему получить привилегированный доступ. Вектор - сетевой, атака без учётных данных. Если web UI смотрит в интернет или в недоверенную зону - это прямая проблема.

CVE-2021-1446 в том же компоненте позволяет вызвать DoS - перезагрузку устройства. Для маршрутизатора на периметре это означает кратковременный обрыв связи. Некритично для безопасности, но критично для доступности.

Первый шаг - проверить, смотрит ли web UI наружу. На большинстве устройств у заказчиков это не так: HTTPS-доступ к управлению закрыт или ограничен ACL. Но проверить нужно, потому что иногда кто-то когда-то «временно открыл для удалённой настройки» и так и оставил.

Router# show running-config | include ip http
ip http server
ip http secure-server
ip http access-class 10 in

Если ip http server или ip http secure-server включён без access-class - это разговор. Если ACL есть - смотрим, что в нём.

Смягчение до патча: отключить web UI (no ip http server, no ip http secure-server) там, где он не нужен. Для большинства устройств под нашим управлением так и есть - управление идёт через SSH и NETCONF, не через браузер.

Зачем обновление - не просто «закрыть CVE»

Когда речь идёт о сетевом оборудовании заказчика, иногда встречаем такую позицию: «CVE есть, но нас не взломали, обновление подождёт». Это понятная логика для тех, кто видел, как обновление прошивки маршрутизатора укладывало связь на несколько часов.

Проблема в накопленном долге. IOS XE получает обновления регулярно - и каждый пропущенный цикл увеличивает разрыв между текущей версией и тем, до чего нужно обновить. Большой разрыв - больше риск несовместимости конфигурации, больше изменений в одном окне обслуживания, сложнее откат.

Апрельские CVE сами по себе не катастрофа. Но они - хороший повод провести обновление, которое на некоторых устройствах откладывалось с прошлого года.

Чек-лист подготовки к обновлению прошивки

Это то, что мы делаем до того, как начать сам upgrade. Без этого - не трогаем production.

Версия и таргет. Определяем текущую версию IOS XE (show version), сравниваем с Cisco Software Advisor. Выбираем целевую версию - обычно это последний Extended Maintenance Release (EMR) для нашего hardware. Скачиваем образ заранее, проверяем MD5/SHA512 с Cisco CCO.

Резервная копия конфигурации. copy running-config flash:backup-YYYYMMDD.cfg плюс копия на внешний TFTP/SCP. Две копии, разные места. Конфигурация на флэше не поможет, если флэш повреждён при записи образа.

Проверка свободного места. show flash: - на флэше должно быть достаточно места для нового образа. Старый образ не удаляем до завершения обновления и проверки стабильности.

Проверка boot-переменных. Смотрим show bootvar - убеждаемся, что прописан правильный порядок загрузки и что fallback-образ указан корректно. После загрузки нового образа прописываем явно: boot system flash:новый.bin.

Plan B - загрузочный режим ROMMON. Если образ не загрузится - ROMMON позволяет загрузить образ через TFTP. Убеждаемся что на устройстве есть доступ к ROMMON (консоль), и что у нас есть работающий TFTP-сервер в той же сети. Проверяем это до начала работ, не во время.

Согласование окна. Минимум неделя до окна. Фиксируем точное время, ответственных с обеих сторон, канал экстренной связи. Если устройство - единственная точка доступа в офис, договариваемся о присутствии кого-то на месте.

Тест после обновления. После загрузки нового образа - не просто «пинг прошёл». Проверяем: маршрутизация работает, BGP/OSPF поднялись, ACL применены, VPN-туннели установлены, сервисы доступны. У каждого заказчика свой список критичных сервисов - он должен быть составлен заранее.

Критерий отката и время отклика. До начала окна фиксируем: если через N минут после перезагрузки критичные сервисы не работают - откатываемся. Для IOS XE откат - это boot system flash:старый.bin и перезагрузка. Если образы разных версий - иногда есть нюансы с конфигурацией, но в большинстве случаев старый образ поднимается с той же конфигурацией без проблем.

Как это выглядит на практике

На одном объекте у нас ASR 1001-X на периметре - основная точка выхода в интернет и площадка для нескольких IPsec-туннелей к партнёрам. Последнее обновление IOS XE там было в середине 2020 года.

Окно назначено на конец апреля - ночь с воскресенья на понедельник. Конфигурация уже сохранена в трёх местах. Образ скачан и проверен. TFTP-сервер для ROMMON-восстановления поднят на соседней машине в management VLAN. Список проверок после обновления согласован с заказчиком - там восемь пунктов, от BGP до проверки конкретных HTTPS-сервисов через этот маршрутизатор.

На другом объекте - Catalyst 9300 внутри сети. Там рисков меньше, web UI был отключён, прямого выхода в интернет нет. Но обновление всё равно запланировано - в отдельное окно, через неделю после первого объекта.

Параллельно проверяем все устройства в рамках managed-сервиса на предмет включённого web UI без ACL. Пока нашли два случая на тестовых стендах - там не production, но привычка оставлять открытым то, что не должно быть открытым, заразна.

Статус

Апрельский аудит версий завершён. Смягчения для CVE-2021-1392 применены там, где web UI был доступен без ограничений. Окна обслуживания согласованы. Сами обновления - в следующие две недели.

Оборудование с IOS XE не обновляется за одну итерацию по всему парку - это последовательная работа, которую торопить не стоит. Лучше сделать аккуратно по одному устройству, чем быстро и потом объяснять заказчику, почему связь не поднялась.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.