«the heartbleed bug» или openssl как вектор атаки

19
Svolskiy Vladislav Sapozhnikov Denis The Heartbleed Bug OpenSSL как вектор атаки

Upload: oleg-lipin

Post on 16-Jun-2015

209 views

Category:

Software


5 download

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 как вектор атаки

Svolskiy Vladislav Sapozhnikov Denis

The Heartbleed BugOpenSSL как вектор атаки

Page 2: «The Heartbleed Bug» или OpenSSL как вектор атаки

#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 как вектор атаки

#IntroУязвимость связана с отсутствием необходимой проверки границ в одной из процедур расширения Heartbeat (RFC6520) для протокола TLS/DTLS.

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

Page 4: «The Heartbleed Bug» или OpenSSL как вектор атаки

#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 как вектор атаки

Разбор уязвимости

Исправление начинается здесь

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 как вектор атаки

Разбор уязвимости

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 как вектор атаки

Разбор уязвимости

/* Read type and payload length first */hbtype = *p++;n2s(p, payload);pl = p;

dtls1_process_heartbeat

Page 8: «The Heartbleed Bug» или OpenSSL как вектор атаки

Разбор уязвимости

unsigned char *buffer, *bp;int r;buffer = OPENSSL_malloc(1 + 2 + payload + padding);bp = buffer;

Magic

Page 9: «The Heartbleed Bug» или OpenSSL как вектор атаки

Разбор уязвимости

/* 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 как вектор атаки

Demonstration part

Page 11: «The Heartbleed Bug» или OpenSSL как вектор атаки

>Варианты защиты

Обновление OpenSSL до безопасной версии Перекомпилляция с флагом -DOPENSSL_NO_HEARTBEATS

Аналог OpenSSL

Page 12: «The Heartbleed Bug» или OpenSSL как вектор атаки

>Варианты защиты

Обновление 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 как вектор атаки

>Варианты защитыОбновление 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 как вектор атаки

>Варианты защитыОбновление FreeBSD

# freebsd-update fetch# freebsd-update install

# service nginx restart# service apache22 restart

# freebsd-version

Page 15: «The Heartbleed Bug» или OpenSSL как вектор атаки

>Последствия

Page 16: «The Heartbleed Bug» или OpenSSL как вектор атаки

#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 как вектор атаки

#InTheEnd“It’s more fun to be a pirate than to join the navy.”

Steve Jobs © 1982

Page 18: «The Heartbleed Bug» или OpenSSL как вектор атаки

#ContactSvolskiy VladislavSapozhnikov Denis Thank You

Page 19: «The Heartbleed Bug» или OpenSSL как вектор атаки

Svolskiy Vladislav Sapozhnikov Denis

The Heartbleed BugOpenSSL как вектор атаки