Une faille béante dans Minecraft 1.8.x exploitable par les serveurs

DiscowZombie

Développeur
Staff
Modérateur
Support
2 Mars 2017
2 656
1
930
298
Alsace
www.discowzombie.fr
Avis de non-responsabilité: L'usage de cette faille est illégal, vous vous introduisez dans l’ordinateur de vos joueurs, ce qui est une violation de la vie privée. Personne ne pourra être tenu responsable de l’usage éventuel que vous ferez de cette faille si ce n'est votre propre personne. Vous avez été prévenu ; mon but à moi étant simplement de sensibiliser aux risques.

Bonjour,

aujourd'hui je vous présente une faille béante de Minecraft 1.8.x, très peu connu mais qui vous a peut-être déjà affecté sans que vous ne le sachiez !

Cette faille permet à n’importe quel serveur Minecraft de vérifier si des fichiers existent sur votre ordinateur (tout votre ordinateur). Cette dernière donne accès au nom de chaque fichier (pas à leur contenu et heureusement...).

Il faut savoir que cette faille est présente dans toutes les versions 1.8 mais a été patché silencieusement par Mojang dès Minecraft 1.9. Cependant, et au vu de l’usage massif de la 1.8, il m'a semblé important de faire ce sujet, même si la faille existe donc depuis plus de 4 ans !

Le principe de fonctionnement de cette faille est assez simple ; le serveur envoie un packet à votre client (un packet c'est comme un petit message contenant une instruction que votre client va lire et appliquer ; c'est comme cela que fonctionne la communication entre votre client et les serveurs Minecraft. Vous envoyez des centaines de packet par heure au serveur, rien d’anormal) et demande normalement si un pack de ressource existe (donc si un fichier portant son nom existe - enfin ça c'est le fonctionnement prévu par Mojang). Sauf que le serveur n'est pas limité au dossier de ressource-pack, en 1.8, le serveur peut demander au client si un fichier existe n’importe où dans l'ordinateur. Ce dernier va essayer de charger le fichier et envoyer la réponse au serveur (toujours via un packet) pour lui dire s'il a réussi, si le fichier existe mais qu'il n'arrive pas, etc... Le serveur reçoit ensuite la réponse et sait ou non si le fichier existe. Ainsi, par de multiples packets, le serveur peut avoir une idée de l'organisation de vos dossiers et fichiers ce qui lui permet notamment de vérifier votre système d'exploitation (certains fichiers étant spécifiques à Windows, d'autres à Linux, etc...) mais aussi de chercher dans vos Mods d’éventuelles choses compromettantes ou même d'avoir une idée des utilisateurs sur votre ordinateur (avec des informations personnelles) et dans le pire des cas de récupérer votre mot de passe car vous avez un fichier qui porte son nom sur votre bureau...

Maintenant que nous avons vu la théorie, et nous n'irons pas plus loin, petite démonstration. Pour l'occasion, j'ai développé un petit plugin (20 lignes de code, la preuve que c'est enfantin...) qui fonctionne avec ProtocolLib et qui vérifie à la racine de mon dossier minecraft (c'est-à-dire à un endroit ou le serveur n'est pas censé accéder), si un fichier espion.txt existe.
Lorsque le fichier, existe :
img1.PNG


Voici le retour envoyé au serveur :
img2.PNG

(c'est le message en bleu qui est important ; celui en doré c'est juste pour faire peur :P)
Ici on voit bien que j'ai reçu ACCEPTED, c'est-à-dire que le fichier existe et en plus, il l'a chargé dans mon Minecraft. (SUCCESSFULLY_LOADED).

Si je supprime le fichier, la réponse envoyée au serveur change :
img3.PNG

FAILED_DOWNLOAD, c'est-à-dire que le fichier n'existe pas !

Maintenant que vous êtes convaincu des risques représentés par cette faille (ou alors vous êtes inconscient ?), comment s'en prémunir ?
C'est plutôt simple, il suffit d'utiliser une autre version que la 1.8 (la plupart des serveurs assurent la compatibilité avec des versions supérieures). Si vous souhaitez continuer d'utiliser cette version et que vous fréquentez des serveurs en lesquelles vous n'avez pas spécialement confiance, vous pouvez utiliser ce Mod développé par Sk1er.

Crédit : Merci à Sk1er, un youtuber anglais qui à l'origine de la publication de cette faille (du moins c'est grâce à lui que je l'ai découvert) donc gros merci à lui !
 
Salut,

Tu as dis que le bug avait été patch en 1.9, mais qu'arrive-il si je suis en 1.9 et je me connecte à un serveur 1.8 qui accepte la 1.9 ?
pour cette faille ce n'est pas la version du serveur qui est importante mais celle du client. C'est-à-dire qu'à partir du moment où tu es en 1.9, tu ne peux pas être affecté, même si le serveur est en 1.8. Ceci est due au fait que ton client renverra systématiquement la réponse que le fichier n'existe pas si le serveur essaye d'accéder à un fichier en dehors de ce qu'il est autorisé à accéder (c'est-à-dire en dehors des ressources-pack ou maps).
 
Salut,

Salut,
Les versions avant la 1.8 sont-elles également concernés par ce problème ?
non elles ne le sont pas. Cette faille fonctionne avec les packets d'envoi et de réception de ressource-pack, packets qui sont apparus en 1.8 (donc absolument aucun risque pour les versions inférieures).