Уязвимость Heartbleed: как избежать апокалипсиса

Бизнес

Как мы уже сообщали, исследователи обнаружили весьма скверную уязвимость в популярном криптографическом пакете с открытым кодом OpenSSL, позволяющую считывать содержимое памяти в системах, защищённых уязвимой версией OpenSSL. Это по сути означает, что все механизмы защиты соединений, полагающиеся на данную реализацию протоколов шифрования, попросту не работают. Речь идёт не о том, что шифрования никакого нет. Просто любой, кто знал об уязвимости, присутствующей в OpenSSL, начиная с версии 1.0.1, выпущенной в 2012 году, мог всё это время прослушивать любые шифрованные соеднения, эксплуатируя брешь, получившую уже громкое имя Heartbleed («кровоточащее сердце» или «сердце кровью обливается»).

featured640

Заинтересованные стороны встретили новость с нарастающей паникой. Сейчас ситуация выглядит, скажем так, несколько апокалиптичной. На самом ли деле всё так плохо?

Короткий ответ: да. Потенциально.

Развёрнутый ответ

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

Иными словами, мы наблюдаем, вероятно, одну из самых значительных брешей в защите информации за всю историю. И одну из самых «долгоиграющих». На данный момент никто не может сказать, насколько активно она эксплуатировалась, но очевидно, что дыра была открыта в течение двух лет: уязвимая OpenSSL 1.0.1 была выпущена в марте 2012 года.

Дэвид Шартье, исполнительный директор компании Codenomicon, заявил Associated Press: «Я не думаю, что у кого-либо есть право говорить со всей определённостью, что его ресурсы не скомпрометированы».

И это действительно так. Потенциальные масштабы проблемы — колоссальны. Парадокс или нет, но именно сейчас положение может резко ухудшиться, поскольку теперь информация об уязвимости стала достоянием широкой общественности: у пользователей OpenSSL, естественно, уйдёт какое-то время на то, чтобы установить нужные обновления, и это открывает широкое «окно возможностей» для потенциальных преступников.

К слову сказать, «концептуальные реализации» эксплойтов для этой уязвимости уже множатся. Нетрудно представить себе, сколько времени уйдёт на то, чтобы концепты превратились в полноценные вредоносные эксплойты.

Подробности

OpenSSL — это открытая реализация протоколов шифрования TSL (Transport Layer Security) и его предшественника SSL (Secure Socket Layer). Оба эти протокола используют сертификаты безопасности X.509 и, соответственно, ассиметричную криптографию, также известную под названием «криптография с открытым ключом». Такой алгоритм предполагает наличие двух раздельных ключей — фрагментов информации или параметров, которые определяют, какие функциональные результаты выдаёт криптографический алгоритм или шифр. Один из этих ключей является тайным, другой — публичным.

Ключ, используемый для шифрования сообщения, отличается от того, который используется для расшифровки. У каждого пользователя имеется своя пара криптографических ключей — публичный и секретный. Открытый (публичный) ключ можно распространять, в то время как закрытый знает только тот, кому он принадлежит. Ключи находятся в математической взаимосвязи, однако их параметры подобраны таким образом, чтобы вычислить открытый ключ по закрытому можно было без особых усилий, в то время как обратный процесс невозможен. То есть, как минимум, неоправданно сложен — требуются такие вычислительные мощности, что расшифровка теряет смысл.

В этом случае открытый ключ можно спокойно публиковать, не опасаясь за безопасность шифра, в то время как закрытый ключ предоставляется только тем, кому предназначены сообщения или кто осуществляет электронную подпись.

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

Обычным решением этой проблемы является т.н. инфраструктура открытых ключей, в рамках которой доверенные организации — центры сертификации  (Certificate Authority, CA) —  удостоверяют принадлежность пар ключей их владельцам. Иными словами, центр сертификации берёт на себя ответственность говорить: «да, этот человек на самом деле является именно тем, кем он, по его словам, является, и мы это удостоверяем».

