Защищенное соединение и уязвимости безопасности

Защищенное соединение и уязвимости безопасности
При использовании некоторых сайтов вы можете замечать в адресной строке браузера, что напротив адреса этих сайтов есть значок в виде зеленого (иногда серого) замочка, а сами адреса начинаются с символов «https». Это говорит о том, что для соединения с подобными сайтами используется шифрованное соединение. До недавних пор защищенное соединение считалось надежным, но в 2014 году было обнаружено несколько критических уязвимостей, что представляет серьезную угрозу как для владельцев сайтов, так и для конечных пользователей.

Защищенное интернет-соединение требуется в самых разных случаях. К примеру, таким соединением пользуются при обмене мгновенными сообщениями, отправке и получении писем по e-mail, совершении оплаты онлайн. Обеспечивают защищенное интернет-соединение криптографический протокол SSL (Secure Sockets Layer) разработанный Netscape Communications в 1994 году для выпускаемого этой компанией браузера Netscape Navigator, а также протокол TLS, основанный на спецификации протокола SSL версии 3.0.

С помощью протоколов SSL и TLS данные, передаваемые по обычному протоколу HTTP, специальным образом шифруются, чтобы их не могли получить злоумышленники, но при этом на принимающей стороне данные могут быть расшифрованы при помощи особого уникального ключа. Расширение для протокола HTTP, поддерживающее обмен зашифрованными данными по SSL или TLS, получило название HTTPS.

Защита интернет-соединения с помощью протоколов SSL и TLS обеспечивается на 2 основных уровнях. Сначала клиент и сервер обмениваются данными по протоколу подтверждения подключения. Этот протокол содержит подпротокол для согласования данных сессии между клиентом и сервером (handshake-протокол), подпротокол, содержащий информацию для создания ключей шифрования, и подпротокол предупреждения, служащий для сообщения сторонам об изменениях статуса или о возможных ошибках.

Когда протокол подтверждения подключения начинает действовать, включается реализация функций безопасности, одной из которых является установление подлинности участников сессии. Для этого используется так называемый SSL-сертификат — цифровой документ по стандарту X.509, выдаваемый доверенной организацией (сертификационным центром) для подтверждения подлинности данных клиента и сервера. Конечным пользователям приобретать SSL-сертификат не нужно, поскольку популярные сертификаты уже установлены во всех основных браузерах, а вот владельцам сайтов, которые хотят, чтобы соединение с их сайтами было защищенным, требуется покупать SSL-сертификаты в сертификационных центрах (например, Comodo, Thawte или VerySign).

После осуществления обмена данными по протоколу подтверждения подключения наступает этап шифрования данных. В SSL и TLS используется шифрование данных с помощью асимметричных ключей: применяется пара ключей, один из которых является открытым (публичным), а второй — секретным (приватным). Приватный ключ известен только владельцу SSL-сертификата.

Таким образом, защищенное соединение обеспечивается за счет механизма асимметричного шифрования данных и сертификатов X.509. Считается, что при использовании защищенного соединения исключается возможность перехвата данных злоумышленниками, а это особенно важно, если передаваемые данные имеют большую ценность. К примеру, при совершении онлайн пользователь доверяет серверу свои платежные данные, и если бы он применял обычное незащищенное соединение по протоколу HTTP, то эти данные запросто могли бы попасть в руки злоумышленников.

Протоколы SSL и TLS по умолчанию поддерживаются всеми популярными браузерами и до 2014 года эти протоколы считались безопасными и надежными. Но 7 апреля 2014 года было объявлено о критической уязвимости в криптографическом пакете OpenSSL (версии OpenSSL 1.0.2-beta и OpenSSL 1.0.1, кроме 1.0.1g), получившей название Heartbleed, а 14 октября того же года было объявлено о критической уязвимости на уровне всего протокола SSL 3.0, получившей название POODLE. Эти уязвимости привели к тому, что защищенному соединению больше нельзя доверять в полной мере.

Уязвимость Heartbleed


Уязвимость Heartbleed Уязвимость Heartbleed, обозначаемая в списке CVE как CVE-2014-0160, связана с расширением TLS Heartbeat. Это расширение предназначено для поддержки активной связи между клиентом и сервером в течение всей сессии: клиент и сервер постоянно обмениваются друг с другом пакетом данных случайной длины (heartbeat-пакетом), который включает данные, которые сервер должен вернуть клиенту неизменными, и случайных заполняющих данных.

