Quand un QR code dissimule un malware

Des experts ont découvert une technique dissimulant un malware dans un QR code. Les cybercriminels se servent de plusieurs couches de camouflage dont la stéganographie.

En quelques années, le QR code s’est démocratisé pour obtenir des informations supplémentaires sur un produit ou services ou s’authentifier lors de la pandémie du Covid. Mais comme tout outil numérique, il intéresse les cybercriminels selon une récente analyse des experts de la société Socket. Ils ont en effet découvert « un mécanisme de porte dérobée sophistiquée », qui, lorsqu’il est intégré à l’application ou au site web d’une entreprise, vole les mots de passe stockés dans les cookies des visiteurs via un code intégré dans les QR codes.

Le paquet malveillant, fezbox, est déguisé en bibliothèque d’utilitaires et comporte « plusieurs couches d’offuscation » dont la stéganographie. Cette technique consiste à intégrer des données secrètes dans un support (exemple du texte dans une image) qui sert de couverture pour éviter la détection. « La stéganographie consiste à cacher un fichier secret à la vue de tous, et les QR codes sont parfaits pour ça », a écrit Olivia Brown, chercheuse chez Socket. « L’utilisation d’un QR code pour accroître la dissimulation est une astuce assez créative de la part du pirate. »

Plusieurs couches d’offuscation

Le paquet exploite npm, le gestionnaire de paquets populaire pour JavaScript, et comporte trois couches de camouflage : une chaîne inversée, un QR code et une charge utile cachée. Le mécanisme de diffusion du malware récolte les noms d’utilisateur et les mots de passe à partir des cookies du navigateur, en utilisant un code dissimulé dans un QR code intégré particulièrement dense en données et difficile à lire. Fezbox se présente comme une bibliothèque d’utilitaires JavaScript/TypeScript regroupant des « fonctions d’aide courantes », organisées en modules fonctionnels afin que les utilisateurs puissent faire leur choix. Dans le fichier README rédigé en chinois qui l’accompagne, on trouve des expressions comme « types TypeScript », « haute performance » et « tests ». Il décrit aussi un module QR code capable de générer et d’analyser des codes et de charger automatiquement les composants nécessaires au programme. Cependant, il ne mentionne pas que le simple fait d’importer la bibliothèque déclenche un processus back-end qui récupère et exécute du code caché dans une image QR code distante. Le code est minimisé (compressé) et caché dans de plus grands blocs d’instructions « no-operation (no-op) » apparemment inoffensives qui lui permettent de contourner les contrôles de sécurité. Une condition spécifique dans le code vérifie si l’application fonctionne dans un environnement de développement. Si c’est le cas, « le code ne fait rien », explique Mme Brown, soulignant qu’il s’agit d’une tactique de dissimulation classique. « Le pirate ne veut pas risquer d’être pris dans un environnement virtuel ou tout autre environnement hors production, il peut donc souvent ajouter des garde-fous pour décider du moment et de la manière dont son exploit s’exécute », a-t-elle ajouté.

Après un délai de 120 secondes, le paquet télécharge et exécute le code à partir d’un QR code. Ce code lit un cookie à partir de « document.cookie », récupère le nom d’utilisateur et le mot de passe qui s’y trouvent, s’ils existent, puis inverse la chaîne (ainsi, « password » devient « drowssap »). L’inversion est une « astuce classique pour échapper à l’analyse », rappelle la chercheuse, car elle contourne les outils d’analyse qui recherchent les URL, mais pas nécessairement leurs versions inversées. Si le cookie contient à la fois le nom d’utilisateur et le mot de passe, le package l’exfiltre via une commande Https Post ; sinon, il « ne fait rien et se ferme discrètement », a-t-elle encore expliqué. Si les principales fonctions utilitaires semblaient officielles, le modèle dissimulé « représente une menace critique pour la sécurité, car il exécute du code à distance avec des caractéristiques furtives », a-t-elle poursuivi. Celle-ci note toutefois que la plupart des applications ne stockent plus les mots de passe dans les cookies, il est donc difficile de déterminer dans quelle mesure ce logiciel malveillant pourrait être efficace.

Une « escalade notable »

Le paquet a été supprimé de GitHub et répertorié comme malveillant. Mais il est révélateur d’une exploitation plus large des QR codes et des fichiers audio et vidéo par des acteurs malveillants dont les techniques deviennent de plus en plus furtives. En cachant du code exécutable dans un QR code, les attaquants profitent de la confiance des développeurs dans les outils d’analyse QR. « L’usage des QR codes s’est largement développé pendant la pandémie et nous ne pouvons plus revenir en arrière », a fait remarquer David Shipley de Beauceron Security. « Les attaquants font preuve d’une grande ingéniosité dans ces dernières attaques et rien n’indique que cela va s’arrêter de sitôt », a-t-il ajouté.

Parlant plutôt d’une « escalade notable », il a exhorté les développeurs à prendre conscience que les cybercriminels cherchaient également à s’emparer de leurs précieux secrets. Si, pendant longtemps, les campagnes de phishing ont permis de tromper facilement les gens ordinaires, l’hameçonnage des développeurs est bien plus profitable pour les cybercriminels, « car ils n’auront plus jamais besoin d’aller à la pèche aux identifiants ». « Pour les équipes de sécurité et de développement, la clé réside dans une culture de la sécurité qui enseigne aux codeurs à être prudents et qui garantit la présence humaine à tout moment dans le processus de révision », a recommandé M. Shipley.

chevron_left
chevron_right