CVE-2022-39197

Fortra Cobalt Strike

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2023-03-30

Официальное описание

Fortra Cobalt Strike contains a cross-site scripting (XSS) vulnerability in Teamserver that would allow an attacker to set a malformed username in the Beacon configuration, allowing them to execute code remotely.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2022-39197 представляет собой критическую уязвимость типа Cross-Site Scripting (XSS) в компоненте Teamserver продукта Cobalt Strike (версии до 4.7.1).

Проблема заключается в недостаточной фильтрации данных в поле «process name» (имя процесса) или «username» при регистрации нового Beacon. Злоумышленник может отправить специально сформированный запрос на Teamserver, имитируя подключение нового агента. Вредоносная нагрузка в поле имени интерпретируется графическим интерфейсом клиента Cobalt Strike (Java Swing) как HTML-тег.

Поскольку Java Swing поддерживает базовый рендеринг HTML, атакующий может использовать тег <img> с атрибутом src, указывающим на удаленный ресурс. Это позволяет: 1. Раскрыть IP-адрес оператора. 2. Выполнить атаку на перебор файлов (через file://). 3. В определенных конфигурациях добиться удаленного выполнения кода (RCE) через десериализацию или загрузку вредоносных Java-объектов.

Как исправить

Основным и единственным надежным способом устранения уязвимости является обновление Cobalt Strike до версии 4.7.1 или выше. В этой версии разработчики внедрили принудительное экранирование HTML-символов перед их отображением в консоли оператора.

Для обновления выполните следующие действия:

  1. Запустите скрипт обновления в директории с установленным Cobalt Strike:
./update

  1. Если автоматическое обновление недоступно, скачайте актуальную версию через лицензионный портал Fortra и полностью замените файлы cobaltstrike.jar и teamserver.

  2. Перезапустите Teamserver, чтобы изменения вступили в силу:

./teamserver <IP_адрес> <пароль> <профиль>

Временные меры

Если немедленное обновление невозможно, необходимо минимизировать риски с помощью следующих настроек:

  1. Использование Malleable C2 Profile: Настройте профиль так, чтобы ограничить длину и тип символов в полях, передаваемых Beacon. Однако это не гарантирует полной защиты от поддельных пакетов.

  2. Фильтрация трафика на уровне сетевого экрана: Разрешите входящие соединения на порт Teamserver (по умолчанию 50050) только с доверенных IP-адресов операторов.

iptables -A INPUT -p tcp --dport 50050 -s <TRUSTED_IP> -j ACCEPT
iptables -A INPUT -p tcp --dport 50050 -j DROP

  1. Запуск клиента в изолированной среде: Запускайте клиентскую часть Cobalt Strike (GUI) внутри изолированной виртуальной машины или контейнера без доступа к критическим файлам хостовой системы и внутренней сети.

  2. Отключение автоматического рендеринга (для продвинутых пользователей): Использование Java-агентов для перехвата вызовов методов отрисовки текста в Swing и принудительной очистки строк от HTML-тегов.