Porque nunca deve confiar num gerador de códigos QR online
Um código QR não é legível por pessoas. É sobre esse único facto que todo o ataque assenta.
Como este site começou
Este projeto nasceu de um teste simples. Pesquise por um gerador de códigos QR, pegue nos primeiros resultados, cole um endereço de Bitcoin e compare o que recebe de volta. Vários devolveram um código que não continha o endereço introduzido. Continha o de outra pessoa.
Como funciona a substituição
Cola o seu endereço de pagamento num site. O site devolve uma imagem. Não se consegue ler uma imagem de um código QR, por isso aceita-a, coloca-a numa fatura, num cartaz, numa página de donativos ou num cartão de visita, e deita fora o texto original. Todas as pessoas que a lerem pagam ao atacante em vez de a si. Nada parece errado em momento algum e, quando alguém dá por isso, o dinheiro desapareceu e o código impresso já circula.
Porque continua a resultar
- Não consegue distinguir dois códigos QR olhando para eles. Nem consegue quem os receber de si.
- O gerador é usado exatamente uma vez, no momento em que o texto original ainda está no ecrã, e nunca mais.
- O código acaba muitas vezes impresso, numa captura de ecrã ou incorporado algures onde o texto original já não existe, e por isso não sobra nada com que comparar.
- Quem verifica costuma comparar apenas os primeiros e os últimos caracteres. Os atacantes geram endereços que coincidem nessas posições.
O sentido inverso: códigos que não foi você a criar
Este site trata sobretudo dos códigos que você cria. A maior parte da fraude com códigos QR vai no sentido inverso. Alguém cola um autocolante sobre o código de um parquímetro ou de um terminal de pagamento, ou envia uma fatura em PDF com um código em vez de uma ligação. O código leva a algo que parece o correto e pede-lhe para iniciar sessão ou pagar. No setor chama-se a isto quishing, e funciona pela mesma razão que a substituição: não consegue ver para onde vai um código QR antes de já lá ter ido.
- Autocolantes colados sobre o código verdadeiro em parquímetros, carregadores e terminais de pagamento.
- Códigos dentro de emails e de anexos PDF, que passam por filtros que teriam travado uma ligação normal.
- Menus falsos, avisos de entrega de encomendas e lembretes de faturas de serviços.
- Cartazes e folhetos na via pública, onde ninguém distingue um autocolante acrescentado da impressão original.
Descodifique um código e leia o destino antes de o visitar: Verificar um código
Como se proteger
- Leia você mesmo cada código QR antes de o partilhar, com o dispositivo a partir do qual pagaria de facto.
- Compare a cadeia inteira, carácter a carácter, e não apenas as pontas.
- Prefira um gerador que funcione com a rede desligada. Se precisa de um servidor, o servidor pode alterar os seus dados.
- Verifique a soma de verificação do endereço. Os endereços de Bitcoin têm uma, e um endereço corrompido não passa.
- Volte a gerar o código você mesmo, em vez de reutilizar um que lhe tenham enviado.
- Antes de ler um código na via pública, verifique se foi colado um autocolante por cima do original. A manipulação física é a versão mais comum disto.
- Leia o domínio completo de qualquer ligação a que um código leve, e nunca inicie sessão nem pague a partir de uma página a que chegou por leitura de um código.
O que este site faz de diferente
- O código QR é construído no seu navegador. Nada do que escreve é transmitido, porque o site não tem servidor para onde transmitir.
- Depois de desenhar o código, a página descodifica a imagem que acabou de produzir e mostra-lhe o que lê. Se não corresponder ao que escreveu, di-lo.
- A política de segurança de conteúdo não permite qualquer origem externa, por isso a página não consegue carregar nem contactar nada, nem sequer por acidente.
- É tudo ficheiros estáticos e código aberto. Pode ler cada linha, guardar a página e usá-la sem ligação para sempre.
Também não acredite neste site
Tudo o que está acima é uma razão para desconfiar de geradores de códigos QR, e isto é um gerador de códigos QR. A releitura na página do gerador é uma conveniência, não uma prova: é o mesmo código que desenhou a imagem. A única verificação que conta mesmo é a que faz você, no seu próprio dispositivo, contra o seu próprio endereço. Faça essa.
Perguntas frequentes
Um gerador de códigos QR pode alterar o meu endereço de Bitcoin?
Pode. Se o código é gerado no servidor de outra pessoa, é esse servidor que decide o que entra na imagem. Pode devolver um código com o endereço que quiser, e a imagem parecerá perfeitamente normal.
Como verifico que um código QR contém o endereço certo?
Leia-o com o dispositivo a partir do qual pagaria e compare o texto descodificado com o seu endereço por inteiro. Não compare apenas os primeiros e os últimos caracteres, porque um atacante consegue fazê-los coincidir.
É seguro usar um gerador de códigos QR online para um endereço de carteira?
Só se o gerador correr inteiramente no seu navegador e se verificar o resultado lendo-o. Tudo o que envie o seu endereço para um servidor está a pedir-lhe que confie o seu dinheiro a esse servidor.
Este site envia os meus dados para algum lado?
Não. A página é estática e a codificação corre no seu navegador. Pode desligar-se da internet, recarregar, e continuará a funcionar.
O que é quishing?
Phishing que usa um código QR em vez de uma ligação. O código esconde o destino, por isso escapa tanto aos filtros de email como ao hábito de passar o rato sobre uma ligação antes de clicar. Autocolantes colados sobre códigos verdadeiros na via pública são a forma mais comum.
Como sei para onde vai um código QR antes de o ler?
Descodifique a imagem em vez de a abrir. O verificador deste site mostra-lhe o destino sem o visitar, e funciona com uma fotografia ou uma captura de ecrã de qualquer código.