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

«The Heartbleed Bug» или OpenSSL как вектор атаки.

Jun 16, 2015

Download

Software

Oleg Lipin

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

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

Событие: https://vk.com/heartbleedbug

Лекторы:

Владислав Свольский - https://vk.com/phone287495
Денис Сапожников - https://vk.com/denisnewtown

Почитать: http://debian-help.ru/
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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 как вектор атаки