Gostaria de compartilhar com você os resultados de minha pesquisa sobre o estado atual das coisas no processo de desanonimização usando a técnica de clickjacking. Por desanonimização, quero dizer a capacidade de um site mal-intencionado revelar a identidade de um visitante, incluindo seu nome completo e possivelmente outras informações. Não apresento aqui nenhuma informação nova que não era publicamente conhecida anteriormente, mas fiquei muito surpreso ao descobrir como é fácil violar a privacidade do visitante e revelar sua identidade, mesmo se você seguir as melhores práticas e usar um navegador e sistema operacional modernos.
Tudo começou com o Google YOLO
Minha jornada começou quando me deparei com um ótimo
post no blog chamado Google YOLO , de autoria de
@filedescriptor , sobre a vulnerabilidade de clickjacking do widget da web do Google YOLO (você só faz login uma vez), que fornece autorização em linha com um clique em sites . Eu recomendo que você visite e leia uma postagem do blog que descreva e demonstre interativamente as técnicas de clickjacking.
Em resumo, o problema da privacidade é que você pode criar um site com um widget do Google YOLO e mascará-lo como um botão inofensivo. Quando você clica em um botão que é inofensivo à primeira vista, a vítima, sem saber, faz login com sua Conta do Google, transferindo sua identidade para o proprietário do site, incluindo seu nome completo e endereço de e-mail.
Muitas vezes, isso realmente não importa, pois muitos sites provavelmente já conhecem sua identidade. No entanto, esse problema pode ter conseqüências desagradáveis. Considere, por exemplo, preencher uma pesquisa supostamente anônima. Como você nunca visitou este site, pode pensar que ele não tem a capacidade de associar suas respostas à sua identidade, mas isso não é de todo.
Quando me deparei com a postagem no blog do Google YOLO, o Google já havia
corrigido o problema restringindo o recurso apenas aos sites afiliados. Esta postagem no blog também descreve o clickjacking usando o widget Curtir do Facebook, mas quando você clicou no botão, o widget solicitou confirmação:

A solicitação de confirmação torna esse ataque impossível - mesmo se a vítima clicar inconscientemente no botão Curtir duas vezes, ela ainda precisará confirmar sua ação em uma janela pop-up. O pop-up não pode ser modificado pelo site do invasor e, portanto, não está sujeito a ataques de clickjacking. A desvantagem dessa solução é que ela torna o uso menos conveniente, exigindo ações adicionais todas as vezes, mesmo para o uso intencional do botão "Curtir".
Como resultado, cheguei à conclusão de que as grandes empresas resolveram esse problema e, durante um tempo, esqueci-o até ter uma nova idéia ...
Widget de comentários do Facebook: “typejacking”
Um dia, enquanto andava pela Internet, me deparei com um site que usava o
widget de comentários do
Facebook para permitir que os visitantes comentassem em uma página de terceiros. Naquele momento, lembrei-me do que li anteriormente e pensei: o problema do clickjacking foi resolvido por grandes empresas, mas e o "typejacking"? E se eu pegar um widget de comentário e colá-lo no meu site, disfarçando-o como um formulário não relacionado? Então, se eu puder convencer a vítima a inserir texto nela, qualquer texto, e enviá-la como um comentário do Facebook para minha página, posso descobrir sua identidade verificando no Facebook qual conta acabou de postar o comentário.
Com isso em mente, comecei a trabalhar em uma página da web que demonstra essa técnica. No processo, descobri acidentalmente que o widget "Curtir", que me parecia exigir confirmação, funciona sem confirmação na minha página da web! Ao ler sobre um widget na Internet, descobri que o Facebook, ao contrário do Google, usa uma lista negra para se proteger contra o clickjacking.
A maneira como o Facebook decidiu proteger seus usuários contra o clickjacking pode protegê-lo de uma enorme coleção de curtidas - o Facebook pode perceber que um grande número de curtidas vem de um site, adiciona confirmação e até cancela curtidas. Mas isso não protege contra a ameaça de desanonimização. Um invasor pode criar facilmente um novo site e usar o clickjacking com o widget "Curtir", depois enviar a página a um número limitado de vítimas e revelar suas identidades rastreando as curtidas do Facebook.
Para minha surpresa, a técnica de likejacking, um termo que descreve a técnica de clickjacking para obter curtidas, é conhecida
desde pelo menos 2010 . E hoje, 9 anos depois, ainda permanece relevante. Além disso, quando se trata de "likejacking", a questão da desanonimização raramente é mencionada. A questão da desanonimização foi escrita publicamente, pelo menos em
2012 , mas ainda assim, acredito que poucas pessoas o conhecem, especialmente para o nosso tempo, quando mais e mais pessoas entendem a importância da privacidade na Internet.
Quanto à técnica de typejacking, ainda adicionei uma
página da web que demonstra o ataque . Você pode experimentar ou assistir ao vídeo:
Clickjacking, typejacking ... o que mais?
Pensando na técnica de clickjacking, imaginei o que mais poderia ser feito usando a capacidade de inserir e manipular widgets de terceiros em um site mal-intencionado. As técnicas de clickjacking e typejacking foram projetadas para a interação do usuário com o widget. E se, em vez disso, convencermos o usuário a fornecer informações a partir do widget?
Acabou que alguém já tinha pensado nisso antes de mim. Uma pesquisa rápida me levou ao artigo
Tell Me About Yourself: The Malicious CAPTCHA Attack , que analisa essa técnica. Aqui está um exemplo de um artigo que demonstra como um invasor pode enganar uma vítima e, sem saber, revelar seu nome, mascarando o widget como um captcha inocente:

