Codes QR : un problème de sécurité grandissant

Les codes à réponse rapide (QR) constituent un format pratique pour stocker toutes sortes d’informations de manière lisible et sécurisée, du moins lorsqu’ils sont correctement implémentés. Avec la pandémie de COVID-19 qui se poursuit, les gouvernements ont récemment mis en place, par exemple, des codes QR pour créer des certificats COVID numériques attestant la vaccination, l’état des tests et d’autres éléments. La technologie QR n’est pas nouvelle, et […]

Écrit par
Julien Maury
Julien Maury
Feb 21, 2022
5 minute read
eSecurity Planet Le contenu et les recommandations de produits sont indépendants de la rédaction. Nous pouvons gagner de l'argent lorsque vous cliquez sur des liens vers nos partenaires. En savoir plus

Les codes à réponse rapide (QR) constituent un format pratique pour stocker toutes sortes d’informations de manière lisible et sécurisée, du moins lorsqu’ils sont correctement implémentés. Avec la pandémie de COVID-19 qui se poursuit, les gouvernements ont récemment mis en place, par exemple, des codes QR pour créer des certificats COVID numériques attestant la vaccination, l’état des tests et d’autres éléments.

La technologie QR n’est pas nouvelle, et les fonctionnalités de sécurité comme l’authentification à deux facteurs (2FA) ou l’authentification multifacteur (MFA) invitent souvent les utilisateurs à générer de tels codes pour sécuriser leur accès aux applications mobiles. Et comme toute autre technologie d’authentification, elle a également attiré l’attention des pirates qui cherchent à exploiter ses faiblesses ; le mois dernier encore, le FBI a mis en garde contre l’utilisation abusive potentielle des codes QR.

Voici comment fonctionnent les codes QR, comment les pirates peuvent les utiliser contre vous et comment vous protéger, vous et votre organisation.

Comment fonctionnent les codes QR en coulisses

Techniquement parlant, un code QR ressemble à un code-barres, mais il contient généralement davantage d’informations. Alors qu’ils peuvent sembler aux yeux des humains n’être qu’un étrange assemblage de pixels noirs sur fond blanc, les machines lisent remarquablement bien ce format.

Les ordinateurs interprètent les codes QR comme des matrices de 0 correspondant aux espaces blancs et de 1 correspondant aux espaces colorés. Comme il ne s’agit pas d’un format lisible par l’être humain, les données ne sont organisées ni de gauche à droite ni de haut en bas. Les trois carrés de l’image générée déterminent l’alignement, tandis que de nombreuses zones ne sont que des paramètres internes utilisés par les lecteurs de codes QR pour se calibrer.

Advertisement

En réalité, seule une infime partie du code QR contient vos informations, et un algorithme mathématique est appliqué pour les rendre redondantes. Les lecteurs de codes QR lisent vos informations par blocs de 8 bits, selon un jeu de caractères spécifique utilisé lors de l’encodage et du décodage.

Malgré leur apparente complexité, les codes QR sont relativement faciles à générer. Par exemple, en Python, vous pouvez utiliser le package QRcode pour créer des codes QR personnalisés :

Image: pip install qrcode && qr “Hello, esecurityPlanet”

L’exemple ci-dessus utilise uniquement du texte simple, mais vous pouvez ouvrir des liens et ajouter des fiches de contact, de sorte que les utilisateurs n’ont plus qu’à scanner votre code QR pour consulter un site web ou enregistrer vos coordonnées sur leur appareil.

Les acteurs malveillants adorent les codes QR

Si les codes QR offrent un excellent moyen de stocker et d’accéder à des informations, ils comportent aussi une part non négligeable de risques.

Codes contrefaits

Comme les codes QR peuvent ouvrir automatiquement des liens, les pirates peuvent s’en servir pour rediriger les utilisateurs vers des sites web falsifiés et ainsi améliorer le taux de réussite de leurs campagnes d’hameçonnage, par exemple. Et puisque les codes QR ne peuvent pas être lus par les humains, les utilisateurs ne pourront pas identifier les codes malveillants que les acteurs malveillants peuvent substituer aux codes légitimes.

Détournement de QRL

Les connexions par QR (QRL) sont des méthodes d’authentification fondées sur les codes QR, conçues pour améliorer l’expérience de connexion des utilisateurs. Plutôt que de saisir votre nom et votre mot de passe, vous scannez un code QR.

