além do https - como (tentar) aumentar a segurança de seu website e aplicação web (beyond https...

46
Além do HTTPS Como (tentar) Aumentar a Segurança de seu Website e Aplicação Web [email protected] @jczucco

Upload: jeronimo-zucco

Post on 13-Aug-2015

640 views

Category:

Software


2 download

TRANSCRIPT

Além do HTTPS

Como (tentar) Aumentar a Segurança de seu Website e Aplicação Web

[email protected] @jczucco

Sobre mim

• Blog: http://jczucco.blogspot.com • Twitter: @jczucco • http://www.linkedin.com/in/jeronimozucco • Membro OWASP Capítulo Porto Alegre • http://www.owasp.org/index.php/

User:Jeronimo_Zucco • Algumas certificações na área de segurança

2

3Fonte: http://www.wsj.com/articles/SB10001424053111903480904576512250915629460

4

5

6

7

Proteção na Camada de Transporte

8

•Confidencialidade •Autenticidade • Integridade

TLS

9

SSL

10Fonte: Trustwave

Versões do Protocol SSL/TLS• SSL v1, SSL v2, SSL v3 - Não usar

• TLS 1.0 - “ok”

• TLS 1.1 - Ataques práticos atualmente não conhecidos

• TLS 1.2 - Melhor opção atualmente

11Fonte: AppSec EU15 - Jim Manico

Ataques relevantes ao TLS

• 2011 BEAST • Atualize para o TLS 1.1 • Use RC4 para protocolos antigos

• 2012 CRIME • Não use compressão de TLS

• 2013 BREACH • Baseado no CRIME, mas compressão

HTTP

12

Ataques relevantes ao TLS

• 2014 HeartBleed • Requisições “heart beat” que

exploravam a memória do servidor • 2015 Freak, Logjam • Downgrade e abuso do protocolo

(DHE < 1024) • OpenSSL 09/Jul/2015

13

Heartbleed

14

Problemas com as ACs• Comprometidas • 2010 - Stuxnet (Realtek, JMicron) • 2011 - DigiNotar, GlobalSign, Comodo • 2011, 2015 - Duqu 1.0 e Duqu 2.0

• Abusos • 2012 - Trustwave man-in-the-middle • 2012 - Turkish CA Gmail impersonation • 2013 - CA Francesa Gmail impersonation • 2015 - IBM Superfish, CA abuse

15

Baseline de Certificados (Chrome 42)• SHA-1: inseguro

• Use CAs e certificados assinados com > SHA-256 *

• Certificados restritos até 3 anos de validade a partir de abril/2015 **

16Fonte: http://googleonlinesecurity.blogspot.com.br/2014/09/gradually-sunsetting-sha-1.html

https://support.servertastic.com/ssl-certificates-to-be-restricted-to-3-year-validity-from-april-2015/

Certificados são caros

17

TLS é Lento

https://istlsfastyet.com

18

Caches e Filtros

• Uso de CDNs (Content Delivery Network) com suporte à HTTPS

• Filtros de Next Generation Firewalls ou Agentes

• Bem vindo ao futuro :-)

19

Chrome irá marcar HTTP como inseguro em breve

• Seguro (HTTPS válido, outras origens como (*, localhost, *));

• Duvidoso (HTTPS válido mas com recursos em HTTP, HTTPS válido com erros menores no TLS);

• Não seguro (broken HTTPS, HTTP). • Usuários

20Fonte: https://www.chromium.org/Home/chromium-security/marking-http-as-non-secure

OK, você venceu: HTTPS (c/TLS)

21

Um Grande Banco…

22

Além do HTTPS• Strict Transport Security (HSTS) • Certificate and Public Key Pinning • Perfect Forward Secrecy (PFS) • Diffie Hellman Parameters • OCSP Stapling • TLS Security Configuration • SPDY, HTTP 2 • Secure Cookie Flag • Cabeçalhos adicionais << BÔNUS :-)

23

Além do HTTPS

• Mantenha seus sistemas atualizados • Monitoramento da disponibilidade • Monitoramento de performance • Histórico de performance • Dependências • Tráfego criptografado em todo o caminho • Desenvolvimento seguro

24

Strict Transport Security (HSTS)

• RFC 6797 Nov/2012 • Usuários tendem a usar HTTP • Website é acessível somente via HTTPS • Pode ser pré-embutido no browser *

25* https://hstspreload.appspot.com

Strict Transport Security (HSTS)

26

Certificate and Public Key Pinning

• Detecta quando um impostor com um CA falso tenta se passar pelo verdadeiro • Cópia da chave pública; ou • TOFU (Trust On First Use): Browser, SSH

• RFC 7469 - HPKP: HTTP Public Key Pinning extension

27

Certificate and Public Key Pinning

28

Perfect Forward Secrecy (PFS)

• Cada sessão HTTPS possui a sua chave • Se a chave privada vazar, o tráfego

capturado anteriormente não pode ser descriptografado

• TLS: ECDHE-RSA (27%), ECDHE-ECDSA (15%)*

29Fonte: http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html

Diffie Hellman Parameters

• https://weakdh.org • Troca de chaves TLS < 1024 bits • DHE_EXPORT ciphers

# openssl dhparam -out dhparam.pem 2048

nginx: ssl_dhparam /etc/ssl/certs/dhparam.pem;

30

OCSP Stapling

• Online Certificate Status Protocol • Verifica os status de revogação do

certificado • Mais eficiente que o CRL • Já envia para o cliente o status do

certificado assinado pela AC durante o TLS handshake

31

OCSP Stapling

NGINX:

ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate certs/full_chaim.pem; resolver <IP DNS resolver>;

32

TLS Security Configuration (nginx)

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate certs/full_chaim.pem; resolver <IP DNS resolver>; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_ciphers ‘AES128+EECDH:AES128+EDH:!aNULL';

33

TLS Security Configuration

• https://wiki.mozilla.org/Security/Server_Side_TLS

34

Secure Cookie Flag

• O Cookie só poderá ser transmitido em canais criptografados

• Use também HttpOnly

35

TLS Maturity Model

• Level 1: Chaos (default) • Level 2: Configuration • Level 3: application security (mixed

content, app cookies sec) • Level 4, commitment (HSTS) • Level 5: robust security (public key

pinning)

36

Cabeçalhos Adicionais• X-Frame-Options SAMEORIGIN • Proteção contra Clickjacking

• X-XSS-Protection ‘1; mode=block’ • Habilita a proteção contra XSS nos

browsers modernos (opção default)

• X-Content-Type-Options nosniff • IE8 E Chrome previne MIME-sniffing

37

CSP - Content Security Policy

38

CSP - Content Security Policy

• Reduz o risco de XSS • Declara quais recursos dinâmicos são

permitidos e suas origens • JavaScript, CSS, HTML frames, fonts,

images, Java applets, ActiveX, audio e video files.

• Content-Security-Policy • Content-Security-Policy-Report-Only

39

CSP - Content Security Policy

40

CSP - Content Security Policy

41

42Fonte: SSLLabs https://www.ssllabs.com/ssltest/clients.html

O que fazer?

• Se prepare para um mundo HTTPS-only • Atualize seu servers • Implemente HSTS • Use Perfect Forward Secrecy • Configure o TLS de forma segura (ciphers,

OCSP • Use Certificate Pinning

43

O que fazer?

• Não use RC4 e RSA • Avalie os Browsers utilizados por seus

usuários • Implemente cabeçalhos adicionais • Implemente CSP • SPDY -> HTTP 2 • Desenvolvimento Seguro = OWASP

44

PERGUNTAS?