Explicação
QR code é seguro?
O modelo de ameaça honesto. Um QR code não infecta celular porque não é programa: é texto escrito com quadradinhos. Todo o risco mora no destino — e no Brasil, onde se paga por QR code todo dia, esse destino costuma ser uma conta bancária.
A resposta honesta tem duas partes, e as duas importam.
O código em si é inofensivo. Um QR code é texto escrito com quadradinhos pretos e brancos. Não contém programas, não é executado e não faz nada por conta própria. Escanear um é lê-lo, e ler texto não infecta celular. Manchetes do tipo «um QR code pode hackear seu celular» descrevem algo que o formato não é capaz de fazer.
O destino pode ser qualquer coisa. E é aí que mora todo o risco real. Um código pode levar a uma página que imita o seu banco, a uma cobrança falsa ou a um formulário que pede credenciais. É exatamente o mesmo perigo de um link num e-mail, com um agravante próprio: o código não mostra para onde vai. Um link escrito dá para ler antes de clicar; um código precisa ser escaneado para se descobrir.
Essa opacidade é a vulnerabilidade, e ela não está no software: está na situação.
O golpe do QR code, que aqui é sobre dinheiro
Em boa parte do mundo o ataque clássico com QR code é phishing: um código leva a uma página falsa que pede login. No Brasil o padrão dominante é outro, porque o que se faz com QR code aqui, todo dia, é pagar.
O PIX tornou o gesto cotidiano e, com ele, criou a versão brasileira do golpe. Ela aparece de duas formas.
A física. Alguém imprime um adesivo com o próprio código de cobrança e cola por cima do código legítimo, num lugar onde as pessoas já esperam encontrar um: o balcão de uma lanchonete, a maquininha, o cartaz de uma barraca de feira, o totem de um estacionamento. Quem paga escaneia com a confiança que o contexto físico oferece e transfere para a conta do golpista.
A digital. Um código de cobrança falso chega por mensagem, se passando por um boleto, uma taxa, uma cobrança de entrega ou um acerto combinado. Aqui o contexto que dá credibilidade não é o lugar, é a conversa.
Nos dois casos o problema é o mesmo e é grave: o PIX é praticamente irreversível. Existe o Mecanismo Especial de Devolução para casos de fraude, mas ele depende de o dinheiro ainda estar na conta de destino e não é garantia de nada. A defesa precisa acontecer antes de você confirmar, não depois.
A defesa principal já está na sua tela
Para pagamentos, a proteção decisiva não é o código: é a tela de confirmação do seu banco.
Antes de qualquer PIX por QR code, o aplicativo mostra o nome e parte do CPF ou CNPJ de quem vai receber. Esse é o momento de conferir, e o que se confere é o nome do recebedor — não o valor, que é o que a maioria das pessoas olha.
Se você está pagando um lanche numa lanchonete e o recebedor é uma pessoa física com nome que não tem relação nenhuma com o estabelecimento, pare. Se está pagando uma empresa e aparece o nome de alguém que você nunca ouviu falar, pare e pergunte no balcão. Esses dois segundos de leitura são a diferença entre o golpe funcionar e não funcionar, e são gratuitos.
Para códigos que levam a páginas, a defesa equivalente é a prévia do celular. Tanto o iOS quanto o Android mostram o destino antes de abrir. O que interessa ali é o domínio, não o resto do endereço: um atacante pode escrever o que quiser depois da barra, e um endereço pode conter o nome do seu banco inteiro sem ser do seu banco. O que ele não pode falsificar é o domínio em si.
A outra metade da conferência é física
A parte que quase ninguém faz e que detecta a maioria dos ataques reais: olhar o código.
Um adesivo colado por cima de outra coisa tem bordas. Dá para sentir com o dedo, dá para notar pela sombra, dá para perceber porque o material de baixo aparece nos cantos. Um código impresso direto num cartaz oficial faz parte do desenho; um colado por cima, quase nunca.
Num totem de estacionamento, numa maquininha ou num cartaz de estabelecimento, esse exame de dois segundos vale mais que qualquer aplicativo de segurança.
Quando o risco é praticamente zero
Nem todo código merece a mesma desconfiança. Um código de texto puro apenas mostra palavras: não há destino para onde ir e não há risco. Um código de Wi-Fi propõe conectar a uma rede, o que importa — uma rede hostil pode observar tráfego não criptografado — mas o celular sempre pede confirmação. Um cartão de contato propõe salvar alguém na agenda e nunca escreve sozinho.
Os casos que exigem atenção são os que terminam numa página web, e sobretudo os que terminam pedindo dinheiro ou credenciais.
O que isso significa para quem gera códigos
Se é você quem imprime o código, há três coisas que ajudam quem escaneia.
Use um domínio reconhecível. Quando a prévia mostra o seu domínio e ele combina com o lugar onde o código está, a pessoa confia com motivo. Um encurtador genérico apaga esse sinal exatamente quando ele faz mais falta.
Escreva ao lado o que vai acontecer. «Escaneie para ver o cardápio» transforma uma ação opaca numa ação esperada. Aumenta o número de escaneamentos e reduz a dúvida, e não custa nada.
Revise os códigos que ficam expostos. Um adesivo colado por cima do seu é um ataque contra os seus clientes que só você está em posição de detectar. Para um código de pagamento num balcão, isso deixa de ser boa prática e vira parte da rotina de abertura do dia: olhar se o código é o seu.