
CVE-2024-21762 — это критическая уязвимость в продуктах Fortinet FortiOS и FortiProxy, присутствующая в их компоненте SSL VPN.
CVE-2024-21762 — это критическая уязвимость в продуктах FortiOS и FortiProxy компании Fortinet, обнаруженная в компоненте SSL VPN. Уязвимость позволяет неаутентифицированному удалённому злоумышленнику выполнить произвольный код или команды на целевой системе с помощью специально сформированного HTTP-запроса, что может привести к полному контролю над системой.
Опасность: Из-за наличия данной уязвимости злоумышленник может удалённо выполнить произвольный код без какой-либо аутентификации, получив тем самым полный контроль над затронутым устройством. Это может привести к утечке конфиденциальных данных, прерыванию обслуживания и даже дальнейшим сетевым атакам.
Метод атаки: Основным способом эксплуатации уязвимости является отправка специально сформированного HTTP-запроса, который вызывает уязвимость записи за пределами границ буфера (out-of-bounds write) в компоненте SSL VPN. В частности, злоумышленник может с помощью тщательно сконструированного запроса управлять данными в памяти, что в конечном итоге приводит к удалённому выполнению кода.
Меры защиты: Для предотвращения атак с использованием данной уязвимости рекомендуется немедленно обновить FortiOS и FortiProxy до последних официальных версий безопасности. Кроме того, временной мерой защиты может служить отключение функции SSL VPN.
CVE-2024-21762 — это высокоопасная уязвимость в Fortinet FortiOS SSL VPN, относящаяся к типу неаутентифицированной записи за пределами границ буфера. Уязвимость может быть использована для удалённого выполнения кода (RCE), что представляет угрозу для безопасности корпоративных сетей.
В феврале 2024 года FortiGate выпустила обновление, исправляющее несколько уязвимостей средней и высокой степени опасности. В данной статье основное внимание уделяется анализу процесса эксплуатации CVE-2024-21762, включая то, как использовать эту уязвимость для удалённого выполнения кода.
Следующий код PoC предоставлен assetnote и демонстрирует основные шаги эксплуатации данной уязвимости.
# 简化的漏洞利用代码片段
ssl_do_handshake_ptr = b"%60%ce%42%00%00%00%00%00" # SSL握手指针
getcwd_ptr = b"%70%62%2c%04%00%00%00%00" # getcwd函数指针
pivot_1 = b"%52%f7%fd%00%00%00%00%00" # pivot指令集1
pivot_2 = b"%ac%c9%ab%02%00%00%00%00" # pivot指令集2
rop = b"" # ROP链
rop += b"%c6%e2%46%00%00%00%00%00"
rop += b"%19%6f%4d%01%00%00%00%00"
# ... 其余ROP链内容省略
# 伪造请求数据
body = (b"B"*1808 + b"=" + b"B"*1024 + b"&") * 20
data = b"POST /remote/hostcheck_validate HTTP/1.1\r\n"
data += b"Host: 192.168.1.229\r\n"
data += f"Content-Length: {len(body)}\r\n".encode("utf-8")
data += b"\r\n" + body
# 发送伪造请求
ssock1 = make_sock(TARGET, PORT)
ssock1.sendall(data)
Путём сравнения бинарных файлов FortiOS 7.4.2 и 7.4.3, исправленный код находится в функции sub_18F4980. Исправление в основном сосредоточено на двух моментах:
chunk добавлена проверка длины chunk. Если декодированная длина превышает 16, она считается недопустимой.chunk trailer, чтобы предотвратить запись \r\n за пределами границ буфера.Инициирование записи за пределами границ:
chunk, если поле длины после декодирования равно 0, инициируется чтение chunk trailer.chunk trailer в стек записывается \r\n в соответствии с полем длины.0, это вызовет запись \r\n за пределами границ вблизи адреса возврата.Переполнение стека и перехват управления:
chunk можно перезаписать адрес возврата в стеке, добившись перехвата потока управления программой.Хотя перехват управления возможен с помощью ROP-цепочки, /bin/sh в основной программе FortiGate не обладает способностью напрямую выполнять команды, поэтому необходимо искать другие пригодные для использования функции. Например, путём подделки указателя на структуру можно использовать SSL_do_handshake для дальнейшей атаки.
Даже в конфигурации по умолчанию (с отключённым веб-режимом) данная уязвимость всё равно может быть использована.

CVE-2024-21762 — это уязвимость высокой степени сложности, для эксплуатации которой требуется глубокое понимание логики кода и раскладки памяти FortiOS. По сравнению с традиционными CTF-задачами, эксплуатация реальных уязвимостей требует более сложного анализа контекста и структуры.
Автор предоставил более подробную статью с анализом на китайском языке, которую можно посмотреть по ссылке: Оригинальная статья