Zyxel выпустила исправления для коммутаторов серии GS1900. Уязвимость находится в CGI-программе интерфейса управления - компоненте, который обрабатывает запросы к веб-панели устройства. Ошибка позволяет выполнить команды операционной системы на коммутаторе. Учётные данные для этого не нужны, но атакующему требуется доступ к интерфейсу управления из локального сегмента сети.
Ошибка в проверке границ
Речь о записи за границами буфера, CWE-787. Программа неверно проверяет размер буфера и записывает данные за его пределы. Специально собранный HTTP-запрос превращает эту ошибку в выполнение команд. Zyxel описывает атакующего как неаутентифицированного и работающего из локальной сети. Уязвимость получила 8,8 из 10 по CVSS 3.1. Сложность низкая, привилегии и участие пользователя не требуются. Конфиденциальность, целостность и доступность затронуты по высокой категории.
Выполнение команд даёт контроль над самим устройством. Атакующий может менять конфигурацию, отключать порты и направлять трафик через подконтрольное оборудование. Для организации это неприятнее, чем взлом отдельной рабочей станции: через коммутатор проходит чужой трафик, а следов на нём остаётся меньше. Заодно устройство теряет роль точки, на которой держится сегментация сети.
Условия атаки
Ключевое ограничение - доступ к панели управления. Пока интерфейс виден только из внутренней сети, атакующему нужно сначала оказаться внутри периметра. Если панель опубликована в интернете, это условие исчезает. NCSC советует вынести интерфейсы управления в отдельную сеть и не делать их доступными напрямую из интернета. Тогда для атаки придётся сначала закрепиться внутри. Если же панель открыта из пользовательского сегмента, в зоне риска оказывается любой, кто попал в ту же сеть. Пароль не спасает: эксплуатация учётных данных не требует.
Какие версии закрывают
Уязвимы прошивки 2.90(AAHK.2)C0 и более ранние - у каждой модели свой номер в скобках. Патчи вышли с цифрой 3 в конце: 2.90(AAHK.3)C0 для GS1900-24E, 2.90(AAHH.3)C0 для GS1900-8, 2.90(AAHN.3)C0 для GS1900-48. В уведомлении Zyxel перечисляет модели от GS1900-8 до GS1900-48, включая GS1900-8HP, GS1900-10HP, GS1900-16, GS1900-24, GS1900-24EP, GS1900-24HPv2 и GS1900-48HPv2. Патчи получили устройства, которые остаются в периоде поддержки уязвимостей, - модели вне таблицы вендор называет незатронутыми. В записи CVE исправленная версия не указана, поэтому сверять патч нужно по уведомлению Zyxel.
Что известно об эксплуатации
Единой картины нет. NCSC ссылается на сообщения открытых новостей, по которым уязвимость применяли как zero-day. Независимо проверить это ведомство не смогло. CISA в блоке ADP указала в SSVC значение Exploitation: none, то есть сведений об эксплуатации у неё нет. При этом техническое воздействие CISA оценивает как полное, а автоматизацию атаки - как невозможную. Публикация деталей и подтверждённая атака - разные вещи, и подтверждённого случая пока не показал никто.
Патч закрывает проверку границ в CGI-компоненте, поэтому собранный особым образом запрос перестаёт приводить к выполнению команд. Ставить обновление стоит в первую очередь там, где панель управления доступна из пользовательской сети или из интернета. До обновления помогает сегментация: отдельная сеть для управления и запрет прямого доступа снаружи. Уязвимость нашли Yegor Vasilenko и Fernando Mercês из Binarly и сообщили о ней вендору.