Como o Chrome DevTools ajuda na defesa contra ataques auto-XSS.

Wolfgang Beyer
Wolfgang Beyer

O que são ataques de auto-XSS?

Self-XSS, ou scripting em vários sites, é um tipo de ataque de engenharia social que induz você a executar código malicioso no navegador da Web. Ao contrário dos ataques XSS comuns, que dependem de vulnerabilidades em aplicativos da Web que permitem que invasores injetem código malicioso, os ataques auto-XSS dependem de suas próprias ações possíveis de execução de código.

Os ataques self-XSS normalmente envolvem o invasor enganando você para que ele copie e cole código malicioso no Console do DevTools do navegador. O atacante geralmente consegue isso prometendo algum tipo de recompensa. Isso pode ser:

  • Prometer a você que o código dará acesso a recursos ocultos ou recompensas virtuais.
  • Fingir que o código é um teste de segurança ou uma correção de bug.
  • Prometer que o código permita invadir um site para seu ganho.

Assim que você executar o código, o invasor poderá assumir o controle da sua conta. Isso permite que o invasor:

  • Roubar suas informações pessoais, como nome, endereço e número do cartão de crédito.
  • postar mensagens ou comentários não autorizados em seu nome;
  • Assuma o controle das suas contas de redes sociais.
  • Espalhar malware para outros usuários.

Como o Chrome DevTools tenta mitigar ataques de XSS?

Permitir que os usuários colem código no DevTools e o executem é inerentemente arriscado. Mas esse também é um dos recursos principais do Chrome DevTools. Portanto, precisávamos encontrar um equilíbrio entre mitigar possíveis ataques de self-XSS e não interferir no trabalho de desenvolvedores que querem apenas depurar sites.

Os desenvolvedores não costumam copiar o código que encontraram em algum lugar da Web, colá-lo no DevTools e executá-lo sem dar uma olhada rápida no que o código faz. A maioria dos desenvolvedores está muito ciente dos riscos de segurança de executar códigos que se encontravam em um canto pouco conhecido da Web.

O Chrome DevTools confia nos desenvolvedores para saber o que estão fazendo. Não queremos desacelerá-los ou distraí-los de nenhuma forma quando estiverem copiando e colando código.

Acreditamos que os não desenvolvedores correm um risco muito maior de serem vítimas de um ataque de XSS. Para proteger você, acreditamos que é aceitável e benéfico interromper você quando estiver fazendo algo potencialmente perigoso. Quando o Chrome DevTools detecta que um usuário inexperiente está tentando colar um código no DevTools, ele é interrompido e mostra um aviso.

Quando o DevTools mostra avisos de XSS automaticamente?

O DevTools usa uma heurística muito simples para decidir se mostra avisos de XSS com base no histórico do console do seu perfil de usuário.

Caso seu perfil tenha pelo menos 5 entradas no histórico do console, o DevTools não incomodará você com avisos nem pop-ups. O histórico do console é a lista de comandos que você digitou e executou no console. Esses são os comandos que você vê quando posiciona o cursor no Console e pressiona a tecla de seta para cima repetidamente.

Como são os avisos de self-XSS?

Quando um usuário inexperiente tenta colar código no Console, essa ação é bloqueada, e o Console mostra um aviso.

O aviso de self-XSS no console.

É possível substituir esse aviso e ativar a colagem, mas é necessário digitar "permitir colar" para fazer isso.

Quando um usuário inexperiente cola código no editor do DevTools (por exemplo, o painel Sources), a experiência do usuário é muito semelhante. Em vez de um aviso, você verá uma caixa de diálogo modal.

Caixa de diálogo modal de XSS no painel Origens.

Vale lembrar que só fechar essa caixa de diálogo não é suficiente para ativar a colagem. Para substituir o aviso, digite "permitir colar" no campo de entrada.

Essa configuração é única?

Sim, assim que você permitir a colagem, você não será mais incomodado com avisos de self-XSS.

Esperamos que isso gere um bom equilíbrio entre utilidade e aborrecimento. Ao adicionar atrito, aumentamos a probabilidade de você ler o aviso e, portanto, diminui a probabilidade de um ataque self-XSS bem-sucedido.

O Chrome DevTools mantém uma flag que especifica se os avisos de XSS de si mesmos devem ou não ser mostrados no seu perfil do Chrome. Portanto, se você criar um novo perfil e imediatamente começar a colar o código no DevTools, a ação será bloqueada e avisos de self-XSS serão exibidos.

É possível desativá-lo para a automação de testes?

Mas e os testes automatizados? Muitas ferramentas de teste criam um novo perfil temporário para cada execução de teste. Portanto, se você usa o DevTools para depurar os testes automatizados, a ação de colar no Console fica bloqueada inicialmente. Para evitar isso, use o Chrome for Testing. O Chrome for Testing é uma versão dedicada do Chrome, projetada especificamente para testes e automação, com avisos de self-XSS desativados.

Conclusão

O que você acha dessa estratégia para mitigar ataques de auto-XSS? Se você tiver comentários ou sugestões, adicione um comentário a este bug ou entre em contato usando um dos métodos a seguir.

Especialmente se você estiver trabalhando em um site que alerta sobre ataques de auto-XSS usando registros do console, gostaríamos de falar sobre como alinhar nossos esforços ou medir o impacto das medidas de mitigação de auto-XSS.

Fazer o download dos canais de visualização

Use o Chrome Canary, Dev ou Beta como seu navegador de desenvolvimento padrão. Esses canais de pré-visualização dão acesso aos recursos mais recentes do DevTools, testam APIs modernas da plataforma Web e encontram problemas no seu site antes que os usuários o façam!

Entrar em contato com a equipe do Chrome DevTools

Use as opções a seguir para discutir os novos recursos e mudanças na postagem ou qualquer outro assunto relacionado ao DevTools.

  • Envie uma sugestão ou feedback pelo site crbug.com.
  • Para informar um problema do DevTools, use Mais opções   Mais   > Ajuda > Informar problemas do DevTools no DevTools.
  • Tuíte em @ChromeDevTools.
  • Deixe comentários nos vídeos do YouTube sobre as novidades do DevTools ou nos vídeos do YouTube com dicas sobre o DevTools.