Tous les articles

Serveurs de jeu gratuits : pourquoi ils sont détournés, et comment un hébergeur s’en sort sans punir les joueurs

Toute offre d’hébergement gratuite finit par rencontrer le même visiteur : quelqu’un qui ne veut pas un serveur de jeu, mais un ordinateur et une connexion réseau que quelqu’un d’autre paie. Ce n’est pas l’histoire d’une mauvaise semaine dans une entreprise. C’est un schéma aussi vieux que l’hébergement gratuit, et le comprendre explique pourquoi les offres gratuites ont des limites, pourquoi certaines disparaissent, et pourquoi un hébergeur doit parfois refuser une demande qui a l’air innocente.

Cet article est le pendant général de notre propre récit sur deux serveurs gratuits détournés en proxy. Celui-là raconte ce qui nous est arrivé. Celui-ci explique l’économie qu’il y a derrière. Nous ne décrirons pas comment nous détectons les abus, parce qu’une règle de détection publiée est une règle de détection contournée. Nous décrirons le problème et les choix de conception auxquels tout hébergeur honnête fait face.

Ce que les gens essaient de faire avec un serveur gratuit

Les objectifs sont banals et commerciaux. Un serveur gratuit offre un processeur, de la bande passante, une adresse qui n’est pas la tienne, et aucune facture. C’est utile pour :

  • Le minage de cryptomonnaie. De la puissance de calcul gratuite transformée en argent. Des chercheurs en sécurité ont documenté de grosses campagnes contre les offres gratuites de plateformes cloud et d’intégration continue. L’article de BleepingComputer sur une recherche de Sysdig décrit un acteur surnommé Purpleurchin, avec 300 comptes sur GitHub, 2 000 sur Heroku et 900 sur Buddy.works, qui faisait tourner des conteneurs de minage et passait plus d’un million d’appels de fonctions par jour.
  • Les relais et les proxys. Vendre ou utiliser le trafic d’autres personnes via une adresse qui n’est pas la sienne : pour aspirer des sites, contourner des blocages, se cacher. Le serveur est la porte de sortie ; c’est la réputation de l’hébergeur qui paie quand cette adresse finit sur des listes de blocage.
  • Héberger des choses qui ont besoin d’une adresse propre pendant quelques jours, comme des pages de phishing ou des serveurs de commande de malwares, abandonnées dès que l’adresse est signalée.
  • Attaquer les autres, avec des inondations de trafic ou des scans, en utilisant la bande passante de l’hébergeur.

Rien de tout ça n’a besoin d’un jeu. Le serveur de jeu n’est que la forme que prend l’offre gratuite.

Pourquoi le gratuit en particulier

Le schéma se lit facilement dans les chiffres de l’économie. Quand un service ne coûte rien et ne demande rien, le coût d’essayer est nul, et un coût nul passe à l’échelle. Si un compte sur cent s’en sort quelques jours avec un mineur, l’abuseur a gagné de l’argent et n’a rien perdu. L’équipe anti-abus de Heroku l’a dit ainsi à Black Hat USA 2020, cité par The Register dans son récit de la fin de l’offre gratuite : « If you have a free service, a free trial, or any offering that has an angle to extract value, somebody is already trying to figure out a way to make money off of it. » (en français : si tu as un service gratuit, un essai gratuit, ou n’importe quelle offre qui permet d’en tirer de la valeur, quelqu’un cherche déjà comment en tirer de l’argent.) Le directeur général de Heroku, Bob Wise, a dit que ses équipes dépensaient « an extraordinary amount of effort » (un effort extraordinaire) à gérer la fraude et les abus des offres gratuites, et ces offres ont pris fin le 28 novembre 2022. Les abus n’étaient pas le seul facteur d’une telle décision, mais c’en était un, et il a été énoncé.

Pour un petit hébergeur, la même arithmétique est plus dure : les abus n’ont pas besoin d’être fréquents pour coûter cher. Un seul serveur qui relaie du trafic peut faire mettre une adresse sur liste noire, ce qui pénalise tous les clients honnêtes du réseau. Un seul mineur peut ralentir ses voisins. Et un incident coûte le temps d’une personne, qui est la ressource la plus rare d’une petite entreprise.

Pourquoi bloquer le trafic entrant n’est pas la réponse

Le réflexe courant est de dire « il suffit de fermer les ports ». Ça protège contre les attaques qui arrivent de l’extérieur. Ça ne fait rien contre un programme qui ouvre lui-même la connexion, de l’intérieur, vers un service d’Internet qui relaie les choses en retour. C’est ainsi que fonctionnent les logiciels de tunnel, et beaucoup de services de tunnels sont légitimes et très utilisés pour le développement.

Un pare-feu empêche les inconnus d’atteindre le serveur de jeu, mais le serveur de jeu ouvre lui-même un tunnel sortant vers un service de tunnels public, que les inconnus peuvent joindre

