SSL/TLS-атаки
SSL/TLS-атаки — это класс методов и техник, направленных на нарушение безопасности протоколов SSL (Secure Sockets Layer) и TLS (Transport Layer Security), которые обеспечивают шифрование и аутентификацию данных при передаче по компьютерным сетям, в первую очередь в интернете. Целью таких атак может быть перехват, чтение, модификация или подделка защищённого трафика, а также компрометация ключей шифрования или сертификатов. Атаки могут быть направлены как на уязвимости в самих протоколах, так и на их реализации, а также на человеческий фактор и инфраструктуру управления сертификатами.
История и эволюция
Первые версии протокола SSL (SSL 1.0, 2.0, 3.0) разрабатывались компанией Netscape в середине 1990-х годов. Вскоре после их внедрения были обнаружены серьёзные криптографические недостатки. Например, SSL 2.0 (1995 год) использовал слабые алгоритмы и не обеспечивал должной защиты от атак типа «человек посередине» (Man-in-the-Middle, MITM). В 1996 году был выпущен SSL 3.0, который устранил многие проблемы, но со временем также стал уязвим.
В 1999 году на основе SSL 3.0 был разработан протокол TLS 1.0 (RFC 2246), который стал стандартом IETF. Последующие версии — TLS 1.1 (2006), TLS 1.2 (2008) и TLS 1.3 (2018) — вводили улучшения в области безопасности, отказываясь от устаревших криптографических примитивов. Несмотря на это, на протяжении всей истории протоколов регулярно обнаруживались новые классы атак, что привело к постепенному отказу от старых версий. По состоянию на 2024 год большинство современных веб-серверов и браузеров поддерживают TLS 1.2 и TLS 1.3, а SSL 2.0 и SSL 3.0, а также TLS 1.0 и TLS 1.1 считаются устаревшими и небезопасными.
Классификация атак
Атаки на SSL/TLS можно классифицировать по нескольким признакам: по цели, по используемой уязвимости, по этапу установления соединения. Наиболее распространённые категории включают атаки на протокол, атаки на реализацию, атаки на инфраструктуру открытых ключей (PKI) и атаки, основанные на социальной инженерии.
Атаки на протокол
Эти атаки эксплуатируют недостатки в самом дизайне протоколов, независимо от конкретной реализации.
POODLE (Padding Oracle On Downgraded Legacy Encryption) — атака, опубликованная в 2014 году, которая позволяет расшифровать данные, защищённые протоколом SSL 3.0. Она использует уязвимость в схеме набивки (padding) блочных шифров в режиме CBC (Cipher Block Chaining). Злоумышленник, имеющий возможность выполнять атаку «человек посередине», может заставить клиент и сервер понизить версию протокола до SSL 3.0, после чего, отправляя специально сформированные запросы, постепенно восстанавливать содержимое зашифрованных сессионных cookie. Атака привела к массовому отключению поддержки SSL 3.0 на серверах и в браузерах.
BEAST (Browser Exploit Against SSL/TLS) — атака, опубликованная в 2011 году, направленная на TLS 1.0. Она эксплуатирует уязвимость в режиме CBC, позволяя злоумышленнику, контролирующему сетевой трафик, постепенно расшифровывать cookie и другие данные, передаваемые в защищённом соединении. Атака стала возможной из-за предсказуемости вектора инициализации (IV) в TLS 1.0. Для защиты от BEAST были внедрены серверные и клиентские обходные пути, а также рекомендован переход на TLS 1.1 и выше, где IV генерируется случайным образом.
CRIME (Compression Ratio Info-leak Made Easy) — атака, опубликованная в 2012 году, которая использует сжатие данных на уровне TLS. Если клиент и сервер поддерживают сжатие, злоумышленник может вставлять в запросы контролируемые данные и наблюдать за изменением размера сжатого трафика. Если вводимые данные совпадают с секретными данными (например, cookie), размер сжатого пакета уменьшается. Путем перебора символов злоумышленник может восстановить секретное значение. Атака привела к отключению сжатия TLS в большинстве браузеров и серверов.
Lucky Thirteen — атака, опубликованная в 2013 году, которая также нацелена на режим CBC в TLS. Она использует уязвимость в обработке времени проверки MAC (Message Authentication Code) и набивки. Злоумышленник может измерять время, необходимое серверу для обработки зашифрованных пакетов, и на основе этих временных замеров (timing side-channel) восстанавливать содержимое сообщений. Атака сложна в реализации, но демонстрирует фундаментальные проблемы с использованием CBC в TLS.
DROWN (Decrypting RSA with Obsolete and Weakened eNcryption) — атака, опубликованная в 2016 году, которая позволяет расшифровать трафик TLS, используя уязвимость в поддержке SSL 2.0 на том же сервере. Если сервер использует те же самые RSA-ключи как для современных версий TLS, так и для устаревшего SSL 2.0, злоумышленник может отправить специально сформированные запросы к SSL 2.0 и, используя криптоаналитическую атаку, восстановить сессионный ключ, а затем расшифровать и современный трафик. Атака затронула миллионы серверов, которые всё ещё поддерживали SSL 2.0.
Атаки на реализацию
Эти атаки эксплуатируют ошибки в программном коде, реализующем протоколы SSL/TLS.
Heartbleed — одна из самых известных и опасных атак, обнаруженная в 2014 году в популярной криптографической библиотеке OpenSSL (версии 1.0.1 до 1.0.1f). Уязвимость была связана с неправильной проверкой границ данных в расширении Heartbeat протокола TLS. Злоумышленник мог отправить серверу запрос с указанием длины данных, превышающей реальный размер, и в ответ получить из памяти сервера фрагмент данных, который мог содержать приватные ключи, пароли, сессионные cookie и другую конфиденциальную информацию. Уязвимость затронула огромное количество веб-серверов, почтовых серверов и других систем по всему миру.
BERserk — атака, обнаруженная в 2014 году в реализации проверки цифровых подписей RSA в библиотеке Mozilla NSS (Network Security Services). Уязвимость позволяла злоумышленнику подделать цифровую подпись сертификата, используя некорректную обработку кодировки BER (Basic Encoding Rules) в алгоритме проверки. Это могло привести к тому, что поддельный сертификат, выданный недоверенным центром сертификации, мог быть принят браузером как действительный.
Logjam — атака, опубликованная в 2015 году, которая относится к классу атак на протокол Диффи-Хеллмана (Diffie-Hellman). Она использует возможность понижения версии криптографических параметров (downgrade attack) до слабых, 512-битных групп Диффи-Хеллмана. Злоумышленник, находящийся между клиентом и сервером, может заставить их использовать слабую группу, после чего с помощью предварительных вычислений (например, с использованием конечного автомата) взломать общий секретный ключ. Атака продемонстрировала, что многие серверы поддерживали слабые группы Диффи-Хеллмана, что делало их уязвимыми.
Атаки на инфраструктуру открытых ключей (PKI)
Эти атаки направлены на систему сертификатов и центры сертификации (ЦС), которые являются основой доверия в TLS.
Атака на центр сертификации Comodo (2011 год) — инцидент, в ходе которого злоумышленники смогли получить доступ к системе регистрации одного из крупнейших ЦС — Comodo. Они сгенерировали поддельные сертификаты для нескольких популярных доменов, включая mail.google.com, login.yahoo.com и login.skype.com. Эти сертификаты могли быть использованы для проведения атак «человек посередине». Инцидент привёл к ужесточению процедур проверки в ЦС и внедрению механизмов Certificate Transparency.
Атака на центр сертификации DigiNotar (2011 год) — ещё более серьёзный инцидент, произошедший в Нидерландах. Злоумышленники полностью скомпрометировали инфраструктуру ЦС DigiNotar и выпустили более 500 поддельных сертификатов для доменов, включая .google.com, .microsoft.com, .facebook (продукт Meta, признанной экстремистской и запрещённой в РФ).com и даже для доменов спецслужб (например, .cia.gov). Поддельные сертификаты активно использовались для перехвата трафика пользователей в Иране. После обнаружения атаки DigiNotar был отозван из всех доверенных корневых хранилищ браузеров и вскоре обанкротился.
Атаки с использованием слабых ключей и алгоритмов — например, использование уязвимости в генераторе случайных чисел Debian OpenSSL (2008 год). Из-за ошибки в коде OpenSSL для Debian Linux, все RSA и DSA ключи, сгенерированные на этой системе, были предсказуемы. Злоумышленник мог легко вычислить приватный ключ из публичного, что делало все сертификаты, созданные на таких системах, недействительными.
Атаки, основанные на социальной инженерии и фишинг
Эти атаки не эксплуатируют технические уязвимости протоколов, а воздействуют на пользователя.
Фишинг с использованием поддельных сертификатов — злоумышленники создают веб-сайты, внешне неотличимые от легитимных (например, банков или онлайн-магазинов), и устанавливают на них самоподписанные или поддельные сертификаты. Пользователь, переходя по ссылке из фишингового письма, видит предупреждение браузера о недействительном сертификате, но, игнорируя его, может ввести свои логин и пароль, которые будут перехвачены.
Атаки с использованием небезопасных протоколов (HTTP Strict Transport Security, HSTS bypass) — если сайт использует HTTP, а не HTTPS, злоумышленник может перехватить трафик до установления защищённого соединения. HSTS (HTTP Strict Transport Security) — это механизм, который заставляет браузер всегда использовать HTTPS для данного сайта. Однако, если пользователь впервые заходит на сайт, злоумышленник может выполнить атаку SSL stripping, принудительно понизив протокол до HTTP, и HSTS не сработает. Для защиты от этого используются предварительно загруженные списки HSTS (HSTS preload lists).
Методы защиты
Защита от SSL/TLS-атак требует многоуровневого подхода, включающего как технические, так и организационные меры.
- Обновление и отказ от устаревших протоколов: Серверы и клиенты должны отключать поддержку SSL 2.0, SSL 3.0, TLS 1.0 и TLS 1.1. Рекомендуется использовать только TLS 1.2 и TLS 1.3.
- Использование современных криптографических алгоритмов: Предпочтение следует отдавать алгоритмам с аутентифицированным шифрованием (AEAD), таким как AES-GCM и ChaCha20-Poly1305. Следует избегать использования слабых алгоритмов, таких как RC4, 3DES и режима CBC.
- Регулярное обновление программного обеспечения: Криптографические библиотеки (OpenSSL, LibreSSL, NSS) и веб-серверы должны своевременно обновляться для устранения известных уязвимостей.
- Использование надёжных сертификатов: Сертификаты должны быть получены от доверенных центров сертификации. Следует использовать сертификаты с сильными ключами (например, RSA 2048 бит или ECDSA) и проверять их срок действия.
- Внедрение Certificate Transparency (CT): Механизм CT позволяет публично регистрировать все выпущенные сертификаты, что затрудняет выпуск поддельных сертификатов без обнаружения.
- Использование HSTS и HSTS Preload: Включение HSTS на сервере и добавление домена в предварительно загруженный список HSTS защищает от атак SSL stripping.
- Применение механизмов защиты от атак типа «человек посередине»: Например, использование DNSSEC для защиты от подмены DNS-записей.
- Обучение пользователей: Пользователи должны быть проинформированы о рисках игнорирования предупреждений браузера о недействительных сертификатах и о методах фишинга.
Значение и последствия
SSL/TLS-атаки имеют серьёзные последствия для безопасности интернета. Успешная атака может привести к краже конфиденциальных данных (пароли, номера кредитных карт, медицинская информация), компрометации государственных и корпоративных систем, а также к подрыву доверия к электронной коммерции и онлайн-банкингу. Каждая крупная уязвимость (Heartbleed, POODLE, DROWN) приводила к массовым обновлениям программного обеспечения, отключению устаревших протоколов и ужесточению стандартов безопасности. Развитие протокола TLS, особенно версии 1.3, стало ответом на накопленный опыт борьбы с атаками, включив в себя многие защитные механизмы по умолчанию.
Источники
- Adrian, D., Bhargavan, K., Durumeric, Z., et al. (2014). "Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice". Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security.
- AlFardan, N. J., & Paterson, K. G. (2013). "Lucky Thirteen: Breaking the TLS and DTLS Record Protocols". IEEE Symposium on Security and Privacy.
- Bock, H., et al. (2016). "DROWN: Breaking TLS using SSLv2". USENIX Security Symposium.
- Duong, T., & Rizzo, J. (2011). "BEAST: Browser Exploit Against SSL/TLS". Ekoparty Security Conference.
- Durumeric, Z., et al. (2014). "The Matter of Heartbleed". Proceedings of the 2014 Internet Measurement Conference.
- Möller, B., Duong, T., & Kotowicz, K. (2014). "This POODLE Bites: Exploiting the SSL 3.0 Fallback". Google Security Blog.
- Rizzo, J., & Duong, T. (2012). "CRIME: Compression Ratio Info-leak Made Easy". Ekoparty Security Conference.
- RFC 2246: The TLS Protocol Version 1.0 (1999).
- RFC 4346: The Transport Layer Security (TLS) Protocol Version 1.1 (2006).
- RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 (2008).
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 (2018).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →