Static QR

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.