• Nenhum resultado encontrado

Heart bleed. Dissecando o

N/A
N/A
Protected

Academic year: 2021

Share "Heart bleed. Dissecando o"

Copied!
40
0
0

Texto

(1)

Heart

Heart

bleed

bleed

(2)

 

 

O Dia “H”

Dissecando o HeartBleed

07 de Abril de 2014

(3)

O Dia “H”

Dissecando o HeartBleed

21 de Marco de 2014

Google Security

Descoberta: Neel Mehta

Correção:

Bodo Moeller e Adam Langley

Somente em servidores Google

(4)

 

 

O Dia “H”

Dissecando o HeartBleed

31 de Marco de 2014

CloudFlare

“vazamento” Google Cloudflare

Criação do próprio “patch”

Correção interna

(5)

O Dia “H”

Dissecando o HeartBleed

01 de Abril de 2014

Google avisa equipe OpenSSL

Detalhamento do problema

Sugestão de correção (fix)

(6)

 

 

O Dia “H”

Dissecando o HeartBleed

01 a 07 de Abril de 2014

A (má) notícia se espalha... ainda nos bastidores...

OpenSSL avisa à RedHat (S.O. com mais usuários afetados)

Facebook é avisado (e corrige imediatamente)

Akamai também... e outras grandes empresas.

(7)

O Dia “H”

Dissecando o HeartBleed

02 de Abril de 2014

Codenomicon (re)descobre a falha

Empresa Finlandesa

“Batizou” o problema = Heartbleed

Comprou o domínio :)

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

NCSC-FI comunicou ao CERT

(8)

 

 

O Dia “H”

Dissecando o HeartBleed

07 de Abril de 2014

OpenSSL emite boletim público

CloudFlare publica artigo em seu blog

Neel Mehta escreve tweet sobre o problema

Codenomicon divulga site com informações

(9)

Motivação para palestras de esclarecimento

(10)

 

 

Desmistificando...

Dissecando o HeartBleed

O que o Heartbleed

O que o Heartbleed

NÃO é...

NÃO é...

(11)

Não é um VÍRUS !!!

(12)

 

 

Não é um VÍRUS !!!

Dissecando o HeartBleed

Trocar a senha em sites é importante

mas NÃO resolve o problema !!!

(13)

Não é um VÍRUS !!!

Dissecando o HeartBleed

(14)

 

 

Não é um VÍRUS !!!

Dissecando o HeartBleed

(15)

Desmistificando...

Dissecando o HeartBleed

O Heartbleed

O Heartbleed

NÃO é Vírus !!!!

NÃO é Vírus !!!!

X

(16)

 

 

Não é uma falha do Protocolo SSL !!!

(17)

Não é uma falha do Protocolo SSL !!!

(18)

 

 

Desmistificando...

Dissecando o HeartBleed

O Heartbleed NÃO é

O Heartbleed NÃO é

uma falha no protocolo SSL

uma falha no protocolo SSL

X

(19)

Desmistificando...

Dissecando o HeartBleed

… não é vírus

… não é uma vulnerabilidade no protocolo SSL

… não é um bug que afeta somente servidores web

… não é um exploit para acesso remoto a servidores

… não possibilita ataques man-in-the-middle

… não é uma falha de autenticação

… não é um backdoor da NSA

… não é um keylogger

… não é uma falha do tipo buffer overflow

O Heartbleed...

(20)

 

 

Desmistificando...

Dissecando o HeartBleed

O Heartbleed...

O Heartbleed...

É uma vulnerabilidade...

(uma das implementações do protocolo SSL)

(21)

Finalmente...

Dissecando o Heartbleed

(22)

 

 

A solução que virou problema...

Dissecando o HeartBleed

RFC 6520

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

Extensão

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

Fevereiro de 2012

Robin Seggelmann (autoria)

/ Stephen N. Henson (revisão/validação)

Heartbeat Request Heartbeat Response (“batida do coração”)

Cliente → Servidor: Se está vivo, me envie a string “X”

Servidor → Cliente: Estou vivo, sim! Aí vai a string “X”

(23)

A solução que virou problema...

Dissecando o HeartBleed

Como deveria funcionar...

Canal TLS/DTLS

Memória do

Servidor

X Y Z C

P R E 3

(24)

 

 

A solução que virou problema...

Dissecando o HeartBleed

Como deveria funcionar...

Dentro do Canal TLS/DTLS

Solicitação do

software do cliente

Conteúdo

Tamanho

O L A

3

Tamanho

Conteúdo

O L A

3

HeartBeat

Memória do

Servidor

O L A

C

P R E 3

Canal TLS/DTLS

(25)

A solução que virou problema...

Dissecando o HeartBleed

Estrutura da Mensagem HeartBeat:

struct

{

HeartbeatMessageType type;

uint16 payload_length;

opaque payload[HeartbeatMessage.payload_length];

opaque padding[padding_length];

} HeartbeatMessage;

struct ssl3_record_st

{

unsigned int length; /* Bytes disponíveis */

[...]

unsigned char *data; /* Ponteiro para mensagem */

[...]

} SSL3_RECORD;

Estrutura SSL de transporte:

*bp++ = TLS1_HB_RESPONSE;

(26)

 

 

A solução que virou problema...

Dissecando o HeartBleed

O que deu errado ???

Validação da

variável de

comprimento

Dentro do Canal TLS/DTLS

Solicitação do

software do cliente

Conteúdo

Tamanho

O L A

8

Tamanho

Conteúdo

O L A

8

HeartBeat

Memória do

Servidor

O L A

C

P R E 3

C P R E 3

(27)

A solução que virou problema...

Dissecando o HeartBleed

O que não deveria

ser possível?

Buffer

Over-Read

Dentro do Canal TLS/DTLS

