
Buscador de vazamentos entre sites (XS-Leaks)
XSLeaker é uma ferramenta que ajuda a encontrar XS-Leaks em websites. A ferramenta compara valores de recursos para os quais uma técnica de vazamento é conhecida (ex.: número de iframes) entre diferentes estados.
XSLeaker consiste em dois componentes: uma extensão do Chrome que é usada para coletar os valores de recursos em diferentes estados e um servidor node.js que é usado para comparar e exibir os resultados.
Os seguintes valores de recursos são verificados em busca de diferenças:
Supondo que o usuário queira testar n estados diferentes, a seguinte configuração deve ser feita:
Crie n perfis do Chrome, um para cada estado. Como os perfis podem ser reutilizados, o usuário só precisa criar novos perfis do Chrome se mais de n estados forem testados.
Instale a extensão XSLeaker do Chrome para cada perfil.
Esta configuração deve ser feita apenas uma vez, exceto se o usuário quiser testar mais de n estados.
Abra n janelas do navegador com perfis diferentes.
Ative a extensão do navegador em cada janela. Isso é feito com o botão "Activate" no popup.
Opcionalmente, escolha um nome de estado (ex.: conta de administrador). Isso é recomendado porque torna muito mais fácil identificar os estados nos resultados.
Configure os diferentes estados para o website que deve ser testado, um para cada janela (ex.: entrando como usuários diferentes).
Escolha uma janela e ative o Master Mode através do interruptor na janela popup. As outras janelas agora seguem as alterações de URL da janela mestra.
Na janela mestra, navegue até o site que deve ser testado. Todas as outras janelas navegam para a mesma página.
Inicie o teste com um clique no botão "Send Results" no popup da janela mestra.
Navegue até a interface web (ex.: http://localhost:3000) fornecida pelo Node.js para verificar diferenças.
Para o próximo teste do mesmo website, o usuário só precisa navegar até o URL de destino com a janela mestra e pressionar o botão "Send Results" novamente.
Clique na imagem para ver o XSLeaker em ação:
A interface web hospedada com node.js tem as seguintes páginas:
Results: Mostra os resultados de teste mais recentes
History: Mostra todos os testes feitos no passado. Ao clicar em uma linha da tabela, os resultados do teste são exibidos.
Automation: A página Automation permite que o usuário envie uma lista de URLs que devem ser testados. O botão "Start Test" navega cada janela do navegador conectada para uma URL após a outra e executa o teste. Os resultados podem ser verificados no histórico.
Nota: Primeiro você precisa configurar os estados que deseja testar nas diferentes janelas.
Atualmente existe um bug em que as diferenças salvas no banco de dados nem sempre estão corretas. Confira as diferenças observando os resultados do teste após o teste automatizado.
Test: Uma bancada de teste que pode ser usada para verificar se o XSLeaker está funcionando corretamente. Em http://localhost:3000/tests um estado pode ser escolhido. Em seguida, propriedades dependentes do estado podem ser definidas. Assim que várias janelas do navegador com estados diferentes estiverem abertas, navegue até o site de teste (http://localhost:3000/tests/testsite) com a janela mestra e execute o teste.

A imagem mostra a arquitetura do XSLeaker. As diferentes janelas do navegador com diferentes estados conectam-se à aplicação node.js através de WebSockets. O servidor fornece uma interface web onde o usuário pode verificar os resultados dos testes (veja Interface web do XSLeaker). O servidor salva os resultados dos testes em um banco de dados SQLite.