Clickjacking
O clickjacking (classificado como um ataque de correção da interface do usuário) é uma brecha em segurança de rede que, por meio de técnicas maliciosas, induz o usuário a clicar em algo diferente do que o usuário percebe, potencialmente revelando informações confidenciais ou permitindo que outras pessoas assumam o controle de seu computador. O clickjacking geralmenta está por trás de objetos aparentemente inócuos, incluindo páginas da web que estão sobrepostos sob um ou mais frames.[1][2][3][4][5][6] Este é também um exemplo de problema do deputado confuso, em que um computador é enganado e faz uso indevido de sua autoridade.[7]
Origem
editarEm 2002, notou-se que era possível carregar uma camada transparente em uma página da web e fazer com que a entrada do usuário afetasse a camada transparente sem que o usuário percebesse. No entanto, isso foi ignorado principalmente como uma questão importante até 2008. Em 2008, Jeremiah Grossman e Robert Hansen descobriram que o Adobe Flash Player podia ser clicado, permitindo que um invasor ganhasse acesso ao computador sem o conhecimento do usuário.[8] O termo clickjacking foi cunhado por Grossman e Hansen,[9][10] uma aglutinação das palavras click (clique) e hijacking (sequestro). À medida que mais ataques de natureza semelhante foram descobertos, o foco do termo "reparação de interface do usuário" foi alterado para descrever a categoria desses ataques, em vez de apenas o clickjacking propriamente dito.[8]
Implementação
editarPara implementar essa técnica, são utilizadas várias metodologias, como frame-busting, falsificação e múltiplos uso de cursor e elementos HTML (iframes) [6]. Basicamente, a operação é composta de duas etapas. Primeiro, um atacante cria uma página da web maliciosa que contém um objeto (por exemplo, o botão de curtir do Facebook) de um site legítimo. Então, esse objeto é colocado invisivelmente e sobreposto sob outro objeto visível e legítimo. Em segundo lugar, o atacante atrai uma possível vítima para clicar no elemento invisível por meio de uma mensagem visível e atraente, que é exibida próxima ao objeto invisível no iframe. Assim, quando a mensagem é clicada, a ação é ativada no objeto que está invisivelmente posicionado dentro do iframe.[11]
Os recursos de exibição de elementos do lado do navegador são feitos geralmente com HTML, JavaScript e CSS. São alteradas as propriedades do objeto, como por exemplo, a opacidade, que pode ser definido para um valor muito baixo, tornando-o quase invisível para a vítima. A página maliciosa, então, induz a vítima a clicar em elementos da interface gráfica (GUI) visíveis, que sobrepõem páginas legítimas invisíveis carregadas em iframes. Se a vítima clicar em um elemento GUI visível fornecido pelo atacante, isso resulta em uma ação na página legítima e pode causar ações indesejadas.[11]
Ataques de clickjacking têm sido realizados para executar várias atividades indesejadas, incluindo a publicação de mensagens não solicitadas em redes sociais (Facebook, Twitter), curtir ou não curtir o perfil de uma pessoa em uma rede social sem o conhecimento da vítima, e controlar as configurações da câmera de um computador por meio de plugins do Adobe Flash.[11]
Classificação de clickjacking
editarOs ataques de clickjacking podem ser classificados em três tipos: manipulação do dispostivo de exibição, modificação da localização do ponteiro e modificação do tempo do evento.[11]
Manipulação do dispostivo de exibição
editarNeste médodo, um usuário acredita em um elemento falso da página. Um exemplo desse método pode ser aplicado a técnicas que tem como objetivo inflar o número de curtidas de uma determinada página no Facebook. Essa prática também é conhecida como likejacking. O botão de "Curtir" é carregado e ocultado em um iframe de uma página controlada por um invasor. Este iframe pode ser ocultado por meio de CSS (z-index
) e elementos HTML (geralmente uma tag div
), mas contém o iframe verdadeiro que carrega um objeto clicável, nesse caso, o objeto "Curtir" do Facebook. Para atrair a vítima a clicar no elemento, o atacante coloca uma mensagem atrativo no iframe.[11]
Exemplo de código em HTML[11]:
<html>
<body>
<h1> CLIQUE AQUI PARA GANHAR UM IPAD!</h1>
<div style="overflow: hidden; filter:alpha (opacity=0);" id="icontainer">
<iframe src="https://www.facebook.com/pages/...
width=450;action=like";… id="fbframe" >
</iframe>
</div>
</body>
</html>
Modificação da localização do ponteiro
editarNesta técnica, é criado um cursor falso na página por meio da alteração de propriedade no CSS. Assim, é mostrado um cursor falso na página para induzir a vítima a clicar. Essa técnica é conhecida como cursorjacking. Essa técnica pode estar atrelada a técnica de manipulação do dispostivo de exibição para clicar em um elemento não requisitado.[11]
Modificação do tempo do evento
Está técnica se aproveita dos milisegundos que ser humano demora para responder a uma mudança visual. Esse tempo é usado para disparar um ataque que demora milisegundos. O atacante pode mudar a posição dos alvo após um primeiro clique, além de alterar as propriedades do CSS. [11]
Tipos de clickjacking
editar- Clássico: funciona principalmente através de um navegador da web.[8]
- Likejacking: é usado especificamente para aumentar o número de curtidas em redes sociais, como o Facebook, com um botão falso sobreposto ao botão de "curtir". Nesse caso, uma página oculta é colocada sobre a página original. Embora invisível, essa página contém um botão de "curtir" sob outro botão. Por exemplo, se o botão de "curtir" estiver escondido sob o botão de "download", toda vez que o usuário fizer o download, uma nova curtida será registrada.[6]
- Aninhado: clickjacking adaptado para afetar o Google+.[12]
- Cursorjacking: manipula a aparência e a localização do cursor.[8]
- MouseJacking: injeta entrada de teclado ou mouse, via link RF remoto.[13]
- Sem navegador: não usa navegador.[8]
- Cookiejacking: rouba cookies de navegadores.[8][14]
- Filejacking: capaz de configurar o dispositivo afetado como um servidor de arquivos.[8][15][16]
- Ataque do gerenciador de senhas: clickjacking que utiliza uma vulnerabilidade na capacidade de preenchimento automático dos navegadores[8]
- Arrasta e solta: é oferecido uma interface gráfica geralmente na forma de um jogo em que objetivo é é colocar algo em um determinado lugar, arrastando algum objeto. Dessa forma, o usuário fornece informações importantes pela simples ação de arrastar e soltar. Isso é possivel com a ajuda de iframes acoplados atrás das opções dessa ação.[6]
- Design de interface do usuário: é estruturado uma interface para exibir diversas opções na tela com vários cursores móveis, com a intenção de confundir o usuário sobre o local correto para clicar. Ao clicar de maneira equivocada, o usuário acidentalmente permite a injeção do código malicioso, permitindo a execução bem-sucedida do ataque.
Prevenção
editarNavegadores não gráficos
editarEmbora possam exigir um conteúdo restrito da web e a necessidade de conhecimentos técnicos, navegadores como Lynx podem prevenir ataques de clickjacking, já que esses ataques exploram a interface gráfica do usuário.[6]
Plugins
editarPlugins, como NoScript, podem ser utilizados para filtrar códigos JavaScript e HTML, garantindo que nenhuma página oculta seja embutida na página principal. O plugin Pro Click também é capaz de detectar ataques de clickjacking. Ele intercepta e analisa solicitações feitas pelo navegador e verifica se o código JavaScript é vulnerável ao ataque. Após a análise, ele permite que a solicitação seja processada no navegador (lado do cliente).[6]
Soluções
editarImplementação de frames com assinaturas
editarAtribuir uma assinatura única a cada frame do site pode ser uma solução de evitar um ataque de clickjacking. Isso ajuda a regular a criação dos frames, pois ao enviar um método de requisição POST, ela é alterada com a adição de um índice no rodapé do frame pelo servidor, mantendo a autenticidade da página. Caso o invasor tente modificar a página durante a requisição, um alerta é gerado e o site é recarregado. Esse ataque pode ser feito por meio de técnicas, como o Man in the Middle (homem no meio), onde o invasor intercepta a comunicação. A intervenção é detectada e o cliente é protegido contra o ataque. O número de frames gerados em sites dinâmicos pode ser coletado no lado do cliente e verificado por meio da geração de um código hash que contabiliza a quantidade de frames utilizados.[6]
Política de Mesma Origem (Same Origin Policy)
editarOutra solução para prevenir clickjacking é utilizar a política da mesma origem, que pode ser implementada com um token associado à URL da página em questão. Esse token pode ser verificado no momento da execução dos frames. Um controle sobre as requisições POST e GET do site pode identificar se a requisição foi alterada ou se a página não foi carregada a partir da origem legítima, desconectando a conexão e enviando uma nova requisição ao servidor. Caso um invasor tente sobrepor um frame malicioso à página original, essa intervenção será detectada e bloqueada. O JavaScript pode ser usado para carregar a página diretamente no navegador e verificar se o código foi alterado.
Detecção baseada em aprendizado de máquina
editarO aprendizado de máquina pode ser utilizado para prevenir clickjacking por meio da adaptação motora. O tempo de resposta de um usuário normal é de cerca de 500 ms e é geralmente o tempo que é usado para o ataque malicioso disparar. O invasor pode exibir um botão durante esse intervalo e executar código malicioso. Um exemplo é um jogo no qual o usuário clica em um objeto que muda de cor na tela para ganhar pontos. O invasor pode usar essa técnica para enganar o usuário e executar um clique malicioso. A solução envolve capturar a imagem da tela por modelos de aprendizado de máquina e enviá-la para o processamento no servidor. Se houver mudanças na página, o frame superior é bloqueado imediatamente, protegendo o usuário.[6]
Referências
- ↑ Robert McMillan (17 de setembro de 2008). «At Adobe's request, hackers nix 'clickjacking' talk». PC World. Consultado em 8 de outubro de 2008. Cópia arquivada em 17 de julho de 2015
- ↑ Megha Dhawan (29 de setembro de 2008). «Beware, clickjackers on the prowl». India Times. Consultado em 8 de outubro de 2008. Arquivado do original em 24 de julho de 2009
- ↑ Dan Goodin (7 de outubro de 2008). «Net game turns PC into undercover surveillance zombie». The Register. Consultado em 8 de outubro de 2008
- ↑ Fredrick Lane (8 de outubro de 2008). «Web Surfers Face Dangerous New Threat: 'Clickjacking'». newsfactor.com. Consultado em 8 de outubro de 2008. Arquivado do original em 13 de outubro de 2008
- ↑ Shahriar, Hossain; Devendran, Vamshee Krishna (4 de julho de 2014). «Classification of Clickjacking Attacks and Detection Techniques». Information Security Journal: A Global Perspective (em inglês). 23 (4–6): 137–147. ISSN 1939-3555. doi:10.1080/19393555.2014.931489
- ↑ a b c d e f g h Sahani, Rishabh; Randhawa, Sukhchandan (dezembro de 2021). «Clickjacking: Beware of Clicking». Wireless Personal Communications (em inglês) (4): 2845–2855. ISSN 0929-6212. doi:10.1007/s11277-021-08852-y. Consultado em 1 de outubro de 2024
- ↑ The Confused Deputy rides again!, Tyler Close, October 2008
- ↑ a b c d e f g h Niemietz, Marcus (2012). «UI Redressing Attacks on Android Devices» (PDF). Black Hat
- ↑ You don't know (click)jack Robert Lemos, October 2008
- ↑ JAstine, Berry. «Facebook Help Number 1-888-996-3777». Consultado em 7 de junho de 2016
- ↑ a b c d e f g h Shahriar, Hossain; Devendran, Vamshee Krishna (4 de julho de 2014). «Classification of Clickjacking Attacks and Detection Techniques». Information Security Journal: A Global Perspective (em inglês) (4-6): 137–147. ISSN 1939-3555. doi:10.1080/19393555.2014.931489. Consultado em 1 de outubro de 2024
- ↑ Lekies, Sebastian (2012). «On the fragility and limitations of current Browser-provided Clickjacking protection schemes» (PDF). USENIX
- ↑ «Wireless Mouse Hacks & Network Security Protection». MOUSEJACK (em inglês). Consultado em 3 de janeiro de 2020
- ↑ Valotta, Rosario (2011). «Cookiejacking». tentacoloViola - sites.google.com. Consultado em 23 de outubro de 2018
- ↑ «Filejacking: How to make a file server from your browser (with HTML5 of course)». blog.kotowicz.net. Consultado em 23 de outubro de 2018
- ↑ «Password Managers: Attacks and Defenses» (PDF). Consultado em 26 de julho de 2015