MT-Eurythmia / Eurythmia-server

Eurythmia server repository: mods, subgame, configuration, issues tracker, and a few other.
http://eurythmia.langg.net
7 stars 7 forks source link

Serveur piraté ! #107

Closed mgl512 closed 7 years ago

mgl512 commented 7 years ago

Cf mesage de Grosam sur le forum Minetest

Les logs entre la sauvergarde du 5 mai et le 14 mai sont effacés.

Un dossier "worldmods" est apparu sur le serveur. Il contient un dossier qui est vide maintenant, "moddy", mais a pu servir pour l'attaque.

minetest@langg:~/.minetest$ ls -lArt worlds/
total 8
drwxr-xr-x 3 minetest minetest        4096 May 14 00:20 worldmods
drwxr--r-- 9 minetest minetest-admins 4096 May 14 09:02 server

Et un autre là, pas vide:

minetest@langg:~/.minetest$ ls -l worlds/server/worldmods/moddy
total 4
-rw-r--r-- 1 minetest minetest 145 May 14 00:25 init.lua
minetest@langg:~/.minetest$ cat worlds/server/worldmods/moddy/init.lua 
minetest.register_on_prejoinplayer(function(name, ip) return "You are using an unofficial client. Use the official client from minetest.org" end)

Les dossiers worldmods que j'ai trouvé sont remplacés par des fichiers textes. J'ai reboot le serveur.

WE_gui serait la faille qui lui a permis d'exécuter du code LUA. Il est maj sur le dépot.

mgl512 commented 7 years ago

Je n'ai pas vérifié le world.mt du serveur. Mais si Minetest permet d'exécuter les mods qui se trouvent dans un dossier "worldmods" comme cité précedemment sans passer par world.mt, il serait surement bon d'en faire des fichiers appartenants à un compte les rendant impossibles à effacer puisqu'on ne les utilise pas. Comme ça le pirate ne pourrait pas créer un répertoire de même nom et mettre ses mods dedans. En considérant que la casse compte évidemment, qu'il ne puisse créer qu'un dossier au nom unique en minuscules et pas mettre le même en majuscules.

paly2 commented 7 years ago

https://forum.minetest.net/viewtopic.php?f=6&t=17601&p=269578

Pas de dégâts très grave sur le serveur. Le pirate était probablement un white hat. La mod security est maintenant activée (https://github.com/Mynetest/Mynetest-server/commit/a81a5e0a3fe023a199f8a5def90671cab2a2c27a et https://github.com/Mynetest/Mynetest-server/commit/5da8028d2885620a1460cda14dbd9a6bf8e802bb)

BetterToAutomateTheWorld commented 7 years ago

Salut, merci pour la remonté d'information, on a été touché sur MFF-SB par le même soucis, sauf que le mod security n'est pas activable dans notre cas (à cause d'IRC), mais on fix tout de même

paly2 commented 7 years ago

IRC supporte maintenant le mod securiry à condition de le mettre dans les trusted_mods :smiley: depuis minetest-mods/irc@0c900db

matt8fr commented 7 years ago

Getsuga qui était connecter au moment de l'attaque dit avoir eu un message d'erreur lui demandant de telecharger le nouveau client sur minetest.org ! bizzard minetest c'est .net

mgl512 commented 7 years ago

C'était le message du mod que le pirate a installé sur le serveur, qui kickait tout joueur qui se connectait avec le message "You are using an unofficial client. Use the official client from minetest.org". J'avais remarqué ce message de Getsuga en survolant les logs de l'IRC. Je n'en ai rien fait encore. J'en ai juste déduit que le pirate a installé une première fois son mod puis l'a enlevé le temps que Getsuga se reconnecte. Et surtout que son mod semble s'être chargé sans redémarrage du serveur. Le pirate s'y est peut-etre repris à plusieurs fois sur Mynetest. Mynetest a été attaqué 8 heures avant Axinite d'après Sporax.

Je n'aime pas ce dossier "worldmods" qui semble exécuter tout ce qu'on met dedans à chaud et sans avoir besoin de world.mt pour valider les mods. C'est carrément une aide au piratage. "mod secutity" supprime surement la possibilité d'y mettre des trucs mais je préfèrerais que worldmods soit un dossier root dans lequel on ne peut pas entrer ou un fichier comme il l'est actuellement (mais appartenant à l'utilisateur minetest, l'utilisateur piraté).

paly2 commented 7 years ago

Le dossier worldmods réagit exactement comme le dossier mods, à la différence qu'il est placé dans le dossier du monde et n'est chargé que pour celui-ci. Il est chargé lors du démarrage du serveur. Effectivement, il n'a pas besoin de world.mt - ça semblerait absurde. Je l'ai supprimé.

Le pirate n'a pas eu besoin de redémarrage pour register un callback on_joinplayer. Cela peut très bien se faire à chaud (depuis le GUI de WorldEdit, par exemple). Il a ajouté le dossier worldmods pour s'assurer que le callback serait rechargé en cas de redémarrage.