Cross-site scripting (XSS): o que é e como se proteger

O cross-site scripting (XSS) é considerado um dos ataques em aplicativos mais comuns que os hackers usam para entrar furtivamente atualmente e está no Top 10 OWASP de vulnerabilidades.

A vulnerabilidade a ataques ocorre pois, para tornar a experiência do usuário mais agradável, as configurações dos sites acaba contendo muito conteúdo dinâmico.

E o conteúdo dinâmico é adquirido através do uso de aplicativos da web, que podem fornecer resultados diferentes para um usuário, dependendo de suas configurações e necessidades. 

Para entender melhor sobre o ataque cross-site scripting (XSS) e como prevenir o problema, acompanhe a leitura a seguir!

 

O que é cross-site scripting (XSS) e como ele funciona?

O XSS é basicamente uma fragilidade de segurança da web que possibilita que um hacker comprometa as interações que os usuários possuem com um aplicativo vulnerável

O ataque cross-site scripting permite que um invasor contorne a política de mesma origem, projetada para separar sites diferentes uns dos outros. 

As fragilidades de script entre sites geralmente permitem que um invasor use um disfarce de vítima, execute variadas ações que o usuário possa fazer e acesse os seus dados.

Se o usuário vítima tiver acesso privilegiado ao aplicativo, o invasor poderá controlar totalmente todos os dados e funcionalidades da ferramenta.

O cross-site scripting manipula um site vulnerável para retornar JavaScript malicioso aos usuários. Quando o código malicioso é acionado no navegador da vítima, o hacker pode comprometer totalmente sua atividade no aplicativo.

Um invasor que explora uma vulnerabilidade de script entre sites normalmente pode:

  • Personificar ou se disfarçar de usuário vítima;
  • Executar qualquer ação que o usuário possa realizar;
  • Ler todos os dados que o usuário acessar;
  • Capturar as credenciais de login do usuário;
  • Executar a desfiguração virtual do site;
  • Injetar a funcionalidade de trojan no site.

O impacto real de um ataque cross-site scripting geralmente depende da natureza do aplicativo, de sua funcionalidade, dados e status do usuário comprometido. Por exemplo:

  • Em um aplicativo de brochura, onde todos os usuários são anônimos e todas as informações são públicas, o impacto costuma ser pequeno;
  • Em um aplicativo que contém dados privados, como e-mails, transações bancárias ou registros de saúde, o impacto provavelmente será sério;
  • Se o usuário comprometido tiver privilégios no aplicativo, o impacto com certeza será crítico, possibilitando que o invasor tenha o controle total do aplicativo vulnerável e comprometa todos os usuários e seus dados.

 

 

Quais são os tipos de ataques XSS?

Existem três principais tipos de ataques XSS, que são:

 

Scripting cross-site refletido

O XSS refletido nada mais é do que a variedade mais simples de script entre sites. 

Ele ocorre quando um aplicativo recebe dados em uma solicitação HTTP e inclui esses dados na resposta imediata de maneira insegura.

Se um usuário visitar a URL construída pelo invasor, o script do invasor será executado no navegador do usuário, no contexto da sessão com o aplicativo.

 Nesse ponto, o script pode realizar qualquer ação e recuperar quaisquer dados aos quais o usuário tenha acesso.

 

Scripts de sites cruzados armazenados

O XSS armazenado (também conhecido como XSS persistente ou de segunda ordem) surge quando um aplicativo recebe dados de uma fonte não confiável e inclui esses dados em suas respostas HTTP posteriores de forma insegura.

Os dados em questão podem ser enviados ao aplicativo através de solicitações HTTP, como, por exemplo, comentários em uma postagem de blog, apelidos de usuários em uma sala de bate-papo ou informações de contato em um pedido de cliente.

Em outros casos, os dados podem chegar de outras fontes não confiáveis, como um aplicativo de e-mail mostrando mensagens recebidas por SMTP, um aplicativo de marketing exibindo postagens de rede social ou um aplicativo de monitoramento exibindo dados de pacote de tráfego de rede.

 

Scripting cross-site baseado em DOM

O XSS baseado em DOM (também conhecido como DOM XSS) ocorre quando um aplicativo contém algum JavaScript ao lado do cliente que processa dados de uma fonte não confiável de forma insegura, geralmente gravando os dados de volta no DOM.

Se o invasor consegue controlar o valor do campo de entrada, ele pode facilmente construir um valor malicioso que faz com que seu próprio script seja executado.

Em um caso típico, o campo de entrada seria preenchido com parte da solicitação HTTP, como um parâmetro de string de consulta de URL, permitindo que o invasor forneça um ataque usando um URL malicioso, igual ao XSS refletido.

 

Como prevenir ataques cross-site scripting XSS

A proteção contra ataques cross-site scripting entre sites é fundamental em algumas situações, mas pode ser muito mais difícil de acordo com o nível de dificuldade do aplicativo e da forma como ele lida com os dados controlados ​​pelo usuário.

No geral, a prevenção adequada de vulnerabilidades cross-site scripting XSS pode envolver uma combinação de várias medidas de segurança. 

Veja algumas delas a seguir:

 

Filtre a entrada na chegada

No instante em que o usuário entra, filtre o máximo que puder de acordo com a entrada válida ou com o que é esperado.

Isso evitará que usuários não autorizados acessem seu sistema.

 

Codifique os dados na saída

Conforme os dados controlados ​​pelo usuário são desenvolvidos nos resultados HTTP, codifique a saída para impedir que seja caracterizada como um conteúdo ativo.

Isso é necessário pois, dependendo de como ocorre a saída, é possível que ocorra a necessidade da utilização de combinações de codificação URL, HTML, CSS e JavaScript.

 

Use cabeçalhos de resposta apropriados

Para evitar o  cross-site scripting XSS em respostas HTTP que não devem possui qualquer HTML ou JavaScript, é possível utilizar os cabeçalhos Content-Type E X-Content-Type-Options para ter certeza de que os navegadores interpretarão as respostas da maneira esperada.

Utilize a política de segurança de conteúdo

Como última opção de defesa, é recomendável usar a política de segurança de conteúdo (CSP) para diminuir a gravidade de qualquer vulnerabilidade cross-site scripting XSS que possa ocorrer.

A Insider é uma empresa especialista em encontrar e corrigir fragilidades da sua aplicação antes que hackers possam explorá-las. 

Fazemos uma análise do seu software para compreender de modo prático como é possível melhorar a segurança dele e evitar ataques cross-site scripting.

Entre em contato e garanta o seu teste gratuito!

 

Receba novidades:







    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *