O Poder dos X-‐Headers. U/lizando Headers HTTP para proteção Contra
vulnerabilidades em WEB APP.
By
William Costa
William Costa
Consultor em Segurança da Informação. CISSP, C|EH, E|CSA, CPT, CEPT, LPI.
TOP 10 OWASP
• OWASP Top 10 – 2013 • A1 – InjecJon • A2 – Broken AuthenJcaJon and Session Management • A3 – Cross-‐Site Scrip0ng (XSS) • A4 – Insecure Direct Object References • A5 – Security MisconfiguraJon • A6 – SensiJve Data Exposure • A7 – Missing FuncJon Level Access Control • A8 – Cross-‐Site Request Forgery (CSRF) • A9 – Using Known Vulnerable Components • A10 – Unvalidated Redirects and Forwards
Headers HTTP/1.1 Cliente Servidor
RFC 6648 O Uso do X no inicio de alguns Headers idenJficam que são cabeçalhos
não padronizados.
Nossos X-‐Headers
Response Headers (Server > Client) • X-‐Frame-‐OpJons • X-‐XSS-‐ProtecJon • Strict-‐Transport-‐Security • X-‐Content-‐Security-‐Policy • X-‐Content-‐Type-‐OpJons
Request Headers (Client > Server) • Referer • X-‐?
X-‐Frame-‐Op/ons vs. Clickjacking
• O cabeçalho de resposta HTTP X-‐Frame-‐OpJons é usado para indicar ou não ao navegador se deve ser autorizado a carregar a página dentro de um <frame>, <iframe> ou <object>. Podendo assim evitar um ataque de Clickjacking
• DENY • SAMEORIGIN • ALLOW-‐FROM uri
Suportado por:
X-‐XSS-‐Protec/on vs. XSS
• Este cabeçalho permite habilitar o filtro de Cross-‐site scripJng (XSS) incorporado na maioria dos navegadores. Geralmente é aJvado por padrão, então o papel deste cabeçalho é re-‐aJvar o filtro para este site específico se ele foi desaJvado pelo usuário.
• 0 (Disable) • 1 (Enable) • 1; mode=block (Não carrega o script)
Suportado por:
Strict-‐Transport-‐Security vs. Man-‐in-‐the-‐middle • Este cabeçalho força a comunicação entre cliente e servidor sempre via HTTPS, HSTS também desaJva a capacidade do usuário de ignorar os avisos de negociação SSL.
• max-‐age (durante esse periodo só vai aceitar conexões hrps) • includeSubDomains
Suportado por:
(X)-‐Content-‐Security-‐Policy vs. Code Injec/on, XSS
• Content Security Policy (CSP) hoje já é um Header padrão e uma camada extra de segurança que ajuda e miJgar o impacto de certos Jpos de ataques, incluindo Cross Site ScripJng (XSS) e ataques de injeção de dados.
• script-‐src • object-‐src • style-‐src • img-‐src • media-‐src • frame-‐src • font-‐src • …
Suportado por:
X-‐Content-‐Type-‐Op/ons vs. Mime AXacks XSS • X-‐Content-‐Type-‐OpJons informa ao browser para não tentar adivinhar o Jpo de arquivo baseado no conteúdo.
• nosniff
Suportado por:
Referer vs. CSRF • Referer é um cabeçalho enviado pelo browser informando de onde originou a requisição.
• ( absoluteURI | relaJveURI )
Suportado por:
Send in Request
X vs. X-‐Vulnerability • Podemos uJlizar um Header Request para proteção de várias vulnerabilidades, como validar um token de CSRF ...
...
• ?
Suportado por:
Conclução
• Os cabeçalhos do HTTP podem ser usados não como unica fonte de miJgar as vulnerabilidades WEBs, mas, são uma ferramenta para dificultar a exploração de uma falha.
<script>alert(String(/Perguntas?/).substr(1,10) ); </script>
william.costa arroba gmail.com hXps://twiXer.com/willcosta
Top Related