Apesar de ser uma estratégia de ataque virtual antiga e bem conhecida, o Cross-Site Scripting (XSS) ainda é uma das vulnerabilidades que mais acomete a navegação em websites e o uso de aplicações web. Por meio desse ataque o criminoso insere códigos Java Script em frames de páginas que demandam interação com o usuário, seja por meio de formulários, comentários ou caixas de busca. A partir daí, se a aplicação não identificar e nem filtrar corretamente, esse código passa a ser interpretado como parte legítima e a ter acesso a todas as entidades do documento (DOM). Pronto! Agora o cyber criminoso pode executar as ações programadas, que vão desde efetuar ações ilegítimas como se fosse o próprio usuário até roubar credenciais.
Porém, os sites e aplicações desenvolvidos nos últimos anos são criados com estratégias de blindagem e mais difíceis de serem atacados, especialmente se cada parte do código for analisada e aprovada separadamente. Mas, ainda assim, há mais de uma maneira de promover tal ataque, sendo que podem ser aplicadas individualmente ou de forma combinada. Vejamos quais são elas.
XSS Persistente, Stored ou Tipo 1
O ataque “Stored” é aquele em que o script inserido é permanentemente armazenado nos servidores-alvo e então recuperado quando o usuário executa algum comando que solicita tais informações. Ou seja, nesse tipo de ataque, o criminoso consegue escrever e inserir os dados diretamente na página e ali eles permanecem. Com isso é simples entender o perigo que tal forma de ataque representa, pois sempre que essa área em que os dados estão armazenados é acessada, o script malicioso é executado e disseminado novamente pelos usuários.
Não persistente, Refletido ou Tipo 2
Nesse tipo de ataque não há validação ou armazenamento do código no servidor, portanto pode ser executado direta e completamente no navegador. Assim, ele é injetado como resposta a qualquer solicitação enviada ao servidor pelo usuário, de forma que a própria aplicação entrega e devolve como parte integrante do código de retorno. Ou seja, o navegador o executa porque veio de um servidor “confiável”. Esse é o tipo de ataque XSS mais utilizado, correspondendo a cerca de 75% do total.
Baseado em DOM ou Tipo 0
Document Object Model (DOM) é o padrão que os navegadores web utilizam para interpretar o HTML dos objetos a serem executados. Portanto esse tipo de ataque baseado em DOM não demanda interações diretas com o navegador ou com a aplicação web, pois faz uso das vulnerabilidades existentes nesse padrão. Isso significa que não depende de nenhuma interação com o servidor de hospedagem e, assim como o Refletido, pode ser executado diretamente no navegador, mas sem a possibilidade de solicitar dados.
Como evitar
Já falamos no início desse texto que XSS é uma forma antiga de ataque – data da década de 1990 – e relativamente bem conhecida por aqueles que lidam com segurança da informação no âmbito tecnológico. Portanto, há diversas formas de proteger as aplicações e evitar que os ataques aconteçam, mas, apesar de sua implementação ser simples, é necessário que haja uma preocupação em promover essa “sanitização” das informações. Ou seja, o primeiro passo para evitar esses ataques é atuar na melhoria da cultura de segurança.
No lado técnico, a regra mais básica é nunca permitir que dados sejam inseridos ou alterados sem que haja um bom motivo para isso, sendo que quando tal inserção for aprovada não deve conter nenhum conteúdo ativo. Além disso, desde que a organização se preocupe em evitar tais ataques, são muitas as formas técnicas de promover a segurança, sendo que o mercado disponibiliza inúmeras ferramentas desenvolvidas especialmente com essa finalidade. Com o Varonis DatAlert, sua empresa consegue prevenir o vazamento de dados em tempo real com a Análise de Comportamento do Usuário (UBA). Fale com um dos nossos especialistas e um teste grátis. solicite