
Уязвимость BDU:2024-06706 (CVE-2024-40711) Veeam Backup & Replication
Уязвимость BDU:2024-06706 (CVE-2024-40711) небезопасной десериализации в .NET Remoting позволяет удаленному злоумышленнику выполнять произвольный код без аутентификации в Veeam Backup & Replication. Уязвимость возникает при обработке специально сформированных сериализованных объектов через протокол .NET Remoting.
Анализ уязвимости
Уровень опасности: 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 Impact: High) - Полное нарушение конфиденциальности
-
I:H (Integrity Impact: High) - Полное нарушение целостности
-
A:H (Availability Impact: High) - Полное нарушение доступности
Условия эксплуатации:
-
Доступ к сети с уязвимым сервисом Veeam Backup & Replication (порт TCP 9392 по умолчанию)
-
Версия ПО ≤ 12.1.2.172
-
Открытый .NET Remoting endpoint (
/RemotingServer
)
Технический анализ эксплоита
Рассмотрим ключевые компоненты эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2024-40711:
1. Создание вредоносного объекта
Эксплоит использует цепочку гаджетов .NET для выполнения кода через BinaryFormatter
:
// Создание payload для выполнения команды CVE-2024-40711.exe -f binaryformatter -g Veeam -c "cmd /c calc.exe"
2. Механизм десериализации
Уязвимость в обработке CDbCryptoKeyInfo
:
public class CDbCryptoKeyInfo : ISerializable { public void GetObjectData(SerializationInfo info, StreamingContext context) { // Уязвимый метод, позволяющий подменить логику } }
3. Сетевое взаимодействие
Эксплоит запускает HTTP-сервер для доставки payload:
HttpServerChannel for 'trigger' created: http://192.168.201.1:8000/trigger
4. Отправка триггера
Используется уязвимый метод .NET Remoting:
TcpChannel channel = new TcpChannel(properties, clientProvider, serverProvider); ChannelServices.RegisterChannel(channel, secure);
Возможные последствия эксплуатации:
-
Полный контроль над сервером резервного копирования
-
Кража резервных копий (включая зашифрованные данные)
-
Компрометация доменных учетных записей через системные привилегии Veeam
-
Саботаж резервных копий (шифрование/удаление)
-
Распространение в корпоративную сеть (атака на Active Directory)
Защитные меры
1. Обновление ПО
-
Установить Veeam Backup & Replication 12.3.1.1139 или новее.
2. Сегментация сети
# Правило iptables для ограничения доступа iptables -A INPUT -p tcp --dport 9392 -s trusted_ip -j ACCEPT iptables -A INPUT -p tcp --dport 9392 -j DROP
3. Правила для Suricata (IPS)
Добавить в local.rules
:
alert tcp any any -> $HOME_NET 9392 ( \ msg:"CVE-2024-40711 Veeam Exploit Attempt"; \ flow:to_server,established; \ content:"|2e 4e 45 54|"; depth:4; \ # .NET Remoting signature content:"CDbCryptoKeyInfo"; nocase; \ metadata:policy security-ips drop; \ sid:1000001; rev:1;)
Это правило Suricata предназначено для обнаружения попыток эксплуатации уязвимости CVE-2024-40711 в Veeam Backup & Replication, генерируя оповещение при обнаружении TCP-трафика, направленного на порт 9392 сервера Veeam, содержащего сигнатуру .NET Remoting (.NET) в первых 4 байтах и строку CDbCryptoKeyInfo (без учета регистра), что указывает на попытку эксплуатации уязвимости десериализации. Правило применяется к установленным TCP-соединениям, направленным на сервер, и рекомендует отбрасывать трафик для предотвращения эксплуатации.
4. Отключение ненужных служб
Для старых версий через PowerShell:
Stop-Service "VeeamBackupSvc" Set-Service "VeeamBackupSvc" -StartupType Disabled
5. Мониторинг аномалий
Пример логирования подозрительных запросов:
# В конфигурации Veeam <logger name="Remoting" level="TRACE" />
