Os ataques Cross-Site Scripting (XSS) são comuns em toda a Internet. Eles podem ser usados para se passar por usuários, roubar informações privadas, desfigurar um site e muito mais. Então, o que exatamente é um ataque XSS? Por que é uma ameaça à segurança? E como você pode evitar ataques de script entre sites?
O que é um ataque de script entre sites?
Cross-Site Scripting, comumente conhecido como XSS, é uma vulnerabilidade de segurança de aplicativos da Web que permite que invasores injetem código ou scripts arbitrários do lado do cliente em páginas da Web.
Quando um usuário desavisado interage com a página da Web infectada, o código injetado é acionado e a vítima é atingida por um ataque potencialmente capaz de roubar informações confidenciais ou realizar transações não solicitadas às custas da vítima.
Um script malicioso pode se passar por um usuário, roubar informações e cookies, manipular o conteúdo do site, desfigurar um site e redirecionar as vítimas para sites maliciosos.
Os ataques XSS não são novos. Eles começaram a surgir na década de 1990 e, desde então, foram consistentemente listados como um dos 10 principais riscos de segurança da Web pelo Open Web Application Security Project (OWASP), com mais de 274.000 ocorrências relatadas em 2021.
Como funcionam os ataques XSS?
Um ataque XSS gira em torno da incapacidade de um site de higienizar os dados de entrada. Isso significa que o site não está removendo corretamente o conteúdo HTML da entrada que aceita.
Por que isso é ruim? Seu navegador da web não pode dizer a diferença entre o código do site original e o código injetado. Portanto, se um invasor alimentasse scripts maliciosos (JavaScript, VBScript, etc.), ele seria passado como entrada válida e o navegador o renderia junto com o código do próprio site.
Os ataques de script entre sites são realizados de várias maneiras, todas dependendo de vários fatores, como o endpoint, como o script é acionado, se a carga útil é refletida apenas no lado do cliente ou pode ser armazenada no servidor -side banco de dados e muito mais.
Tipos de ataques de script entre sites
Os ataques Cross-site scripting (XSS) são classificados em três tipos principais, com base em como o script é executado e como o ataque é entregue:
- XSS refletido.
- XSS armazenado.
- XSS baseado em DOM.
Então, o que esses ataques XSS significam?
Script entre sites refletido (XSS)
Reflect cross-site scripting é um tipo de ataque XSS em que o código injetado é refletido no servidor em qualquer resposta que inclua os dados de entrada como parte da solicitação feita ao servidor web. Devido à validação de entrada inadequada, o navegador executa o script e retorna sua saída ao cliente.
É a variante mais básica de todos os ataques XSS e é uma ameaça comparativamente menor para um site do que sua contraparte, XSS armazenado. Mas continua sendo uma ameaça e com a qual você deve ser cauteloso.
Os ataques XSS refletidos geralmente são propagados por meio de e-mails e outras formas de engenharia social ou campanhas de phishing.
Scripts entre sites armazenados (XSS)
O script entre sites armazenado é um tipo de ataque XSS em que o código malicioso pode ser incorporado ou armazenado no banco de dados de um servidor web. Este é o tipo mais mortal de ataque XSS, pois potencialmente compromete a segurança de toda a base de usuários do site. Os usuários que visitam a página da Web incorporada com código malicioso serão atingidos pela carga útil.
Por exemplo, se a seção de comentários de um site popular fosse vulnerável ao XSS armazenado, um invasor poderia plantar códigos maliciosos em seus comentários. Cada vez que um espectador se deparava com o comentário, seu navegador executava o código malicioso, colocando em risco seu sistema e dados.
Uma subcategoria de XSS armazenado é o ataque XSS cego. Nesta variante, um invasor injeta código como entrada, os dados de entrada são armazenados no back-end e, em seguida, refletidos para a vítima em outra parte do aplicativo da web.
Por exemplo, se um invasor injetar código malicioso nos formulários de contato ou feedback de um site, o código injetado será executado quando o administrador do site inspecionar os dados de entrada.
Script entre sites baseado em DOM (XSS)
Um ataque de script entre sites baseado em Document Object Model (DOM) é um ataque do lado do cliente em que o código malicioso é escrito primeiro no DOM do navegador e, em seguida, executado pelo navegador. Isso acontece devido a higienização inadequada de entrada pelo site.
Em um aplicativo web vulnerável, o invasor pode usar um script para acessar o DOM e manipular seu conteúdo. Assim como o XSS refletido, os ataques XSS baseados em DOM também são entregues por meio de engenharia social. A vítima é induzida a clicar em um URL malicioso que a leva à página vulnerável onde o script é executado pelo navegador.
Como detectar e prevenir vulnerabilidades XSS em seu site
As vulnerabilidades de cross-site scripting (XSS) não são fáceis de detectar e corrigir — uma razão significativa pela qual ainda são tão prevalentes hoje quanto eram décadas atrás. No entanto, seguir práticas sólidas de desenvolvimento e priorizar a segurança pode salvar seu site de ataques cibernéticos devastadores e violações, potencialmente custando milhões.
Aqui estão algumas dicas sobre como prevenir ataques XSS como desenvolvedor:
- Como regra básica, não confie na entrada do usuário. Qualquer entrada do usuário renderizada com o HTML apresenta o risco de um ataque XSS.
- Implemente técnicas adequadas de escape ou codificação para escapar de qualquer script alimentado em campos de entrada.
- Higienize a entrada do usuário para remover quaisquer scripts injetados.
- Definir o sinalizador HttpOnly para cookies para torná-los inacessíveis por meio de scripts do lado do cliente.
- Aplicar a política de segurança de conteúdo (CSP) para inibir a injeção de script na página da Web de fontes não autenticadas.
Como usuário que navega na web, você não pode fazer muito para se proteger de um ataque XSS iminente, além de ficar atento aos links em que clica e aos sites que visita.
Melhores práticas de segurança de aplicativos da Web
Como proprietário de uma empresa on-line, você deve estar sempre atento a tecnologias defensivas para proteger sua empresa contra ameaças e corrigir quaisquer brechas na estrutura interna. Como uma empresa emergente, se você não puder investir na atualização da segurança de sua organização, a adoção das melhores práticas de segurança o protegerá até certo ponto.