Si cette méthode permet de se connecter rapidement et facilement à des sites web, une mauvaise implémentation, comme le fait de ne pas régénérer les codes QR à chaque connexion, crée des vulnérabilités. Les pirates peuvent recourir à des techniques furtives telles que le détournement de QRL pour initialiser une session QR, cloner le code QR et rediriger les victimes vers une page d’hameçonnage, ce qui leur permet finalement de voler les accès.

Consultez les principaux outils de gestion des vulnérabilités

Advertisement

Le piratage au moyen de codes QR malveillants

L’excellente ergonomie des codes QR explique pourquoi ils sont omniprésents, mais elle élargit également la surface d’attaque des logiciels et appareils obsolètes.

Comme les codes QR peuvent contenir beaucoup d’informations, ils offrent largement assez d’espace pour y insérer du code malveillant, comme dans cet exemple de Wikipedia :

QR encoding

Les attaquants peuvent encoder des charges utiles piégées dans des codes QR, en attendant que les utilisateurs les scannent pour exécuter le logiciel malveillant.

Par ailleurs, de nombreux packages et bibliothèques open source peuvent générer des codes QR malformés et encoder des exploits courants, comme le cross-site scripting (XSS), l’inclusion de fichiers locaux (LFI), le parcours de répertoires ou l’injection SQL.

À lire également : Comment se défendre contre les vulnérabilités courantes de la sécurité informatique

Des implémentations défectueuses peuvent être dévastatrices

En 2020, Omer Shafiq a expliqué comment il avait usurpé un code QR chiffré contenant des rapports de tests COVID censés être signés numériquement et infalsifiables.

L’architecte logiciel a démontré que cela pouvait être réalisé dans un délai raisonnable à l’aide d’outils open source permettant d’inspecter l’application utilisée pour générer et valider les codes QR.

Même si cette opération peut ne pas être à la portée des personnes sans connaissances techniques, l’analyse a révélé que l’application utilisait des clés de chiffrement codées en dur ainsi qu’un chiffrement AES symétrique, ce qui permettait à une personne de générer des codes QR vérifiables après quelques manipulations.

Certains experts estiment que les codes QR sont intrinsèquement défectueux. Par ailleurs, Sophos a révélé en 2019 que le créateur des codes QR n’avait pas envisagé toutes leurs implications en matière de sécurité et avait même déclaré que « les codes QR doivent faire l’objet d’une refonte de leur sécurité ».

Advertisement

Mais cela va peut-être plus loin que nécessaire ; le problème réside dans l’utilisation et l’implémentation.

Mesures de protection contre le piratage des codes QR

Les développeurs ne doivent pas utiliser de codes QR statiques pour les connexions des utilisateurs ou lors de transactions financières, car les pirates peuvent exploiter leurs vulnérabilités pour intercepter des paiements ou dérober des identifiants. Ils doivent plutôt utiliser des codes QR dynamiques et obliger les utilisateurs à les régénérer, même si le même utilisateur se connecte une deuxième fois.

Outre la prévention classique de l’hameçonnage, la sensibilisation à la sécurité doit inclure les codes QR et recommander aux utilisateurs de ne pas communiquer leurs informations personnelles sur les pages ouvertes par ces raccourcis, sauf si la source est fiable. Vérifiez attentivement l’URL, à la recherche de la moindre faute d’orthographe et, dans la mesure du possible, n’accédez pas directement à un site web et ne téléchargez pas d’application depuis un code QR. Et ne téléchargez pas d’application de lecture des codes QR : l’appareil photo de votre téléphone peut probablement remplir cette fonction par défaut.

Même si les codes QR ne sont pas lisibles par les humains, les informations sensibles doivent être chiffrées afin de protéger la vie privée des utilisateurs, et les développeurs doivent suivre les bonnes pratiques en matière de développement sécurisé.

À lire ensuite : la meilleure formation de sensibilisation à la cybersécurité pour les employés en 2022

Julien Maury

eSecurity Planet contributor Julien Maury writes about penetration testing, code security, open source security and more. He is a backend developer, a mentor and a technical writer who enjoys sharing his knowledge and learning new concepts.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Propriété de TechnologyAdvice. © 2026 TechnologyAdvice. Tous droits réservés

Divulgation publicitaire : Certains des produits qui apparaissent sur ce site proviennent d'entreprises dont TechnologyAdvice reçoit une compensation. Cette compensation peut influencer la façon dont les produits apparaissent sur ce site, notamment l'ordre dans lequel ils apparaissent. TechnologyAdvice n'inclut pas toutes les entreprises ou tous les types de produits disponibles sur le marché.