Static QR

Pourquoi il ne faut jamais faire confiance à un générateur de QR code en ligne

Un QR code n'est pas lisible par un humain. Toute l'attaque repose sur ce seul fait.

Comment ce site a commencé

Ce projet est né d'un test tout simple. Cherchez un générateur de QR code, prenez les premiers résultats, collez-y une adresse Bitcoin et comparez ce qui revient. Plusieurs ont renvoyé un code qui ne contenait pas l'adresse saisie. Il contenait celle de quelqu'un d'autre.

Comment fonctionne la substitution

Vous collez votre adresse de paiement sur un site. Le site vous renvoie une image. On ne peut pas lire une image de QR code, alors vous l'acceptez, vous la mettez sur une facture, une affiche, une page de dons ou une carte de visite, et vous jetez le texte d'origine. Toutes les personnes qui la scannent paient l'attaquant à votre place. À aucun moment rien ne paraît anormal, et quand quelqu'un s'en aperçoit, l'argent est parti et le code imprimé circule déjà.

Pourquoi ça marche encore

  • On ne distingue pas deux QR codes en les regardant. Les personnes à qui vous l'envoyez non plus.
  • Le générateur est utilisé exactement une fois, au moment où le texte d'origine est encore à l'écran, puis plus jamais.
  • Le code finit souvent imprimé, en capture d'écran ou intégré quelque part où le texte d'origine n'existe plus, si bien qu'il ne reste rien à quoi le comparer.
  • Ceux qui vérifient ne comparent en général que les premiers et les derniers caractères. Les attaquants génèrent des adresses qui coïncident à ces endroits.

L'autre sens : les codes que vous n'avez pas créés

Ce site parle surtout des codes que vous créez. L'essentiel de la fraude aux QR codes va dans l'autre sens. Quelqu'un colle un autocollant par-dessus le code d'un horodateur ou d'un terminal de paiement, ou envoie une facture en PDF avec un code à la place d'un lien. Le code mène à une page qui a l'air correcte et vous demande de vous connecter ou de payer. Le secteur appelle cela le quishing, et cela fonctionne pour la même raison que la substitution : on ne peut pas voir où mène un QR code avant d'y être déjà allé.

  • Des autocollants posés sur le vrai code des horodateurs, des bornes de recharge et des terminaux de paiement.
  • Des codes glissés dans des e-mails et des pièces jointes PDF, qui passent les filtres qu'un simple lien aurait déclenchés.
  • De faux menus de restaurant, de faux avis de livraison et de faux rappels de facture.
  • Des affiches et des tracts dans l'espace public, où personne ne distingue un autocollant ajouté de l'impression d'origine.

Décodez un code et lisez sa destination avant de vous y rendre : Vérifier un code

Comment vous protéger

  • Scannez vous-même chaque QR code avant de le partager, avec l'appareil depuis lequel vous paieriez réellement.
  • Comparez la chaîne entière, caractère par caractère, pas seulement les extrémités.
  • Préférez un générateur qui fonctionne réseau coupé. S'il lui faut un serveur, ce serveur peut modifier vos données.
  • Vérifiez la somme de contrôle de l'adresse. Les adresses Bitcoin en portent une, et une adresse corrompue échoue au test.
  • Régénérez le code vous-même plutôt que de réutiliser celui qu'on vous a envoyé.
  • Avant de scanner un code dans l'espace public, vérifiez qu'un autocollant n'a pas été collé sur l'original. La manipulation physique en est la forme la plus courante.
  • Lisez le domaine entier de tout lien vers lequel mène un code, et ne vous connectez jamais et ne payez jamais depuis une page atteinte en scannant quelque chose.

Ce que ce site fait différemment

  • Le QR code est construit dans votre navigateur. Rien de ce que vous saisissez n'est transmis, car le site n'a pas de serveur vers lequel transmettre.
  • Après avoir dessiné le code, la page décode l'image qu'elle vient de produire et vous montre ce qu'elle y lit. Si cela ne correspond pas à votre saisie, elle le dit.
  • La politique de sécurité du contenu n'autorise aucune origine externe, si bien que la page ne peut rien charger ni contacter, même par accident.
  • Tout est en fichiers statiques et en source ouverte. Vous pouvez lire chaque ligne, enregistrer la page et l'utiliser hors ligne indéfiniment.

Ne croyez pas ce site sur parole non plus

Tout ce qui précède est une raison de se méfier des générateurs de QR codes, et ceci est un générateur de QR codes. La relecture sur la page du générateur est un confort, pas une preuve : c'est le même code qui a dessiné l'image. La seule vérification qui compte vraiment est celle que vous faites vous-même, sur votre propre appareil, face à votre propre adresse. Faites celle-là.

Questions fréquentes

Un générateur de QR code peut-il modifier mon adresse Bitcoin ?

Oui. Si le code est généré sur le serveur de quelqu'un d'autre, c'est ce serveur qui décide de ce qui entre dans l'image. Il peut renvoyer un code contenant l'adresse de son choix, et l'image aura l'air parfaitement normale.

Comment vérifier qu'un QR code contient la bonne adresse ?

Scannez-le avec l'appareil depuis lequel vous paieriez et comparez le texte décodé à votre adresse en entier. Ne comparez pas seulement les premiers et les derniers caractères, car un attaquant peut les faire coïncider.

Est-il sûr d'utiliser un générateur de QR code en ligne pour une adresse de portefeuille ?

Seulement si le générateur fonctionne entièrement dans votre navigateur et si vous vérifiez le résultat en le scannant. Tout ce qui envoie votre adresse à un serveur vous demande de confier votre argent à ce serveur.

Ce site envoie-t-il mes données quelque part ?

Non. La page est statique et l'encodage s'exécute dans votre navigateur. Vous pouvez vous déconnecter d'internet, recharger, et cela continuera de fonctionner.

Qu'est-ce que le quishing ?

Du hameçonnage qui utilise un QR code au lieu d'un lien. Le code masque la destination, ce qui lui permet d'échapper à la fois aux filtres de messagerie et au réflexe de survoler un lien avant de cliquer. Les autocollants posés sur de vrais codes dans l'espace public en sont la forme la plus répandue.

Comment savoir où mène un QR code avant de le scanner ?

Décodez l'image au lieu de l'ouvrir. Le vérificateur de ce site vous montre la destination sans s'y rendre, et fonctionne sur une photo ou une capture d'écran de n'importe quel code.