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

Wolfgang Beyer
Wolfgang Beyer

O que são ataques de auto-XSS?

O Self-XSS, ou auto-scripting em vários sites, é um tipo de ataque de engenharia social que induz a vítima a executar um 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 das suas próprias ações de execução de código.

Os ataques de auto-XSS geralmente envolvem o invasor induzindo você a copiar e colar códigos maliciosos no Console do DevTools do navegador. O invasor geralmente faz isso prometendo algum tipo de recompensa. Isso pode ser:

  • Promete que o código vai dar acesso a recursos ocultos ou recompensas virtuais.
  • Fingir que o código é um teste de segurança ou uma correção de bug.
  • Promete que o código permite invadir um site para você.

Depois que você executa o código, o invasor pode assumir o controle da sua conta. Isso permite que o invasor faça o seguinte:

  • 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;
  • Controle suas contas de mídia social.
  • Difundir malware para outros usuários.

Como o Chrome DevTools tenta mitigar ataques de auto-XSS?

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

Os desenvolvedores geralmente não copiam o código que encontram em algum lugar da Web, colam no DevTools e executam sem antes conferir o que o código faz. A maioria dos desenvolvedores está ciente dos riscos de segurança da execução de código encontrado em um canto obscuro da Web.

O Chrome DevTools confia que os desenvolvedores sabem o que estão fazendo. Não queremos que eles percam o ritmo ou se distraiam de qualquer forma ao copiar e colar código.

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

Quando os DevTools vão mostrar avisos de auto-XSS?

O DevTools usa uma heurística muito simples para decidir se mostra ou não avisos de auto-XSS: ela é baseada no histórico do console do seu perfil de usuário.

Se o perfil tiver pelo menos cinco entradas no histórico do console, o DevTools não vai incomodar você com avisos ou pop-ups. O histórico do console é a lista de comandos que você digitou e executou no Console. Estes são os comandos que aparecem quando você coloca o cursor no Console e pressiona a tecla de seta para cima repetidamente.

Como são os avisos de auto-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 auto-XSS no console.

É possível substituir esse aviso e permitir a colagem, mas você precisa digitar "allow pasting" para fazer isso.

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

Caixa de diálogo modal de auto-XSS no painel "Origens".

Novamente, fechar essa caixa de diálogo não é suficiente para ativar a colagem. Para substituir o aviso, digite "allow pasting" no campo de entrada.

É uma configuração única?

Sim, depois de permitir a colagem, você não vai mais receber avisos de auto-XSS.

Esperamos que isso alcance um bom equilíbrio entre utilidade e aborrecimento. Ao adicionar atrito, aumentamos a probabilidade de você ler o aviso e, portanto, diminuímos a probabilidade de um ataque de auto-XSS.

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

Você pode desativar esse recurso para a automação de testes?

E os testes automatizados? Muitas ferramentas de teste criam um perfil temporário novo para cada execução de teste. Portanto, se você usa as Ferramentas do desenvolvedor para depurar seus testes automatizados, a colagem no Console é bloqueada inicialmente.

Para contornar esse problema, faça o seguinte:

  • Use o Chrome for Testing, uma variedade de Chrome projetada especificamente para testes e automação. Os avisos de auto-XSS estão desativados.

  • Para outros canais de lançamento do Chrome, transmita a flag --unsafely-disable-devtools-self-xss-warnings de linha de comando para desativar completamente a caixa de diálogo de aviso de auto-XSS.

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 abaixo.

Especialmente se você estiver trabalhando em um site que avisa sobre ataques de auto-XSS nos registros do console, gostaríamos de conversar 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 navegador de desenvolvimento padrão. Esses canais de visualização dão acesso aos recursos mais recentes do DevTools, permitem testar APIs de plataforma da Web de última geração e ajudam a encontrar problemas no seu site antes que os usuários.

Entre em contato com a equipe do Chrome DevTools

Use as opções a seguir para discutir os novos recursos, atualizações ou qualquer outra coisa relacionada ao DevTools.