<commit_before>Tópicos para apresentação

O que é OPENSSL?
- Uma implementação open-source dos protocolos TLS/SSL
- Biblioteca escrita em C, mas multi-plataforma
- Permite comunicação criptografada entre máquinas

Por que o OPENSSL é importante?
- 2/3 de todos os servidores web utilizam OpenSSL
- Facebook, Twitter, Google, Yahoo, Dropbox, Instagram...
- biblioteca padrão de criptografia no Linux e BSD

O que é o Heartbleed bug?
- uma vulnerabilidade na troca de heartbeats (RFC6520)
- afeta tanto cliente quanto servidor
- não é um problema com a criptografia
- apareceu em dezembro de 2011

Por que eu deveria ter medo?
- permite ler 64KB da máquina atacada
- não é preciso ter acesso privilegiado
- É possível roubar qualquer coisa (senhas, mensagens, certificados, endereços de e-mail...)
- O roubo não deixa vestígios

Mas não basta usar um patch...
- É preciso revogar os certificados comprometidos
- É preciso invalidar sessões, cookies e chaves
- Basta que apenas um dos hosts esteja vulnerável

Como funciona na prática
-
-
-

Versões afetadas e correção
- OpenSSL 1.0.1 - 1.0.1f são versões vulneráveis
- A correção só veio em abril de 2014 (+ de dois anos de exploit)
- Para corrigir, compilar com -DOPENSSL_NO_HEARTBEATS
- ou usar a partir da versão 1.0.1g

O lado positivo do heartbleed
- Perfect Forward Secrecy é importante
- Cibercriminosos também ficaram vulneráveis


--> O bug se encontra em:
     arquivo: ssl/d1_both.c,
     função: dtls1_process_heartbeat(SSL *s) (linha: 1448)
     problema: linha 1480<commit_msg>texto atualizado<commit_after>Tópicos para apresentação

O que é OPENSSL?
- Uma implementação open-source dos protocolos TLS/SSL
- Biblioteca escrita em C, mas multi-plataforma
- Permite comunicação criptografada entre máquinas

Por que o OPENSSL é importante?
- 2/3 de todos os servidores web utilizam OpenSSL
- Facebook, Twitter, Google, Yahoo, Dropbox, Instagram...
- biblioteca padrão de criptografia no Linux e BSD

O que é o Heartbleed bug?
- uma vulnerabilidade na troca de heartbeats (RFC6520)
- afeta tanto cliente quanto servidor
- não é um problema com a criptografia
- apareceu em dezembro de 2011

Por que eu deveria ter medo?
- permite ler 64KB da máquina atacada
- não é preciso ter acesso privilegiado
- É possível roubar qualquer coisa (senhas, mensagens, certificados, endereços de e-mail...)
- O roubo não deixa vestígios

Mas não basta usar um patch...
- É preciso revogar os certificados comprometidos
- É preciso invalidar sessões, cookies e chaves
- Basta que apenas um dos hosts esteja vulnerável

Como funciona na prática
- o bug se encontra na implementação do heartbeat do OpenSSL
- o heartbeat é usado para evitar a renegociação entre peers
- linha problemática: buf = OPENSSL_malloc(1 + 2 + payload + padding);
- permite que o usuário aloque uma quantidade arbitrária de memória para um heartbeat
- a memória não é checada pelo destino e o um pacote de até 64KB é devolvido com memória coletada do servidor
- na memória lida do servidor pode haver qualquer tipo de dado sensível

Versões afetadas e correção
- OpenSSL 1.0.1 - 1.0.1f são versões vulneráveis
- A correção só veio em abril de 2014 (+ de dois anos de exploit)
- Para corrigir, compilar com -DOPENSSL_NO_HEARTBEATS
- ou ainda melhor: usar a partir da versão 1.0.1g

O lado positivo do heartbleed
- Perfect Forward Secrecy é importante
- Cibercriminosos também ficaram vulneráveis
- Conseguir as chaves é improvável devido à heap allocation (uso de buracos na alocação dinâmica de memória)


--> O bug se encontra em:
     arquivo: ssl/d1_both.c,
     função: dtls1_process_heartbeat(SSL *s) (linha: 1448)
     problema: linha 1480
     
     função: dtls1_heartbeat(SSL *s) (linha 1518)
     problema: linha 1561
{'fraction_non_alphanumeric': 0.053938584779706276, 'fraction_numerical': 0.022162883845126834, 'mean_word_length': 3.916010498687664, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3045482', 'n_tokens_mistral': 1363, 'n_tokens_neox': 1290, 'n_words': 522}