Heartbleed (CVE) — различия между версиями

Материал из Национальной библиотеки им. Н. Э. Баумана
Строка 39: Строка 39:
  
 
=Устранение=
 
=Устранение=
Бодо Меллер и Адам Лэнгли из Google разработали патч, устраняющий Heartbleed, который впоследствии был применен Стивеном Хэнсоном 7 апреля и добавлен в версию 1.0.1g:  
+
Бодо Меллер и Адам Лэнгли из [[Google_Inc.|Google]] разработали патч, устраняющий Heartbleed, который впоследствии был применен Стивеном Хэнсоном 7 апреля и добавлен в версию 1.0.1g:  
  
  if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */
+
 
 +
<syntaxhighlight lang="C++" line="1" style="overflow-x:scroll" >
 +
if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */
 +
</syntaxhighlight>
  
  

Версия 02:42, 15 июня 2019

Heartbleed
Heartbleed icon.png
CVE identifier(s) CVE-2014-0160(Heartbleed)
Date discovered 1 April 2014 года; 5 years ago (2014-04-01)
Date patched 7 April 2014 года; 5 years ago (2014-04-07)
Discoverer Команда безопасности Google
Affected software OpenSSL
Website http://heartbleed.com/

Heartbleed - кодовое название уязвимости под номером CVE-2014-0160 в программном обеспечении OpenSSL, позволяющая несанкционированно читать оперативную память сервера. Название Heartbleed было придумано инженером финской компании Codenomicon, занимающейся информационной безопасностью. Они же придумали логотип в виде кровоточащего сердца и создали сайт heartbleed.com, чтобы рассказать об уязвимости сообществу.


Причина

31 декабря 2011 в OpenSSL было добавлено расширение Heartbeat для TLS, реализующее непрерывное безопасное соединение без необходимости переподключения.

Уязвимость заключается в том, что клиент может отправить heartbeat запрос с заведомо ложным числом - длиной сообщения (больше, чем было отправлено), в связи с чем от сервера вернется это же сообщение + байты, следуемые далее в оперативной памяти.

Рисунок 1 – Описание атаки Heartbleed

Эксплуатация

Для примера эксплуатации воспользуемся одним из популярных скриптов, доступного по ссылке https://gist.github.com/eelsivart/10174134.

Рисунок 2 – Описание команд

Он позволяет не только проэксплуатировать уязвимость, но и автоматизирует часть действий как, например, поиск приватного ключа в дампе памяти.

Для минимальной демонстрации уязвимости достаточно указать ip-адрес и порт (если он отличный от 443):

Рисунок 3 – Пример эксплуатации

В данном случае были получены логин и пароль, вводимые пользователем на сайте.

Устранение

Бодо Меллер и Адам Лэнгли из Google разработали патч, устраняющий Heartbleed, который впоследствии был применен Стивеном Хэнсоном 7 апреля и добавлен в версию 1.0.1g:


1 if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */


Последствия

На момент публикации heartbleed было уязвимо больше 500 млн сайтов. После широкой огласки на новостных ресурсах, количество уязвимых сайтов уменьшалось, но, тем не менее в 2017 году количество уязвимых сайтов оставалось около 200 тысяч.

Рисунок 4 – Статистика Heartbleed

https://www.cert.at/services/blog/20170127160051-1894_en.html

Уязвимые версии:

  • OpenSSL 1.0.2-beta
  • OpenSSL 1.0.1 — OpenSSL 1.0.1f

Ссылки

  1. Официальная Wiki // wikipedia.org. [2019—2019]. URL: https://ru.wikipedia.org/wiki/Heartbleed (дата обращения 3.06.2019).
  2. Главная страница уязвимости // heartbleed.com. [2019-2019]. URL: http://heartbleed.com/ (дата обращения 3.06.2019)
  3. Страница Shodan для поиска уязвимых серверов // shodan.io [2019-2019]. URL: https://www.shodan.io/search?query=port%3A443+openssl+1.0.1 (дата обращения 3.06.2019)