Você está na página 1de 38

Dissecando o

Heart bleed
Ricardo Klber Martins Galvo
www.ricardokleber.com

ricardokleber@ricardokleber.com

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

GTS'23
15/05/2014

Dissecando o HeartBleed
O Dia H

07 de Abril de 2014

Mas o problema foi descoberto mesmo nessa data?

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

21 de Marco de 2014

Google Security

Descoberta: Neel Mehta

Correo:

Bodo Moeller e Adam Langley

Somente em servidores Google

10 dias = segredo interno

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

31 de Marco de 2014

CloudFlare

vazamento Google Cloudflare

Criao do prprio patch

Correo interna

Segredo...

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

01 de Abril de 2014

Google avisa equipe OpenSSL

Detalhamento do problema

Sugesto de correo (fix)

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

01 a 07 de Abril de 2014

A (m) notcia se espalha... ainda nos bastidores...

OpenSSL avisa RedHat (S.O. com mais usurios afetados)

Facebook avisado (e corrige imediatamente)

Akamai tambm... e outras grandes empresas.

Yahoo, Amazon... e outras grandes empresas... no foram avisadas

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

02 de Abril de 2014

Codenomicon (re)descobre a falha

Empresa Finlandesa

Batizou o problema = Heartbleed

Comprou o domnio :)

Comunicou ao National Cyber Security Centre Finland (NCSC-FI)

NCSC-FI comunicou ao CERT

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
O Dia H

07 de Abril de 2014

OpenSSL emite boletim pblico


CloudFlare publica artigo em seu blog
Neel Mehta escreve tweet sobre o problema
Codenomicon divulga site com informaes

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Motivao para palestras de esclarecimento

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
Desmistificando...

O que o Heartbleed
NO ...

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
No um VRUS !!!

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
No um VRUS !!!

Trocar a senha em sites importante


mas NO resolve o problema !!!

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
No um VRUS !!!

13 dias depois... t melhorando !!??

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
No um VRUS !!!

O ltimo de uma srie de vrus que roubam todas as suas informaes pessoais (!!??)
GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
Desmistificando...

O Heartbleed
NO Vrus !!!!

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

No uma falha do Protocolo SSL !!!

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

No uma falha do Protocolo SSL !!!

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
Desmistificando...

O Heartbleed NO

uma falha no protocolo SSL

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
Desmistificando...

O Heartbleed...

no
no
no
no
no
no
no
no
no

vrus
uma vulnerabilidade no protocolo SSL
um bug que afeta somente servidores web
um exploit para acesso remoto a servidores
possibilita ataques man-in-the-middle
uma falha de autenticao
um backdoor da NSA
um keylogger
uma falha do tipo buffer overflow

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
Desmistificando...

O Heartbleed...
uma vulnerabilidade...
... em algumas verses do OpenSSL
(uma das implementaes do protocolo SSL)

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Finalmente...

Dissecando o Heartbleed

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

A soluo que virou problema...

RFC 6520

http://tools.ietf.org/html/rfc6520

Extenso para o TLS (Transport Layer Security) e o DTLS (Datagram TLS)

Fevereiro de 2012

Robin Seggelmann (autoria) / Stephen N. Henson (reviso/validao)

Heartbeat Request Heartbeat Response (batida do corao)

Cliente Servidor: Se est vivo, me envie a string X

Servidor Cliente: Estou vivo, sim! A vai a string X

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

A soluo que virou problema...

Como deveria funcionar...

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

A soluo que virou problema...


Estrutura da Mensagem HeartBeat:
struct
{
HeartbeatMessageType type;
uint16 payload_length;
opaque payload[HeartbeatMessage.payload_length];
opaque padding[padding_length];
} HeartbeatMessage;

Estrutura SSL de transporte:


struct ssl3_record_st
{
unsigned int length;
[...]
unsigned char *data;
[...]
} SSL3_RECORD;

/* Bytes disponveis */
/* Ponteiro para mensagem */

Construo da Resposta (HeartBeat Response):


*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);

memcpy(bp, pl, payload);

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

A soluo que virou problema...

O que deu errado ???


Validao da
varivel de
comprimento

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