Solicitação do

software do cliente

Conteúdo

Tamanho

O L A

8

Tamanho

Conteúdo

O L A

8

Memória do

Servidor

O L A

C

P R E 3

C P R E 3

(28)

 

 

E o Coração... Sangrou...

Dissecando o HeartBleed

CVE-2014-0160

Vulnerabilidade Crítica na blblioteca OpenSSL

Extensão Hertbeat (RFC6520)

Buffer Over-Read (CWE-126)

Common Weakness Enumeration

Dicionário de Tipos de fragilidades (weakness) de softwares

(29)

Como

verificar

essa vulnerabilidade?

Dissecando o HeartBleed

(30)

 

 

Como

verificar

essa vulnerabilidade?

Dissecando o HeartBleed

(31)

Como

verificar

essa vulnerabilidade?

Dissecando o HeartBleed

Sintaxe:

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

Verificação via Nmap...

(ssl-heartbleed.nse)

(32)

 

 

Como

verificar

essa vulnerabilidade?

Dissecando o HeartBleed

Objetivo: identificar em um tráfego de rede (em tempo real = sniffer ou

a partir de arquivo de captura) pacotes SSL específicos (identificação

= tipo 24) que não seja compatível com mensagens heartbeat.

# tshark

-i eth0

-R “ssl.record.content_type eq 24 and not

ssl.heartbeat_message.type”

ou

# tshark

-r <arquivo.cap>

-R “ssl.record.content_type eq 24

and not ssl.heartbeat_message.type”

Verificação via TShark...

(33)

Como

explorar

essa vulnerabilidade?

Dissecando o HeartBleed

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

Simulem um cliente (conexão SSL)

Enviem requisições (

Heartbeat Request's

) contendo:

Pequenas strings (1 byte, por exemplo)

Informação 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 exploração via OpenVas (scanner de vulnerabilidade):

(34)

 

 

Como

explorar

essa vulnerabilidade?

Dissecando o HeartBleed

Exemplo de exploração via Metasploit...

(openssl_heratbleed.rb)

(35)

Corrigindo... (fazendo a validação da entrada)

Dissecando o HeartBleed

Antes:

/* Leitura do tipo e tamanho da carga (payload) */

hbtype = *p++;

n2s(p, payload);

pl

= p;

hbtype = *p++;

n2s(p, payload);

if (1 + 2 + payload + 16 > s->s3->rrec.length)

return 0;

/* Se tamanho diferente retorne zero */

pl

= p;

Depois (fix aplicado):

*bp++ = TLS1_HB_RESPONSE;

s2n(payload, bp);

memcpy

(bp,

pl

, payload);

(36)

 

 

Versões do OpenSSL Afetadas

Dissecando o HeartBleed

Todas as versões 1.0.1 (e 1.0.2-beta) até a descoberta

1.0.1a (19/04/2012)

1.0.1b (26/04/2012)

1.0.1c (10/05/2012)

1.0.1d (05/02/2013)

1.0.1e (11/02/2013)

1.0.1f (06/01/2014)

Versões corrigidas a partir de: 1.0.1g e 1.0.0.2-beta2

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

(37)

Serviços/Aplicativos Afetados

Dissecando o HeartBleed

Todos que usam/usavam OpenSSL (versões afetadas)

Sites com HTTPS (evidentemente)

… e mais...

FTPS

SSH / SCP

TELNETS

SMTPS

POP3S

IMAPS

OpenVPN

SIPS / SRTP

(38)

 

 

Últimas notícias

Dissecando o HeartBleed

O que mais surgiu depois do alerta?

Chromebleed / Foxbleed

Extensões Chrome / Firefox

(verificam se o site visitado é vulnerável)

Regras Snort para detecção de sondagens

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

“Honeypots Hearthbleed”

(39)

Como andam as coisas?

Dissecando o HeartBleed

Pesquisa feita por Robert Graham (somente em sites HTTPS)

Total pesquisado = 22 milhões de sites (que usam SSL)

318.239 permanecem vulneráveis

(40)

 

 

Dissecando o Heartbleed

25 de Julho de 2014

@ ricardokleber

ricardokleber@ricardokleber.com

Slides desta palestra

e notícias sobre Segurança da Informação

www.ricardokleber.com/palestras

Referências

Documentos relacionados

Além de adequar a técnica para a obtenção de metáfases objetivou-se, com este estudo, determinar os números cromossômicos meiótico e mitótico, bem como a

#include &lt;stdio.h&gt; struct funcionario { int codigo; char nome[ 30 ]; char cargo[ 10 ]; int depto; float salario; }; int main () {. struct functionario

labradorlte (Anoo-eo&gt;, auglte, anel opaque minerais; some contaIn hypersthene anel olhers, plgeonlte. OIMne seldornly appears anel Is often altered to Iddlngslte anel

objref objref_ptr objref_ptr &amp; objref_ptr &amp; objref_ptr sequence const sequence &amp; sequence &amp; sequence *&amp; sequence * struct (fixed) const struct &amp; struct

É desse ponto não representável que se outorga o privilégio da figura paterna, a qual constitui o núcleo do complexo de Édipo, a partir da função de apresentar

Os acadêmicos 3IA, alunos do PIFPS-U3IA, optam por disciplinas de extensão universitária, disponíveis no horário vespertino, mas há uma turma de Hidromotricidade

vivax, foram visualizados em gel de agarose a 2% em todas as amostras testadas, enquanto as amostras dos ovinos do grupo G3 evidenciaram-se negativas (Figura 9). Figura 5- Ovino

C) 10º em relação ao plano vertical, a altura da borda inferior deve ser de no máximo 1,10 m e a da borda superior de no mínimo 1,70 m do piso acabado.. D) 8º em relação ao