В криптографических пакетах OpenSSL 1.0.2-beta и OpenSSL 1.0.1-1.0.1f корректность heartbeat-пакета не проверялась, в результате чего у злоумышленников появилась возможность получать с сервера или клиента до 64 кБ данных оперативной памяти с каждым heartbeat-запросом. И хотя Heartbleed-атаки не позволяют злоумышленникам намеренно получить от сервера какой-то определенный блок памяти, все же многократный повтор подобных атак рано или поздно может привести к тому, что среди полученных данных окажутся секретные данные, например, закрытый ключ сервера, файлы cookies и т. д. При этом об атаке можно и не подозревать, ведь браузер будет работать в нормальном режиме, поскольку сам по себе представленный SSL-сертификат верный.

Об уязвимости Heartbleed было объявлено в апреле 2014 года, но существует она значительно дольше — с декабря 2011 года, когда в OpenSSL была добавлена поддержка TLS Heartbeat. Распространилась уязвимость вместе с версией OpenSSL 1.0.1 в марте 2012 года, и эксперты определяют, что около 17% защищенных сайтов предполагались уязвимыми на момент объявления об уязвимости. Данную уязвимость называют одной из самых критических.

Уязвимость POODLE


Уязвимость POODLE Уязвимость Padding Oracle On Downgraded Legacy Encryption, сокращенно POODLE, имеет официальный номер CVE-2014-3566. Эта уязвимость позволяет злоумышленникам осуществлять атаки типа Man-in-the-Middle на соединения, защищенные с помощью протокола SSL 3.0. Особенную опасность уязвимость POODLE представляет в связи с тем, что она затрагивает не какие-то определенные реализации, а сам протокол SSL 3.0, соответственно, атаке могут быть подвержены любые использующие этот протокол сервера и клиенты.

При POODLE-атаке злоумышленник имеет возможность отправлять от имени жертвы на сервер с SSL 3.0 свои данные и за каждые 256 запросов получать по 1 байту данных. Реализовать такую атаку злоумышленник может, к примеру, чтобы получить cookies на странице HTTPS и использовать их в своих целях. Атака возможна в связи с тем, что в SSLv3 padding не учитывается в MAC.

Как защититься от уязвимостей в SSL?


Появление столь опасных уязвимостей не на шутку взволновало специалистов по интернет-безопасности, ведь если скомпрометирован протокол защищенного соединения, то конечные пользователи больше не могут в полной мере доверять такому соединению. Поэтому необходимо срочно предпринимать меры по предотвращению атак, обезопасив как браузеры конечных пользователей, так и серверы, на которых располагаются сайты.

Чтобы конечному пользователю обезопасить свой браузер от возможных Heartbleed- и POODLE-атак, нужно сперва узнать, подвержен ли браузер данным уязвимостям. Сделать это можно с помощью специального онлайн-теста SSL Client Test. Если браузер использует протокол TLS 1.2 и не использует по умолчанию протокол SSL 3.0, то результат тестирования будет положительным. Если же тест покажет негативный результат, необходимо сменить браузер либо вручную отключить протокол SSL 3.0.

В частности вручную протокол SSL 3.0 однозначно потребуется отключить в браузерах на основе Chromium, таких как Google Chrome, Яндекс.Браузере, Амиго, Рамблер-Браузер и даже WhiteHat Aviator, который, кстати, позиционируется разработчиками как самый безопасный. Чтобы в этих браузерах отключить SSL 3.0, необходимо на ярлыке вызова браузера нажать правой кнопкой мыши и выбрать из контекстного меню пункт «Свойства». Далее во вкладке "Ярлык" открывшегося окна необходимо в поле «Объект» вручную дописать после адреса вызова объекта следующий код: « --ssl-version-min=tls1». Останется применить изменения, нажав кнопку ОК, после чего браузер можно запускать и продолжить работу с ним.

Защититься от возможных атак важно, само собой, не только конечным пользователям, но и владельцам тех серверов, на которых находятся сайты, соединение с которыми осуществляется по протоколу SSL. Для этого системным администраторам этих серверов следует своевременно обновлять используемое ПО и применять различные доступные инструменты безопасности. А чтобы проверить, подвержен ли сервер или конкретный сайт уязвимостям Heartbleed- и POODLE, необходимо провести онлайн-тест SSL Server Test. Чем выше будет оценка, полученная в результате этого теста, тем более надежным будет соединение.


Тестирование сайта на уязвимости Heartbleed и POODLE