A soluo que virou problema...

O que no deveria
ser possvel?
Buffer
Over-Read

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
E o Corao... Sangrou...

CVE-2014-0160

Vulnerabilidade Crtica na blblioteca OpenSSL

Extenso Hertbeat (RFC6520)

Buffer Over-Read (CWE-126)

Common Weakness Enumeration

Dicionrio de Tipos de fragilidades (weakness) de softwares

http://cwe.mitre.org/data/definitions/126.html

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como verificar essa vulnerabilidade?


Sites preparados exclusivamente para realizar testes...

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como verificar essa vulnerabilidade?


Sites preparados exclusivamente para realizar testes...

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como verificar essa vulnerabilidade?


Verificao via Nmap...
(ssl-heartbleed.nse)
http://nmap.org/svn/scripts/ssl-heartbleed.nse

Sintaxe:

# nmap -sV --script=ssl-heartbleed <alvo>

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como explorar essa vulnerabilidade?


Exploits / scripts / ferramenta de testes/ataques que...

Simulem um cliente (conexo SSL)

Enviem requisies (Heartbeat Request's) contendo:

Pequenas strings (1 byte, por exemplo)

Informao de tamanho = 64Kb

Exemplos de scripts em Python:

https://github.com/Lekensteyn/pacemaker

https://gist.github.com/takeshixx/10107280

https://gist.github.com/dyatlov/10192468

Script para explorao via OpenVas (scanner de vulnerabilidade):

https://gist.github.com/RealRancor/10140249

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como explorar essa vulnerabilidade?


Exemplo de explorao via Metasploit...
(openssl_heratbleed.rb)
https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/ssl/openssl_heartbleed.rb

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Corrigindo... (fazendo a validao da entrada)


Antes:
/* Leitura do tipo e tamanho da carga (payload) */
hbtype = *p++;
n2s(p, payload);
pl = p;

Depois (fix aplicado):

hbtype = *p++;
n2s(p, payload);
if (1 + 2 + payload + 16 > s->s3->rrec.length)
return 0; /* Se tamanho diferente retorne zero */
pl = p;

Construo da Resposta (HeartBeat Response):


*bp++ = TLS1_HB_RESPONSE;
s2n(payload, bp);
memcpy(bp, pl, payload);

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Verses do OpenSSL Afetadas


https://www.openssl.org/source/

Todas as verses 1.0.1 (e 1.0.2-beta) at a descoberta

1.0.1a
1.0.1b
1.0.1c
1.0.1d
1.0.1e
1.0.1f

(19/04/2012)
(26/04/2012)
(10/05/2012)
(05/02/2013)
(11/02/2013)
(06/01/2014)

Verses corrigidas a partir de: 1.0.1g e 1.0.0.2-beta2


Alternativa: Recompilar o cdigo-fonte com o parmetro -DOPENSSL_NO_HEARTBEATS

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Servios/Aplicativos Afetados
Todos que usam/usavam OpenSSL (verses afetadas)

Sites com HTTPS (evidentemente)

e mais...

FTPS

POP3S

SSH / SCP

IMAPS

TELNETS

OpenVPN

SMTPS

SIPS / SRTP

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed
ltimas notcias

O que mais surgiu depois do alerta?

Chromebleed / Foxbleed
Extenses Chrome / Firefox (verificam se o site visitado vulnervel)
Regras Snort para deteco de sondagens

http://blog.fox-it.com/2014/04/08/openssl-heartbleed-bug-live-blog/

Honeypots Hearthbleed

Falso-positivos propositais a consultas

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o HeartBleed

Como andam as coisas (mais de um ms depois)?

Pesquisa feita por Robert Graham (somente em sites HTTPS)

Total pesquisado = 22 milhes de sites (que usam SSL)


318.239 permanecem vulnerveis
Alguns simplesmente desabilitaram o heartbeat

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Dissecando o Heartbleed
Slides desta palestra
e notcias sobre Segurana da Informao
www.ricardokleber.com/palestras
ricardokleber@ricardokleber.com
@ ricardokleber

15 de Maio de 2014

GTS'23 Dissecando o Hearthbleed :: Ricardo Klber

Você também pode gostar