Prevenção de clickjacking para proprietários de sites
Ainda não há uma maneira confiável de impedir o clickjacking.
Em 2009, foi introduzido o cabeçalho HTTP
X-Frame-Options , que oferece proteção parcial contra o clickjacking. O cabeçalho permite que o proprietário do site especifique quais páginas não devem estar no quadro. O navegador que suporta o cabeçalho se recusará a carregar essas páginas em um quadro. Embora isso evite o clickjacking em alguns casos, ele não ajuda com widgets que precisam carregar em um quadro, como um widget "Curtir" ou um widget de comentário.
Olhando para o título
X-Frame-Options , perguntei-me por que não fazer uma opção semelhante que forneça uma medida de proteção enquanto ainda permite que a página da Web seja carregada em um quadro? Pense, por exemplo, no widget "Curtir": existe uma boa razão para uma página da Web desenhar em cima de um botão? Redimensionar ou botões de transparência? Alguma outra manipulação como filtros CSS? A única razão pela qual posso imaginar é o clickjacking. Por que não introduzir uma nova opção
X-Frame-Options , como
X-Frame-Options: Isolate , que permite que a página da Web seja carregada no quadro, mas garante que o quadro não possa ser redimensionado e o site pai não possa ser atraído ele. Como nas idéias anteriores,
alguém já me sugeriu isso .
Embora os navegadores não implementem essa proteção, os proprietários de sites têm apenas uma opção: requerem interação adicional com o usuário, por exemplo, usando uma janela pop-up separada. Vimos que o Facebook faz isso com o widget "Curtir", mas apenas para sites suspeitos nos quais está hospedado. Obviamente, o Facebook valoriza mais a conveniência dos usuários do que sua privacidade.
Atualização: verifica-se que o Chrome oferece aos proprietários de widgets a capacidade de detectar o clickjacking usando a função
Intersection Observer v2 . Esse recurso é ativado por padrão a partir do Chrome 74, lançado em abril de 2019. Infelizmente, atualmente apenas o Chrome o implementa e não é tão fácil de usar - pelo menos, mais difícil do que adicionar um cabeçalho. Consulte
Confiança é boa, observação é melhor para obter mais informações.
Prevenção de clickjacking para usuários
Depois de tentar várias soluções, cheguei à conclusão de que bloquear cookies de terceiros é a melhor maneira de impedir o vazamento de informações através do clickjacking. Isso não impede a técnica de clickjacking, mas como o quadro incorporado não recebe cookies de visitantes, esse quadro não será particularmente útil para um invasor.
Além disso, a opção para bloquear cookies de terceiros é que, na maioria dos navegadores, essa opção é incorporada inicialmente. Não há necessidade de instalar extensões de terceiros ou procurar soluções diferentes para diferentes navegadores ou dispositivos.
A desvantagem é que widgets, como o widget Curtir ou o comentário, deixarão de funcionar em todos os sites. Não sinto muita falta deles, mas talvez essa opção não seja adequada para todos.
Outra vantagem do bloqueio de cookies de terceiros é que o bloqueio pode proteger contra ataques de canal lateral que não requerem intervenção do usuário. Por exemplo,
esse método demonstra o uso do CSS3 para desinônimo de usuários do Facebook sem interação adicional do usuário com a página da web. Outro exemplo de uma vulnerabilidade antiga, mas interessante, que pode ser evitada com o bloqueio de cookies de terceiros é o
roubo de domínio cruzado genérico entre navegadores , que usa uma brecha na especificação CSS para forçar o navegador a usar a página de origem como CSS e acesso para informações específicas (
edição do projeto Chromium ).
Conclusão
Entre todos os detalhes históricos e técnicos deste artigo, há uma recomendação que eu gostaria de enfatizar novamente: considere o bloqueio de cookies de terceiros para melhorar a proteção de sua identidade na Internet.
Espero que este artigo ajude a conscientizar sobre a técnica de clickjacking que é conhecida desde 2010 e ainda não foi resolvida. Talvez os fornecedores de navegadores considerem a introdução de medidas para evitá-lo e limitar a manipulação de quadros.
O PS On Habré escreveu sobre um
problema semelhante no site da VKontakte há 5 anos. Parece que a demonstração não está mais funcionando (é necessário confirmar a ação em uma janela pop-up), mas, como você pode ver, o tema ainda é relevante. Talvez no VKontakte exista outro widget que você possa usar, por exemplo, um widget de comentário. Mas, infelizmente, nesse artigo, o autor não mencionou o bloqueio de cookies de terceiros.