>> La recherche se fait sur tous les élements du jeu Minecraft <<
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

Minecraft Java : Faille de sécurité sur la 1.8

Le 20/09/2018 à 17h13
Aidez nous a financer le site: Joignez l'utile à l'agréable et profitez d'FR-Minecraft sans publicités en devenant VIP ! Ou ajoutez FR-Minecraft dans vos exceptions, nous n'abusons pas des pubs

Le développeur Punkeel a publié sur son blog un article détaillant une faille de sécurité présente de la version 1.8 à la version 1.8.9 de Minecraft Java. Celle-ci consiste à détourner le fonctionnement du mécanisme permettant de charger un ressource pack serveur en allant chercher un fichier qui n'est pas forcément dans le dossier server-resource-packs et qui n'est pas forcément un zip.

Cette faille peut permettre à un serveur de deviner si vous exécutez Windows, mac OS ou linux, via les fichiers spécifiques à ces OS que vous auriez. Il peut également deviner votre nom d'utilisateur local et savoir si vous avez installé tel ou tel programme (ou tel ou tel mod). En revanche cette faille ne permet PAS au serveur attaquant de lire le contenu des fichiers de votre ordinateur.

Pour vous protéger de cette faille, vous avez 3 possibilités :
  • Utiliser une version supérieure du jeu, au minimum la 1.9. Il faut savoir que vous serez protégé avec les versions supérieures même si le serveur accepte les clients 1.8
  • Activer le chargement des ressource pack sur le serveur. En faisant ça, vous aurez un freeze de chargement de pack lorsqu'un serveur découvrira un fichier que vous possédez
  • Utiliser le mod Resource Exploit Fix qui permet de refuser toute tentative d'exploitation de la faille et de vous alerter si un serveur souhaite le faire.


Pour comprendre la faille, il faut d'abord savoir comment fonctionne le système de ressource pack serveur dans Minecraft Java. Attention, cette partie sera très technique.

Le serveur va tout d'abord envoyer au client l'adresse de téléchargement du ressource pack, ainsi qu'un hash qui ne nous intéressera pas pour cet article.
En réponse, le client renverra le hash, ainsi que l'information si le pack a bien été téléchargé, si le téléchargement a échoué, ou si l'utilisateur a refusé le téléchargement de ressource pack (correspond aux réglages définis pas l'utilisateur sur le serveur.


Ci dessous un récapitulatif de ce mécanisme.


Néanmoins, ce qui est important, c'est le cas ou le pack est déjà téléchargé et qu'il a juste a être chargé par le client. La démarche est la même, sauf que l'URL ne commencera plus par http(s):// mais par level:// et que les résultats que peut émettre le client sont maintenant "accepted" ou "failed download". Par ailleurs, la signification des codes changent. Voici la comparaison entre le sens des différents code :



Ainsi, pour charger un pack, l'échange client-serveur sera de ce style :



C'est là ou se situe la faille. La faille est due à 2 problèmes :
  • Il est possible de mettre "../" dans le champ "URL" afin de remonter plus haut que le dossier server-resource-packs et ainsi parcourir toute l'arborescence
  • Les résultats accepted ou failed downloadne correspondent pas à si les ressources du pack ont bien été chargées dans le jeu. Ils correspondent au fait que le jeu a bien reconnu la ressource indiquée dans le champ URL comme étant un fichier. Ainsi, même un joueur qui a désactivé ses ressource pack pourrait renvoyer le code "accepted"!!
Voici un exemple d'échange ou je recherche si je dispose à la racine de mon disque dur un fichier appelé frm.txt. Voilà à quoi ressemblera l'échange :


Ainsi, on peut voir qu'il suffit de répéter cet échange en changeant juste l'URL pour savoir si un fichier existe sur le disque dur. J'ai ainsi créé un plugin minimaliste qui recherche les noms de fichiers .txt à 3 caractère se trouvant à la racine de mon disque (j'en ai créé un appelé frm.txt) lors de l'exécution de la commande /start.

On peut voir que le fichier est trouvé de cette manière :


