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
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
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/
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
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
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
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
• 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
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
Top Related