
Уязвимость внедрения команд ОС в CGI-программе Zyxel
Уязвимость внедрения команд ОС в программу CGI Zyxel
Уязвимость, впервые обнаруженная 13 апреля 2022 года, приводила к удаленному выполнению кода в продуктах брандмауэра Zyxel. Эта важная уязвимость с оценкой CVSS 9.8 была заблокирована обновлением, выпущенным Zyxel через 15 дней после её появления. В процессе пострадало не менее 20 800 моделей, в основном в Европе. Уязвимость связана с командой "setWanPortSt" в апплете нулевого касания (zero-touch provisioning). Доступ к команде "setWanPortSt" осуществляется через конечную точку /ztp/cgi-bin/handler. С момента выпуска обновления для данной модели Zyxel не было зафиксировано ни одной эксплуатации. Версия программного обеспечения затронутых моделей была обновлена до v5.30, и было подчеркнуто, что для предотвращения уязвимости должно быть включено автоматическое обновление программного обеспечения.
13 апреля 2022 года компания Rapid7 сообщила об уязвимости, затрагивающей устройства брандмауэра Zyxel, позволяющей злоумышленникам удаленно внедрять произвольные команды от имени пользователя «nobody» без аутентификации. Эта уязвимость была обработана как критическая, и оценка CVSS была определена как 9,8. Затем Zyxel устранил уязвимость, выпустив обновление безопасности 28 апреля 2022 года. 12 мая 2022 года Rapid7 опубликовала уведомление и модуль Metasploit для этой уязвимости.
Исследователи из ShadowServer начали отслеживать попытки эксплуатации CVE-2022-30525. В ходе расследований было обнаружено, что как минимум 20 800 затронутых моделей брандмауэров Zyxel были доступны онлайн. Было отмечено, что большинство затронутых моделей находились во Франции и Италии.

Уязвимость возникает из-за использования «os.system» с данными, предоставленными злоумышленником. Для запуска атаки используется конечная точка /ztp/cgi-bin/handler. Handler — это скрипт Python, который может выполнять ряд различных команд. Джейк Бейнс, впервые сообщивший об ошибке, объяснил уязвимость в своем блоге следующим образом: «Rapid7 обнаружила и сообщила об уязвимости, затрагивающей брандмауэры Zyxel, поддерживающие Zero Touch Provisioning (ZTP), включая серии ATP, VPN и USG FLEX (включая USG20-VPN и USG20W-VPN). Уязвимость, идентифицированная как CVE-2022-30525, позволяет неаутентифицированному удаленному злоумышленнику добиться произвольного выполнения кода от имени пользователя nobody на затронутом устройстве». Проблема возникает из-за команды «setWanPortSt» в реализации нулевого касания (zero touch provisioning), которая позволяет удаленному поставщику изменять IP-настройки портов брандмауэра.
Был опубликован PoC для лучшего понимания того, как осуществляется эксплуатация. Victorian Machinery — это эксплойт доказательства концепции для CVE-2022-30525. Уязвимость представляет собой неаутентифицированную удаленную инъекцию команд, затрагивающую брандмауэры Zyxel, поддерживающие нулевое касание (zero touch provisioning).

Сначала цель эксплуатируется с помощью прослушивателя netcat и перехватывается обратная оболочка. По умолчанию «nc» запускается с указанием «nc-path». В Python создается копия основного процесса с помощью операции «os.fork()». Затем, если идентификатор процесса равен 0, выполняется POST-запрос к указанному URL-адресу. URL-адрес содержит соответственно протокол, удаленный адрес для эксплуатации, удаленный порт и конечную точку «/ztp/cgi-bin/handler». Благодаря конечной точке /ztp/cgi-bin/handler здесь можно получить доступ к функции в команде «setWanPortSt», которая позволяет изменять IP-настройки портов брандмауэра. При анализе полезной нагрузки видно, что целью команды является порт 1270 протокола DHCP. Таким образом, злоумышленники могут обеспечить удаленное выполнение кода от имени nobody.
Фонд Shadowserver, группа, расследующая глобальную эксплуатацию, не раскрыла дополнительной информации о наблюдаемых попытках эксплуатации и их характеристиках. Было объявлено, что с понедельника, 16 мая 2022 года, попыток злоупотреблений не было, но расследования продолжаются.
Администраторам затронутых устройств рекомендуется как можно скорее обновить прошивку до версии V5.30. Джейк Бейнс также посоветовал по возможности включить автоматическое обновление прошивки. Zyxel критиковали за молчаливое обращение с уязвимостью, но в заявлении объяснили, что это было связано с «недопониманием в процессе координации раскрытия информации». Внутренним сотрудникам было сказано, что создание новой политики «HTTP Protocol Signatures» путем создания словаря для ручного смягчения может предотвратить эксплуатацию.
В результате эта уязвимость, возникшая в продуктах брандмауэра Zyxel, затронула многие модели на критическом уровне. Хотя проблема была решена в короткие сроки, влияние эксплойта было довольно большим. Отсутствие обнаруженных эксплойтов в течение длительного времени показывает, что обновления могут закрыть уязвимость безопасности на данный момент.