Это, кстати, причина, по которой кибепреступники часто атакуют центры сертификации: пробравшись в их инфраструктуру, они могут украсть всамделишные ключи или даже выпустить поддельные, которые, однако, будут восприниматься (браузерами, например) как подлинные.

Что ж, в условиях возможной эксплуатации уязвимости Heartbleed все эти предосторожности с криптоключами, увы, не имеют никакого смысла. Ошибка, приведшая к отсутствию необходимой проверки границ в одной из процедур расширения Heartbeat для протокола TLS/DTLS, позволяет в теории прочитать произвольные 64 килобайта памяти компьютеров и серверов. Как поясняется в публикации Codenomicon, «Heartbleed позволяет всем пользователям Сети прочитывать память систем, защищённых защищённых уязвимой версией OpenSSL. Это делает бесполезными секретные ключи, используемые для идентификации сервис-провайдеров и для шифрования трафика, а также позволяет получить доступ к именам и паролям пользователей и контенту, которым они обмениваются в данный момент. Таким образом злоумышленники могут прослушивать соединения и напрямую красть данные с сервисов и у пользователей, а также выдавать себя за кого-то другого«.

Говоря конкретнее, ограничение 64 килобайт относится только к одному обращению: злоумышленник может либо постоянно переподключаться, либо, при активном TSL-соединении, запрашивать произвольные 64-битные фрагменты содержимого памяти, покуда не получит всё, что ему нужно.

На момент раскрытия информации, около 17% из полумиллиона считавшихся безопасными веб-серверов, сертифицированных удостоверяющими центрами, были уязвимы к атаке с помощью Heartbleed. В то же время веб-серверы под управлением Apache и nginx также гипотетически подвержены уязвимости. А их совокупная доля на рынке составляет порядка 66%.

Очевидно, что мы имеем дело уже даже не с «брешью», а просто-таки с жерлом размером с Йеллоустоунскую кальдеру. Но, в отличие от геологического образования, его можно засыпать, и это необходимо сделать как можно скорее. До тех пор, пока это не сделано, под угрозой находятся все.

Что следует сделать бизнесу (и срочно)

Первая рекомендация, выпущенная два дня назад, гласила, что всем, кому нужны безопасные соединения, стоит вообще не пользоваться Сетью, покуда пыль не уляжется. В этот раз, однако, пыль не уляжется сама по себе: учитывая, сколько народу оказалось под угрозой, сегодня фактически каждому придётся совершить определённые действия. Во-первых, необходимо обновить OpenSSL до версии 1.0.1g (выпущена 7 апреля) везде, где используется этот пакет — на серверах, в операционных системах; затем сменить все пароли, особенно те, которые используются для доступа к важным данным.

Если вы владелец веб-сервиса, который использует уязвимую версию OpenSSL, есть смысл отключиться от Сети — так же, как это сделал, согласно BBC News, разработчик игры Minecraft, компания Mojang. Для хостинга игры используются ресурсы Amazon, и Mojang отключил все свои сервисы покуда хостер лечил свои системы от уязвимости.

Ситуация и в самом деле очень скверная. И решение проблемы требует больших усилий со стороны всех заинтересованных сторон.

Естественно, это означает недовольство пользователей. Однако в случае успешной атаки недовольство будет куда бОльшим.

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

Все крупные СМИ уже опубликовали информацию об этом баге, многие уже в курсе, но проблему требуется освещать как можно шире.

В дополнение к смене паролей необходимо запросить у центров сертификации новые сертификаты и сформировать новые ключи для шифрованных соединений. Без этого обновление OpenSSL или простая смена паролей ничего не дадут. В конечном счёте, если злоумышленники уже имели возможность воспользоваться уязвимостью, они могли украсть все ключи шифрования, пароли и другие реквизиты на доступ к серверу, так что им ничто не помешает зайти и выйти, не оставив никакого следа.

Господа, вы уже сменили пароли?