Sécurité & diagnostic.
Une passe ciblée sur l’authentification, les entrées réseau, les plugins et les rapports de crash. Ces contrôles ne constituent pas une garantie d’absence de bugs dans tout le moteur Beta.
Défauts corrigés
- Le décodeur natif refuse les paquets réservés au sens serveur vers client avant de lire leur contenu, notamment avant les allocations mémoire des chunks.
- Les seuils anticheat non finis et les booléens de protection mal écrits reviennent aux valeurs sûres, au lieu de désactiver silencieusement un contrôle.
- Les rotations NaN/infinies sont refusées, y compris dans un paquet sans position. Le paquet de mouvement Beta de base est correctement inspecté ; la sentinelle de monture n’est autorisée que pour un joueur effectivement monté.
- RetroAuth ne fait confiance à X-Forwarded-For que sur demande explicite et depuis un proxy loopback. Une origine navigateur étrangère est refusée lors d’un POST et le type de formulaire est vérifié.
- Les autorisations temporaires sont à usage unique et plafonnées, les comptes sont sauvegardés par remplacement atomique avec fichier temporaire unique, et le handshake seul n’enregistre plus un client comme authentifié.
- Le contrôle des archives compte aussi les répertoires et refuse les noms absolus Windows et les traversées de répertoires.
- Les rapports de crash masquent les formats connus de jetons, sessions, mots de passe et Bearer ; les événements de diagnostic restent bornés.
- Les outils de patch utilisent des fichiers temporaires uniques et refusent un client d’entrée trop volumineux avant chargement en mémoire.
Passe supplémentaire : bugs et fichiers
Captures d’inventaire purgées au changement de monde, état hardcore réinitialisé après déconnexion, archives uniques sans écrasement ni suivi des liens et jonctions Windows, portée de révélation Anti-Xray contrôlée avant création de paquets.
15 contrôles de régression supplémentaires, avec une vraie jonction Windows et conservation des fichiers extérieurs. Ces tests et les contrôles sécurité sont rejoués sous Java 8 et Java 21.
Seconde passe — 2026.10.08.4
Commandes /time et /seed corrigées, explosions TNT séparées des mobs, vérifications de mise à jour réutilisables, RAM et choix de Java fiabilisés, isolation des erreurs de plugins et calcul des métriques corrigés.
Client réellement exécuté, silencieux et sans souris : monde isolé, 70 objets gardés après /kill et après mort par creeper, aucun drop dupliqué, retour au spawn sans changer le spawn global, sauvegarde et fermeture normales. Tests supplémentaires : 29 updater, 11 launcher, 7 client, 16 serveur et 10006 assertions événements/métriques, dont 10000 mesures comparées à un modèle.
Audit de convergence — 2026.10.08.4
Nouvelle correction de duplication dans /give : les spawners insérés avec succès n’étaient pas toujours retirés de la quantité considérée comme surplus. Corrigé en solo et sur serveur, avec contrôles sur inventaires natifs, outils endommagés et inventaires pleins. Les callbacks de plugins réentrants et la précision des métriques après un échantillon extrême sont également corrigés.
La série finale est vérifiée avec la suite complète sous Java 8 et Java 21, des serveurs réellement exécutés et un nouveau client graphique silencieux par passe. Le bilan détaillé distingue les tentatives, les bugs corrigés et les limites : il ne certifie pas l’absence de tout bug du moteur Beta.
Passe supplémentaire — 2026.10.08.5
Deux défauts de nettoyage des plugins corrigés : les activations échouées libèrent désormais leurs ressources via onDisable ; les activations annulées ne peuvent plus activer un autre plugin depuis leur callback de nettoyage. Les deux chemins étaient reproduits par un nouveau test avant correction.
Suite complète fraîchement réussie sous Java 8 et Java 21. Inventaires natifs : 130 contrôles par côté, avec surplus partiel, outils endommagés et mélange des 12 variantes de spawner. Client réellement exécuté, muet et sans souris : /kill, respawn au spawn, puis mort par creeper avec keepInventory sans duplication, sauvegarde et fermeture normales. Il s’agit d’une passe supplémentaire, pas d’une nouvelle série de quatre audits.
Tests exécutés
112 contrôles adversariaux supplémentaires : vrais échanges HTTP locaux, échecs de connexion, limitation de débit, mémoire des sessions, archives hostiles, diagnostic et vrais paquets du serveur Beta.
La suite existante est également rejouée : bytecode et références des JAR, inventaires et craft, spawners, règles par monde, démarrage d’un serveur réel, commandes, sauvegarde, arrêt et vérification du launcher.
Les comptes utilisés dans ces tests sont fictifs, dans un environnement local isolé. Aucun jeton Microsoft réel ni monde personnel n’est utilisé.
Limites connues
- Les plugins Java disposent des droits du serveur : ce n’est pas une sandbox.
- RetroAuth local ne prouve pas la propriété d’un compte Mojang. Le client patché peut utiliser la session fournie par un launcher compatible ; le launcher de test ne fournit pas cette session.
- Sur une IP partagée (NAT), une autorisation pseudonyme + IP ne peut pas distinguer deux machines qui essaient de rejoindre au même instant. Chaque autorisation web ne permet qu’une connexion ; une reconnexion exige une nouvelle authentification, sauf session officielle validée automatiquement.
- Le masquage des journaux reconnaît des formats connus, pas toute information sensible possible. Il faut relire les journaux avant transmission.
- Les tests ne couvrent pas toutes les sessions graphiques, la charge multijoueur prolongée, les pannes disque ou les coupures au milieu d’une sauvegarde.
- Le téléchargement HTTP/XML historique a été retiré ; l’import des ressources locales est conservé et testé.