Le contrôle utile est donc celui de la sortie : ce à quoi un serveur gratuit a le droit de se connecter, en quelle quantité et pendant combien de temps. Un serveur de jeu doit parler à ses joueurs et à quelques services (mises à jour, système de comptes du jeu). Il n’a pas besoin de joindre tout Internet ni les autres machines du réseau de l’hébergeur. La façon dont un hébergeur trace cette ligne est là où va l’effort de conception, et c’est la partie que nous ne détaillerons pas.

BD : le lama ferme la porte d’entrée, mais un gobelin se réjouit car le serveur l’a appelé lui-même, alors le lama décide de surveiller la sortie

Ce qu’un hébergeur peut faire, au niveau des principes

Sans donner de recette, les approches saines partagent quelques idées.

Rendre l’abus moins rentable plutôt que chercher à prouver l’intention. Un petit plafond de ressources, une offre qui s’arrête si elle n’est pas utilisée, et des limites adaptées à un jeu et pas à une machine de minage retournent l’économie contre l’abuseur sans avoir besoin de lire dans les pensées de quiconque.

Partir du principe que le fichier ment. Dans notre cas, un serveur de lobby fonctionnel avec une seule classe modifiée a passé tous les contrôles visibles. Le nom d’un fichier, le nom d’un serveur et ce qu’affiche la console en disent peu. La posture honnête est de considérer que ce qu’un client téléverse est du code non fiable, qui tourne dans une boîte qui ne peut pas nuire aux autres.

Isoler, puis observer. Mettre chaque serveur dans son propre conteneur avec des limites, pour qu’un mauvais serveur n’affecte que lui-même, puis surveiller l’usage des ressources et le comportement réseau à la recherche de schémas qui ne ressemblent pas au jeu. Une charge constante inhabituelle, des binaires inattendus, des connexions vers des services qu’un jeu n’utilise jamais : des signaux qui méritent le regard d’un humain, jamais un verdict à eux seuls.

Garder un humain dans la boucle. Les règles automatiques produisent des faux positifs, et un faux positif, c’est un vrai joueur qui perd un serveur. La bonne réponse à un cas douteux est de le regarder et, si besoin, de poser la question.

Garder les preuves. Copier les fichiers avant de supprimer le serveur. Nous l’avons appris à la dure. Sans copie, on ne peut ni le signaler, ni en tirer des leçons, ni dire précisément au propriétaire ce qu’on a vu.

Prévenir ceux d’en amont. L’hébergeur du site de téléchargement et le registraire du domaine peuvent couper l’infrastructure à la source, ce qui fait plus que fermer un compte. Des dépôts publics d’échantillons de malwares comme MalwareBazaar existent pour que les analystes partagent ce qu’ils trouvent.

Le coût pour les utilisateurs honnêtes, et pourquoi il n’est pas nul

Chaque contrôle a un coût du côté légitime. Une politique de sortie stricte peut casser un plugin qui appelle un service web. Une inscription stricte peut écarter un ado sans carte bancaire. Une règle qui arrête un mineur peut aussi arrêter un mod lourd mais honnête. Un hébergeur qui dit n’avoir aucun faux positif ne regarde pas.

Le compromis que nous choisissons est simple à énoncer : limiter les offres gratuites à ce que fait un vrai joueur, expliquer les limites, et laisser une personne répondre quand quelqu’un est pris dans une règle. Si tu es bloqué sans avoir rien fait de mal, dis-nous comment tu en es arrivé là : c’est la meilleure façon que nous ayons de corriger nos règles.

Ce que tu peux faire en tant que client

Tu ne diriges pas une entreprise d’hébergement, mais tu peux éviter de devenir le canal involontaire :

  • N’exécute pas un .jar, un plugin ou un script que tu n’as pas reçu de son auteur. Les plugins crackés et les « jars de serveur optimisés » partagés dans des salons de discussion sont une voie classique pour les charges cachées. Préfère les pages officielles des projets.
  • Compare les sommes de contrôle quand l’auteur les publie : sha256sum file.jar, et compare la ligne avec celle du projet.
  • Lis ce que demande un plugin. Un plugin qui ouvre des connexions réseau sans raison visible mérite une question.
  • Protège tes propres comptes. Utilise un mot de passe différent pour chaque service et active l’authentification à deux facteurs là où elle existe. Un compte détourné, c’est un serveur gratuit pour quelqu’un d’autre.
  • Regarde de temps en temps les graphiques de ressources de ton serveur. Un serveur occupé alors que personne n’est connecté mérite un coup d’œil. Le même conseil pour tes propres machines est dans les 30 premières minutes sur un serveur Ubuntu neuf.

Ce que ça veut dire pour choisir un serveur gratuit

Une offre gratuite n’est pas moins bonne à cause de ses limites. Elle l’est quand elle les cache, ou quand elle ne dit pas ce qui se passe quand quelqu’un enfreint les règles. Lis les conditions, cherche une phrase sur les abus, et cherche un moyen de parler à une personne. Un vrai serveur Minecraft gratuit qui reste allumé, et une réponse franche sur la façon dont il est protégé, c’est ce que nous visons avec l’offre gratuite de notre page d’accueil. Si tu as des questions sur son fonctionnement, pose-les sur la page de contact ou sur Discord.