Annonce du 25. juillet 2016

World of Warcraft : une simple ligne de code peut vous coûter cher

Un bug dans le code du jeu massivement multijoueurs World of Warcraft permet à un attaquant de prendre le contrôle de l'interface de gestion d'un joueur ciblé. L'attaquant doit réussir à convaincre cette cible d'exécuter une ligne de commande dans sa fenêtre de discussion.

Depuis quelques jours, une nouvelle arnaque aux pièces d’or/items est apparue sur le jeu en ligne World of Warcraft.  Cette attaque repose sur un bug dans le code WoW.

La nouvelle attaque

Imaginons la situation suivante : un personnage dans le jeu apparait comme être membre d’une guilde populaire, il aborde votre personnage dans le jeu et promet de partager des items sympathiques, comme des montures, des armes rares, etc. Le piège : l’attaquant vous convainc d’entrer une seule ligne de commande dans la fenêtre de discussion :   
/run RemoveExtraSpaces=RunScript
RemoveExtraSpaces et RunScript sont des fonctions légitimes et des parties de l’API LUA WoW. Alimenter la fenêtre de discussion avec cette seule ligne de code modifie le comportement de l’interface WoW.  
L’interface WoW (par exemple : bar d’action, messagerie et autres éléments graphiques … tout ce qui est en 2D) et également les add-ons (par exemple : améliorations de l’interface) sont écrits dans le langage de script LUA.  

Que fais exactement la commande ?

•    /run est une commande qui interprète le texte comme un script LUA  
•    RemoveExtraSpaces est une fonction intégrée qui supprime les espaces non nécessaires du texte  
•    RunScript est une fonction qui exécute le texte comme un code LUA (similaire à la commande /run)  

Pourquoi est-ce une menace ?

La fonction RemoveExtraSpaces est appelée dans tous les nouveaux messages chat qu’un joueur reçoit. La commande mentionnée ci-dessus remplace la fonction RemoveExtraSpaces avec la fonction RunScript, qui est appelée « hooking » dans le développement de logiciel. Une fois que les fonctions originales sont écrasées, tous les nouveaux messages chat sont interprétés comme un code LUA.
En entrant ce code, à défaut de gagner des items magiques, le joueur se met en position de victime.   
A l’aide de cette commande, l’attaquant peut alors prendre le contrôle de l’interface de la victime à distance. Il lui suffit d’envoyer un script adapté. 

Persistance et commandes cachées

Après que la victime ait ouvert la porte dérobée de son interface, l’attaquant envoie le message suivant par la messagerie :

Si une ligne de commande a été exécutée, le message ci-dessus ne sera pas visible par la victime mais sera immédiatement exécuté.  Le fait que la fonction de messagerie instantanée ne fonctionne plus peut éveiller les soupçons de la victime et peut-être même cela lui fera redémarrer le jeu. Nous pensons que l’attaquant agit plutôt rapidement pour « résoudre le problème » en envoyant la commande ci-dessus qui établit un nouveau canal de communication. Ensuite, il réactive probablement la fonction de messagerie instantanée pour la victime.  

Pour comprendre l’intention de ce code, il faut savoir que les add-ons WoW ont la possibilité de communiquer par un réseau caché (local ou à distance). Ce réseau est établi via l’utilisation des évènements  « CHAT_MSG_ADDON ».

Le script crée un frame (ligne 2; z) auquel différentes propriétés peuvent être réglées. Le script s’enregistre pour l’évènement “CHAT_MSG_ADDON” avec un préfixe spécifique  (ligne 6 and 25). Uniquement la personne qui connait le préfixe choisi est capable de contrôler secrètement l’interface détournée de la victime. C’est comparable à un mot de passe pour une porte dérobée.

A chaque fois que l’interface détournée reçoit un évènement “CHAT_MSG_ADDON” avec le préfixe secret donné, le code sera exécuté silencieusement et ne sera pas visible pour la victime. Conclusion: aussi longtemps que l’attaquant ne veut pas que vous voyez les actions qu’il exécute sur votre compte, il ne va pas vous montrer ce qu’il se passe !
 
Même si nous parlons d’add-ons qui peuvent communiquer en mode protégé, un joueur attaqué n’a pas besoin d’avoir d’add-ons installés pour que l’attaque réussisse et c’est un nouveau développement des attaques WoW “dans le jeu”.
 

Même si nous parlons d’add-ons qui peuvent communiquer en mode protégé, un joueur attaqué n’a pas besoin d’avoir d’add-ons installés pour que l’attaque réussisse et c’est un nouveau développement des attaques WoW “dans le jeu”.

Quel mal peut être fait?

Du moment que les attaquants ont l’accès complet à l’interface de la victime, il peut regarder si la victime est localisée sur la carte virtuelle pour l’approcher dans le jeu, informations qui n’est normalement pas disponible sur les autres joueurs.

Dans WoW, les joueurs ont la possibilité de commercer des items entre eux. Pour cela, les deux personnages doivent être à proximité et ensuite échanger les items. Si l’attaquant connait l’emplacement du personnage de la victime, il peut alors ouvrir à distance une fenêtre de commerce, ajouter des items et/ou de l’or puis appuyer sur “Accepter la transaction”. Il peut piller la victime.

Notre scenario a décrit une attaque par réseaux sociaux, couplée à une attaque technique. Des clients manipulés peut être abusés pour envoyer des messages convaincants à d’autres joueurs, par exemple à des membres de guilde, des amis, etc. pour infecter encore plus de joueurs avec ce script, simple mais efficace. Nous faisons en général confiance aux messages d’amis, de collègues.

Comment puis-je me protéger?

N’entrez aucun code de script dans votre fenêtre de messagerie ! Mettez en doute toutes les requêtes pour entrer un quelconque message dans votre fenêtre de messagerie.

Dans l’exemple donné, nous avons parlé d’un personnage “dans le jeu” qui attaque, qui appartient à une guilde populaire. Bien, il se positionne comme un membre d’une guilde populaire mais ne l’est pas. Il a choisi une guilde réputée et a copié ses noms, remplaçant le petit “L” dans ses noms par la lettre majuscule “I”. Vous devez déjà avoir connu des erreurs typographiques comme celles-ci dans les attaques d’hameçonnage.  

De plus, soyez prudent lors du téléchargement d’add-ons d’un parti tiers, utilisez des sites internet de confiances et populaires, gardez vos add-ons à jour. Il est possible que quelqu’un ait ajouté une ligne de code et l’utilise comme véhicule pour une attaque. Un problème similaire est apparu en 2014 lorsque « ElvUI Backdoor » fut découvert dans un add-on.

Le bug lui-même ne peut être corrigé que par Blizzard. Ils doivent s’assurer d’écraser le fait que ses fonctions spéciales soient possibles.

Lors de la création de cet article, Blizzard a lancé une pré-release pour l’add-on à venir « Legion ». Ils ont réagi aux attaques au script et ont implémenté un message d’alerte après qu’un script soit entré mais avant qu’il soit exécuté :

 

Sélectionner « Yes » désactive le message en permanence, même un redémarrage ne les réactive pas – la question n’apparait plus. Pour le réactiver, il faut supprimer une ligne de code dans la configuration … seulement la ligne suivante :
Le code qu’il faut supprimer :
SET AllowDangerousScripts "1"
File: config-cache.wtf
Path: World of Warcraft\WTF\Account\<ACCOUNTNAME>\


Annonce du 25. juillet 2016