Como uma Política de Segurança de Conteúdo pode prevenir XSS e outras vulnerabilidades?
Luke Watts
9 de fevereiro de 2020
0 minutos de leituraManter o código seguro em uma era de crimes cibernéticos não é uma tarefa simples, e muitas táticas antigas continuam tão eficazes hoje quanto eram há 20 anos. Quando o assunto é invasão de sites, os navegadores modernos avançaram bastante em segurança. Recursos como uma Política de Segurança de Conteúdo podem impedir muitos dos truques mais antigos, que ainda são surpreendentemente comuns.
Ataques de injeção existem desde os primeiros dias da internet e continuam sendo um problema em 2020. Veja mais de perto a famosa vulnerabilidade XSS e como implementar uma Política de Segurança de Conteúdo rigorosa pode ajudar muito a impedir que um site seja usado como vetor para código malicioso.
O que é uma vulnerabilidade XSS?
Cross-site scripting (XSS) é um ataque que explora uma vulnerabilidade comum em aplicações web. Nesse tipo de ataque, um hacker usa a aplicação web para transmitir malware a outra pessoa por meio de código “injetado” no próprio site. Esse malware pode realizar várias ações, mas a mais comum é roubar os cookies de outras pessoas.
O roubo de cookies permite que hackers se passem pelas vítimas ao acessar um site. Para roubá-los, um código JavaScript é inserido no site por meio de um formulário capaz de ler HTML — como uma listagem de produtos, um comentário ou uma barra de pesquisa. Quem acessa o link para o comentário, a listagem ou o resultado de pesquisa com o código malicioso incorporado recebe automaticamente o malware no computador.
Em seguida, o malware extrai os cookies da sessão da pessoa usuária e os envia ao hacker. O hacker pode carregar esses cookies no próprio navegador. Ao acessar o site visado, será autenticado como a vítima. A partir daí, basta encontrar as informações de cobrança da pessoa usuária ou alterar a senha da conta.
O XSS existe desde os primeiros dias do HTML. Já foi usado contra serviços de e-mail, sites de comércio eletrônico, bancos online e sites de leilão. O problema já foi tão disseminado que até Facebook, Twitter e YouTube estiveram entre os sites afetados. Apesar dos avanços significativos em segurança, ele continua sendo um problema. Estima-se que 84% de todos os sites ainda estivessem vulneráveis a XSS por jQuery em 2019.
Como usar uma Política de Segurança de Conteúdo para se proteger contra XSS
Uma Política de Segurança de Conteúdo (CSP) é uma camada de segurança criada especificamente para detectar e mitigar ataques de injeção, inclusive os que usam XSS. Ela dificulta muito que hackers injetem código malicioso para extrair dados ou cookies de quem usa o site legitimamente.
Com uma CSP, a pessoa desenvolvedora:
Especifica os recursos permitidos e suas origens usando uma lista segura: Em outras palavras, scripts e códigos necessários para executar a aplicação web são permitidos, desde que venham de origens específicas. Todo o resto é bloqueado.
Define a diretiva da CSP: Por padrão, essa política usa default-src, mas isso pode ser alterado. Há várias diretivas para controlar elementos específicos da CSP conforme necessário.
Determina se scripts inline ou eval() são permitidos: Por padrão, um cabeçalho CSP bloqueia scripts inline e a função eval() por considerá-los maliciosos.
Determina se atributos de estilo são permitidos no HTML: Como o CSS pode ser explorado, as configurações padrão da CSP não permitem blocos nem o atributo no HTML.
Habilita o envio de violações da política ao servidor: Isso ajuda a monitorar casos de uso indevido.
Normalmente, a CSP é implementada no servidor, e esse processo pode variar bastante. Porém, se o provedor de serviços não permitir controlar a configuração do servidor, ainda é possível habilitar a CSP no cabeçalho do site usando metatags.
Além disso, a pessoa desenvolvedora pode verificar e testar se o site usa cabeçalhos de segurança HTTP para avaliar o estado atual ou usar o CSP Evaluator para reforçar a configuração da CSP.
Por que usar uma Política de Segurança de Conteúdo?
Usar uma CSP é uma boa ideia para qualquer site que tenha aplicações web complexas, funcionalidades de login e cookies de usuários.
1. O XSS é onipresente e causa danos
O XSS explora a forma como os navegadores são construídos, sobretudo o fato de que eles não conseguem distinguir, por conta própria, código legítimo de código injetado. Na prática, é uma porta dos fundos para acessar dados de usuários e outras informações confidenciais.
2. Oferece proteção contra vulnerabilidades XSS difíceis de detectar
Qualquer aplicação web que dependa de cookies para permitir o login pode estar vulnerável a XSS, mesmo que tenha sido bem projetada em todos os outros aspectos. Como hackers são persistentes, uma base de código aparentemente segura ainda pode ter outras vulnerabilidades que passam despercebidas pela equipe de desenvolvimento.
3. A CSP reforça outras boas práticas de segurança
A CSP ajuda a aplicar boas práticas de segurança ao restringir muitas ações e reduzir a lista de origens permitidas. Por isso, funciona melhor quando combinada com outras boas práticas, como sistemas de templates, análise de vulnerabilidades e revisões manuais de segurança.
Não deixe o site desprotegido
Com tanta ênfase na segurança dos negócios e de DevOps, muita gente pode esquecer que os sites ainda podem — e são — invadidos. O XSS é uma vulnerabilidade antiga que ainda pode afetar sites sem uma Política de Segurança de Conteúdo bem implementada. Felizmente, implementar uma CSP é relativamente simples. Tome medidas agora para garantir que seu site seja tão seguro quanto o restante da empresa.
Aprimore suas habilidades de programação segura
Conteúdo gratuito e de alta qualidade sobre segurança para desenvolvedores, quando e onde você quiser.