A noter que avec la 1.9, ou avec le mod évoqué plus haut, le client vérifiera si l'adresse contient la chaine de caractère "..". La 1.9 renverra failed download, le mod ne renverra rien.
Cet article a été publié par franswa, le 2018-09-20 17:13:48. Source
Dernière modification par  Tronics le 21/09/2018 à 1:43.
Partager :
Commentaires de la news Minecraft
Minecraft Java : Faille de sécurité sur la 1.8 :
Tronics (administrateur)
le 21/09/2018 à 02:12
Merci pour cette article aussi passionnant que complet et précis !!!
Je m'étonne qu'une faille aussi basique ai pu passé, c'est quand même la base de la base, c'est clairement le truc de base a vérifier, c'est vraiment une erreur de débutant :-(
Et m'étonne aussi du patch, qui lui aussi est un patch de débutant: overreaction, maintenant si votre pack s'appel "Mon super pack... ou pas.zip" il sera refusé, car il y a ".." dans le nom... ca aussi ca fait amateur :-/
Ce genre de problème se rencontre aussi très souvent sur les sites internet, mais je vous déconseille de le tester sur FR-Minecraft sinon vous allez vous faire blacklister automatiquement et immédiatement ;-)

Mais reprocher de ne pas avoir pris en compte ce problème dès la conception est une chose, mais la vrai question devrait plutot etre: comment se fait-il que aujourd'hui encore, en 2018, le terme ".." soit toujours automatiquement pris en compte PAR DÉFAUT dans la plupart des languages, cela devrait être une option avancée, pas un fonctionnement de base ! Car j'ai souvent vu des failles de sécurités a cause de ce truc la, mais j'ai très rarement vue de vrai cas d'utilisation utile.
TheJedi7_offline (anonyme)
le 23/09/2018 à 11:06
Étant donné que les slashs sont interdits dans les noms de pack (du moins via l'outil renommer là où 99% des gens renomme leur pack), il aurait été plus judicieux de compter les slashs que les points, et c'est sûrement plus pratique pour compter le nombre de fois où le lien remonte le chemin. Ou alors tout simplement côté client interdire les liens qui, APRÈS traduction, sorte du dossier, ou n'utilisent pas l'extension .zip . Parce là effectivement c'est un bug réglé pour un autre créé. Est-ce qu'ils y prêteraient attention si c'était posté comme un bug, qui finirait comme mineur et délaissé des années ?
teresrres (anonyme)
le 23/09/2018 à 11:11
c'est à dire ne pas tester sur frminecraft? level:// ?
franswa (rédacteur)
le 23/09/2018 à 11:31
@TheJedi7_offline et @Tronics en effet, en 1.9, un ressource pack serveur contenant ".." ne devrait pas réussir à être chargé. Néanmoins, l'extrait de code source que j'ai sur l'article référence est un code 1.9. Rien ne nous dit qu'ils sont pas repassé dessus sur une version ultérieure. Néanmoins, je n'avais pas trop la foi de tester, et on sortait du cadre de la news.
@teresrres non, le ../ pour remonter sur le serveur et accéder au code source du site...
le 23/09/2018 à 13:58
Tronics, la menace du « mais je vous déconseille de le tester sur FR-Minecraft sinon vous allez vous faire blacklister automatiquement et immédiatement » fais très amateure car c'est une faille que les serveurs exploitent contre les clients et pas l'inverse.
le 23/09/2018 à 14:25
@Lattyange : Lol, ha bon ?
Tu est vraiment sûr d'avoir compris qu'il parlé de Web et pas de serveur MC.
Un serveur web tu y accède par une Url (donc un chemin). La plus part des serveur Web qui interpréte les requête considère ce qui suis le domaine comme un chemin relatif à l'emplacement du dossier serveur racine.
(Bien sûr tout dépend des techno Apache, Nginx, Asp.. et des configuration, ce ne sera par exemple pas forcement vrais avec un serveur Node.js simple.. etc. après tout est possible)

SI non merci pour cette article, encore bon courage à l'équipe Fr-Minecraft, si je puis dire ! ;)
le 24/09/2018 à 06:00
Merci pour cette news , ca fait du bien de voir qu'ils font des erreurs de debutants ^^
au fait Tronics , j'avais deja essayé et me suis fait blacklisté , mais pas pour ce que tu pense , mais plutot car j'avais posté du code powershell dans le cadre d'un besoin d'aide :/
Est ce que tu pense que tu peut rajouter une option " nous contacter " sur cette vilaine page rouge ?

Vous devez être connecté pour laisser un commentaire.