
Уязвимость BDU:2015-00642 (CVE-2014-3566) в OpenSSL
Уязвимость BDU:2015-00642 (CVE-2014-3566), известная как POODLE (Padding Oracle On Downgraded Legacy Encryption), затрагивает протокол SSL 3.0 и связана с недостатками в реализации режима CBC (Cipher Block Chaining) в OpenSSL. Атака позволяет злоумышленнику, действующему по схеме "человек посередине" (MitM), расшифровать фрагменты передаваемых данных, манипулируя заполнением блоков шифротекста. Успешная эксплуатация требует принудительного понижения версии протокола до SSL 3.0, который использует недетерминированное заполнение блоков.
Анализ уязвимости
Уровень опасности: 3.4 (низкий) по шкале CVSS v3.1.
Вектор атаки: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:N/A:N
-
AV:N (Вектор атаки: Сетевой) – атака выполняется через сеть.
-
AC:H (Сложность эксплуатации: Высокая) – требуется точное время и многократные попытки.
-
PR:N (Уровень привилегий: Не требуются).
-
UI:R (Вовлечение пользователя: Требуется взаимодействие) – например, перехват сессии.
-
S:C (Область воздействия: Изменяется) – уязвимость влияет на смежные компоненты.
-
C:L (Конфиденциальность: Частичная утечка) – раскрытие отдельных данных.
-
I:N (Целостность: Нет воздействия).
-
A:N (Доступность: Нет воздействия).
Условия эксплуатации
-
Сервер или клиент поддерживают SSL 3.0 – даже если TLS активирован, часто остается фолбэк.
-
Возможность MitM – атакующий должен перехватывать и модифицировать трафик (например, в публичных Wi-Fi).
-
Использование CBC-режима – в SSL 3.0 отсутствует детерминированное заполнение блоков.
-
Клиент выполняет "downgrade dance" – автоматическое понижение версии протокола при ошибках соединения.
Пример сценария: корпоративная сеть с устаревшим VPN-шлюзом, поддерживающим SSL 3.0. Злоумышленник, получивший доступ к локальной сети, внедряет ложные пакеты, чтобы перевести соединение на SSL 3.0, и начинает атаку на CBC.
Технический анализ эксплоитов
Эксплоит 1: Модуль Metasploit для проверки SSL/TLS
Ruby-код из Metasploit проверяет поддержку уязвимых версий и шифров. Пример логики:
def check_vulnerabilities(ip, ssl_version, ssl_cipher, cert) if ssl_version == 'SSLv3' print_good('Accepts SSLv3, vulnerable to POODLE') report_vuln(host: ip, port: rport, name: 'POODLE', refs: ['CVE-2014-3566']) end end
Модуль последовательно тестирует SSL-версии и шифры, фиксируя возможность использования SSL 3.0. При обнаружении уязвимости создается отчет, указывающий на BDU:2015-00642 (CVE-2014-3566).
Эксплоит 2: Атака на CBC-режим (пример на Python)
Хотя в исходных данных эксплоита приведен код для Heartbleed, POODLE требует иного подхода. Пример концептуальной реализации:
def poodle_attack(encrypted_data): block_size = 8 # Для AES-128-CBC в SSL 3.0 for i in range(len(encrypted_data) // block_size): modified_block = xor(encrypted_data[i*block_size], 0x80) # Манипуляция заполнением send(modified_block) if check_padding_error(): # Анализ ответа сервера leak_byte = decrypt_byte(modified_block) return leak_byte
Атакующий подменяет блоки шифротекста, наблюдая за поведением сервера при проверке заполнения. Каждая успешная итерация раскрывает 1 байт данных.
Где используется уязвимая библиотека?
OpenSSL применяется в:
-
Веб-серверах (Apache, Nginx).
-
VPN-решениях (OpenVPN).
-
Почтовых сервисах (Exim, Postfix).
-
IoT-устройствах с устаревшим ПО.
Пример: маршрутизатор D-Link DIR-825 с firmware v1.03 использует OpenSSL 1.0.1j, подверженный POODLE.
Защита и рекомендации
-
Отключение SSL 3.0:
-
Для Apache:
SSLProtocol All -SSLv3 -SSLv2
-
Для Nginx:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
-
-
Принудительное использование TLS:
openssl s_client -connect example.com:443 -tls1_2
-
Активация TLS_FALLBACK_SCSV – предотвращает downgrade-атаки.
-
Обновление OpenSSL до версий 1.0.1j, 1.0.0o, 0.9.8zc.
