Além do HTTPS
Como (tentar) Aumentar a Segurança
de seu Website e Aplicação Web
jeronimo.zucco@owasp.org
@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
3
Fonte: 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
11
Fonte: 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 **
16
Fonte: 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
20
Fonte: 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%)*
29
Fonte: 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?
OBRIGADO!
JERONIMO.ZUCO@OWASP.ORG
@JCZUCCO

Além do HTTPS - Como (tentar) Aumentar a Segurança de seu Website e Aplicação Web (Beyond HTTPS - How to (try) Improve security in Your Website)

  • 1.
    Além do HTTPS Como(tentar) Aumentar a Segurança de seu Website e Aplicação Web jeronimo.zucco@owasp.org @jczucco
  • 2.
    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
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
    Proteção na Camadade Transporte 8 •Confidencialidade •Autenticidade •Integridade
  • 9.
  • 10.
  • 11.
    Versões do ProtocolSSL/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 11 Fonte: AppSec EU15 - Jim Manico
  • 12.
    Ataques relevantes aoTLS • 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
  • 13.
    Ataques relevantes aoTLS • 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
  • 14.
  • 15.
    Problemas com asACs • 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
  • 16.
    Baseline de Certificados (Chrome42) • SHA-1: inseguro • Use CAs e certificados assinados com > SHA-256 * • Certificados restritos até 3 anos de validade a partir de abril/2015 ** 16 Fonte: 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/
  • 17.
  • 18.
  • 19.
    Caches e Filtros •Uso de CDNs (Content Delivery Network) com suporte à HTTPS • Filtros de Next Generation Firewalls ou Agentes • Bem vindo ao futuro :-) 19
  • 20.
    Chrome irá marcarHTTP 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 20 Fonte: https://www.chromium.org/Home/chromium-security/marking-http-as-non-secure
  • 21.
  • 22.
  • 23.
    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
  • 24.
    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
  • 25.
    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
  • 26.
  • 27.
    Certificate and PublicKey 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
  • 28.
    Certificate and PublicKey Pinning 28
  • 29.
    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%)* 29 Fonte: http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html
  • 30.
    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
  • 31.
    OCSP Stapling • OnlineCertificate 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
  • 32.
    OCSP Stapling NGINX: ssl_stapling on; ssl_stapling_verifyon; ssl_trusted_certificate certs/full_chaim.pem; resolver <IP DNS resolver>; 32
  • 33.
    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
  • 34.
    TLS Security Configuration •https://wiki.mozilla.org/Security/Server_Side_TLS 34
  • 35.
    Secure Cookie Flag •O Cookie só poderá ser transmitido em canais criptografados • Use também HttpOnly 35
  • 36.
    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
  • 37.
    Cabeçalhos Adicionais • X-Frame-OptionsSAMEORIGIN • 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
  • 38.
    CSP - ContentSecurity Policy 38
  • 39.
    CSP - ContentSecurity 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
  • 40.
    CSP - ContentSecurity Policy 40
  • 41.
    CSP - ContentSecurity Policy 41
  • 42.
  • 43.
    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
  • 44.
    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
  • 45.
  • 46.