«the heartbleed bug» или openssl как вектор атаки
DESCRIPTION
Программисты создают код, а хакеры находят в нем ошибки и пользуются ими. Это уже мейнстрим. Однако обнаруженная дыра в самом распространенном (open-source) криптографическом пакете OpenSSL потенциально могла привести к хищению данных большинства пользователей интернета, что назвать мейнстримом вряд ли получится. Событие: https://vk.com/heartbleedbug Лекторы: Владислав Свольский - https://vk.com/phone287495 Денис Сапожников - https://vk.com/denisnewtown Почитать: http://debian-help.ru/TRANSCRIPT
![Page 1: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/1.jpg)
Svolskiy Vladislav Sapozhnikov Denis
The Heartbleed BugOpenSSL как вектор атаки
![Page 2: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/2.jpg)
#IntroOpenSSL — криптографический пакет с открытым исходным
кодом для работы с SSL/TLS. Позволяет создавать ключи RSA, DH, DSA и сертификаты X.509, подписывать их, формировать. Также имеется возможность шифрования данных и тестирования SSL/TLS соединений
08.04.2014 сотрудники The OpenSSL Project выпустили бюллетень безопасности с сообщением о критической уязвимости CVE-2014-0160 в популярной криптографической библиотеке OpenSSL (1.0.1 и 1.0.2-beta).
![Page 3: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/3.jpg)
#IntroУязвимость связана с отсутствием необходимой проверки границ в одной из процедур расширения Heartbeat (RFC6520) для протокола TLS/DTLS.
Из-за маленькой ошибки кто угодно может получить доступ к оперативной памяти компьютеров, чьи коммуникации «защищены» уязвимой версией OpenSSL. В том числе, злоумышленник получает доступ к секретным ключам, именам и паролям пользователей и всему контенту, который должен передаваться в зашифрованном виде. При этом не остается никаких следов проникновения в систему.
![Page 4: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/4.jpg)
#Intro
Debian Wheezy (стабильная), OpenSSL 1.0.1e-2+deb7u4) Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11) CentOS 6.5, OpenSSL 1.0.1e-15) Fedora 18, OpenSSL 1.0.1e-4 OpenBSD 5.3 (OpenSSL 1.0.1c) и 5.4 (OpenSSL 1.0.1c) FreeBSD 8.4 (OpenSSL 1.0.1e) и 9.1 (OpenSSL 1.0.1c) NetBSD 5.0.2 (OpenSSL 1.0.1e) OpenSUSE 12.2 (OpenSSL 1.0.1c)
![Page 5: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/5.jpg)
Разбор уязвимости
Исправление начинается здесь
int dtls1_process_heartbeat(SSL *s)
{ unsigned char *p = &s->s3->rrec.data[0], *pl; unsigned short hbtype; unsigned int payload; unsigned int padding = 16; /* Use minimum padding */
![Page 6: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/6.jpg)
Разбор уязвимости
typedef struct ssl3_record_st { int type; /* type of record */ unsigned int length; /* How many bytes available */ unsigned int off; /* read/write offset into 'buf' */ unsigned char *data; /* pointer to the record data */ unsigned char *input; /* where the decode bytes are */ unsigned char *comp; /* only used with decompression - malloc()ed */ unsigned long epoch; /* epoch number, needed by DTLS1 */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ } SSL3_RECORD;
Структура, описывающая
записи; содержит тип, длину и данные
![Page 7: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/7.jpg)
Разбор уязвимости
/* Read type and payload length first */hbtype = *p++;n2s(p, payload);pl = p;
dtls1_process_heartbeat
![Page 8: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/8.jpg)
Разбор уязвимости
unsigned char *buffer, *bp;int r;buffer = OPENSSL_malloc(1 + 2 + payload + padding);bp = buffer;
Magic
![Page 9: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/9.jpg)
Разбор уязвимости
/* Enter response type, length and copy payload */*bp++ = TLS1_HB_RESPONSE;s2n(payload, bp);memcpy(bp, pl, payload);
Magic
![Page 10: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/10.jpg)
Demonstration part
![Page 11: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/11.jpg)
>Варианты защиты
Обновление OpenSSL до безопасной версии Перекомпилляция с флагом -DOPENSSL_NO_HEARTBEATS
Аналог OpenSSL
![Page 12: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/12.jpg)
>Варианты защиты
Обновление Debian, Ubuntu:
# aptitude update# aptitude -VR full-upgrade
# service nginx restart# service apache2 restart
# lsof -n | grep -iE 'del.*(libssl\.so|libcrypto\.so)'или# checkrestart
# dpkg -l | grep -i openssl# aptitude changelog openssl
![Page 13: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/13.jpg)
>Варианты защитыОбновление CentOS, RedHat, Fedora# yum update
# service nginx restart# service httpd restart
# lsof -n | grep -iE 'del.*(libssl\.so|libcrypto\.so)')'или# needs-restarting
# yum list openssl# rpm -q --changelog openssl
![Page 14: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/14.jpg)
>Варианты защитыОбновление FreeBSD
# freebsd-update fetch# freebsd-update install
# service nginx restart# service apache22 restart
# freebsd-version
![Page 15: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/15.jpg)
>Последствия
![Page 16: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/16.jpg)
#LinksВеб-сервисы: — filippo.io/Heartbleed/— www.ssllabs.com/ssltest/— rehmann.co/projects/heartbeat/— possible.lv/tools/hb/Обратный Heartbleed: blog.meldium.com/home/2014/4/10/testing-for-reverse-heartbleedТест для клиента: reverseheartbleed.comСкрипт на Python: gist.github.com/sh1n0b1/10100394, gist.github.com/mitsuhiko/10130454Скрипт на Go: github.com/titanous/heartbleederСкрипт на Си: github.com/robertdavidgraham/heartleechСтатистика по сайтам: gist.github.com/dberkholz/10169691Библиотека LibSSL: www.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/src/ssl/Подробный разбор CVE-2014-0160 (ручной патч):
http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=96db9023b881d7cd9f379b0c154650d6c108e9a3
![Page 17: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/17.jpg)
#InTheEnd“It’s more fun to be a pirate than to join the navy.”
Steve Jobs © 1982
![Page 18: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/18.jpg)
#ContactSvolskiy VladislavSapozhnikov Denis Thank You
![Page 19: «The Heartbleed Bug» или OpenSSL как вектор атаки](https://reader036.vdocuments.net/reader036/viewer/2022081508/557f09b2d8b42ac0728b4db6/html5/thumbnails/19.jpg)
Svolskiy Vladislav Sapozhnikov Denis
The Heartbleed BugOpenSSL как вектор атаки