Économisez 20% dès aujourd'hui Utilisez le code BIENVENUE lors du paiement. ACCUEILLIR

Comment le système de séquestre de FiveM a été décrypté — Une explication technique claire&#…

Bref résumé : Vous n'avez pas brisé le chiffrement. Les attaquants ont capturé le moment où FiveM a déchiffré les fichiers protégés et récupéré les résultats déchiffrés ou les clés temporaires. Cette défaillance réside dans l'implémentation et l'exécution, et non dans les calculs.


Pourquoi c'est important

Si vous vendez ou exploitez des ressources FiveM payantes (scripts, cartes, modèles), l'entiercement garantit la confidentialité de votre travail et son intégration à des serveurs sous licence. En cas d'échec de l'entiercement, les fuites se propagent rapidement. Vous perdez des revenus et le contrôle, et votre serveur risque d'être banni pour l'utilisation de ressources divulguées.

Cet article explique en langage clair comment les attaquants ont contourné l'entiercement de FiveM, les deux principaux chemins techniques qu'ils ont utilisés et ce que vous pouvez faire pour protéger les ressources.

L'échec du séquestre n'est pas dû à la faiblesse d'AES, mais à la capture par des attaquants de données déchiffrées ou des clés pendant que FiveM les utilisait.


Comment l'entiercement est censé fonctionner (simple)

  1. Un créateur télécharge un élément sur le service d'entiercement. L'élément est placé dans un package chiffré.
  2. Un serveur ou un client sous licence demande l'actif. Le service de séquestre vérifie la licence et effectue une brève étape de déchiffrement.
  3. Le client ou le serveur déchiffre l'actif en mémoire et l'utilise. L'actif ne doit jamais être stocké sous une forme lisible en dehors du processus.

Le système suppose que le client et le serveur exécutent un code fiable et que les secrets (clés) disparaissent rapidement de la mémoire.


La faiblesse fondamentale

Tout système déchiffrant sur la machine d'un utilisateur doit exposer le texte en clair ou les clés lors de l'exécution. Si un attaquant contrôle ou inspecte cet environnement d'exécution, il peut copier le texte en clair ou récupérer les clés.

En bref: vous pouvez protéger les données au repos et en transit, mais pas tant qu'un processus de confiance détient le texte en clair.


Deux véritables chemins d'attaque utilisés par les attaquants

Les attaquants ont utilisé deux approches efficaces, toutes deux basées sur le même principe : capturer l'actif au moment où FiveM l'a déjà déchiffré.

1) Binaire du serveur modifié -> vider le bytecode Lua décrypté

Ce qu’ils ont fait, tout simplement :

  • Ils ont créé un binaire de serveur FiveM personnalisé et modifié le chargeur de ressources Lua.
  • Le chargeur modifié a intercepté le script juste après que FiveM l'ait décrypté et écrit le bytecode décrypté sur le disque.
  • Ils ont exécuté un décompilateur Lua sur ce bytecode pour obtenir des scripts utilisables.

Pourquoi cela a fonctionné :

  • FiveM doit transmettre le bytecode exécutable à la machine virtuelle Lua. Le serveur modifié a remplacé ou piraté le chargeur et a récupéré ce bytecode.
  • Le chargeur s'exécute sur le serveur et le propriétaire du serveur peut compiler et exécuter un binaire personnalisé, afin que les attaquants puissent modifier son comportement.

Limites:

  • Le vidage a produit du bytecode compilé, et non la source originale avec les noms de variables ou les commentaires. Les décompilateurs reconstruisent le code fonctionnel, et non le style d'écriture original.
  • Cette méthode ciblait les scripts Lua. Elle n'exposait pas de manière systématique tous les éléments diffusés, comme les cartes ou les modèles complexes.

Preuves techniques et implémentations de référence :

  • Plusieurs publications communautaires et un référentiel public de preuves de concept montrent comment appliquer les correctifs Charger le fichier interne Dans le composant de script, pour écrire le bytecode déchiffré. Consultez le dépôt PoC sur GitHub pour plus de détails.

2) Capture côté client -> capturer le fichier crypté + clé de session -> décrypter hors ligne

Ce qu’ils ont fait, tout simplement :

  • Ils ont enregistré le téléchargement des ressources du client ou observé le trafic réseau.
  • Ils ont inspecté la mémoire du processus FiveM pour trouver la clé de session temporaire que le client a utilisée pour décrypter l'actif.
  • Ils ont combiné le fichier crypté capturé et la clé pour décrypter l'actif sur leur machine.

Pourquoi cela a fonctionné :

  • Le client doit recevoir ou obtenir une clé de déchiffrement pour utiliser l'actif. Si cette clé reste suffisamment longtemps en mémoire, les attaquants peuvent la trouver.
  • L'interception réseau (proxy local, capture de paquets ou API réseau de raccordement) peut capturer le fichier chiffré lors de sa diffusion.

Ce que cela donne aux attaquants :

  • Ressources complètes, pas seulement les scripts Lua. Cela inclut les cartes, les modèles, les textures et tout autre contenu diffusé en streaming si l'attaquant capture les bons fichiers et clés.

Principale faiblesse de la mise en œuvre :

  • Les clés sont restées dans la RAM plus longtemps que nécessaire ou n'ont pas été nettoyées immédiatement. Les attaquants ont lu la RAM et les ont trouvées.

Pourquoi le cryptage lui-même n’est pas le problème

Les attaquants n'ont pas cassé AES ni aucun chiffrement standard. Ils a brisé l'environnement où les clés et le texte en clair doivent résider pour exécuter le jeu. Il s'agit d'une classe courante d'échecs dans les protections DRM ou côté client.

Imaginez : vous fermez une boîte à clé, mais quelqu'un ouvre le cadenas alors qu'il a légitimement besoin du contenu et prend une photo de la boîte ouverte. Le cadenas fonctionnait toujours. L'attaquant a exploité le fait que la boîte s'ouvrait dans un endroit visible.


Comment les attaquants ont transformé le bytecode en code lisible et utilisable

Le bytecode récupéré est de bas niveau. Il ne contient pas de noms de variables, mais il contient la logique et la structure de la fonction. Les attaquants ont utilisé ou adapté des décompilateurs Lua pour reconstruire du code lisible. Le résultat fonctionne de la même manière et révèle la logique de l'auteur.

La décompilation introduit du bruit (variables renommées, formatage différent), mais elle donne un script utilisable et modifiable.


Ce que FiveM et ses créateurs ont changé après les fuites

FiveM a répondu de plusieurs manières :

  • Ils ont suivi et interdit les serveurs qui utilisaient des ressources divulguées ou piratées.
  • They changed parts of the loader and key manutention to make the original PoC ineffective.
  • Ils ont renforcé les contrôles de licence et réduit la durée de vie des clés.

Ces mesures placent la barre plus haut. Elles ne garantissent pas une sécurité optimale de l'exécution côté client, mais elles réduisent les risques d'attaque.


Recommandations pratiques pour les créateurs et les administrateurs de serveur (ce que vous pouvez faire)

Vous devez considérer l'exécution côté client comme non fiable. Rendez les fuites plus difficiles et limitez les dégâts.

Pour les créateurs

  1. Logique de division : Placez la logique critique ou sensible sur le serveur autant que possible. Limitez le code client. Si une fonctionnalité ne nécessite pas de logique côté client, transférez-la vers des contrôles côté serveur.
  2. Durée de vie des clés courtes : Assurez-vous que toute clé de déchiffrement n'existe que pendant la durée la plus courte possible, puis qu'elle est effacée de la mémoire en toute sécurité.
  3. Obfusquer plus escrow : Utilisez des protections multicouches. L'entiercement, l'obfuscation et les contrôles juridiques réduisent les fuites accidentelles. L'obfuscation ralentit la rétro-ingénierie, mais n'arrête pas les attaquants déterminés.
  4. Contrôles d’intégrité du navire : Ajoutez la vérification d'intégrité et la révocation à distance. En cas de fuite, révoquez la ressource et invalidez rapidement les licences.
  5. Utilisation et rapports des instruments : Enregistrez les serveurs qui demandent quelles ressources afin de pouvoir détecter les téléchargements en masse suspects.

Pour les opérateurs de serveurs

  1. N'exécutez pas de binaires modifiés : Les binaires de serveur personnalisés peuvent exécuter du contenu divulgué. Utilisez les versions officielles pour éviter de devenir par inadvertance un point de distribution.
  2. Surveiller les fichiers et les autorisations du serveur : Empêchez le vidage automatisé en limitant l'accès en écriture et en analysant les modifications d'exécution.
  3. Signaler des fuites : Si vous trouvez un actif divulgué, signalez-le au fournisseur d'entiercement afin qu'il puisse agir contre les abuseurs.

Ce que les défenseurs ne peuvent pas totalement empêcher (soyez réaliste)

  • Il est impossible d'empêcher un attaquant déterminé, disposant du contrôle total d'une machine utilisateur, de capturer du texte en clair. Si le client peut l'exécuter, une personne disposant du contrôle local peut le copier.
  • Vous ne pouvez pas vous fier uniquement à la cryptographie pour appliquer les licences si le décryptage se produit sur un appareil utilisateur que vous ne contrôlez pas.

La bonne approche combine contrôles techniques, mesures juridiques et surveillance active.


Un exemple court et simple (sans code)

  1. Le serveur envoie des données cryptées script.fxap au joueur.
  2. Le client joueur reçoit le fichier et la clé de courte durée.
  3. Le client décrypte le fichier en mémoire et transmet le bytecode à la VM Lua.
  4. Un attaquant accroche le chargeur client ou serveur et copie ce bytecode pendant son exécution.
  5. L'attaquant exécute un décompilateur Lua sur le bytecode et reconstruit des scripts lisibles.

Cette séquence est exactement ce qui s’est produit dans plusieurs cas divulgués.


Questions juridiques et d'application de la plateforme

Les fournisseurs de services d'entiercement peuvent interdire les serveurs et les utilisateurs qui utilisent des ressources divulguées. Cela supprime l'attrait économique du piratage occasionnel. Cependant, les poursuites judiciaires et les interdictions ne peuvent pas arrêter tous les attaquants motivés.


Résumé — la phrase unique que vous pouvez utiliser dans votre article

L'échec de l'escrow n'est pas dû à la faiblesse du cryptage, mais au fait que les attaquants ont capturé le moment où le système lui-même a décrypté les actifs et ont pris le texte en clair ou les clés résultants.


Liens internes (lecture complémentaire sur ce site)

Consultez nos ressources QBCore et nos notes de déploiement sécurisé


Sources et lectures complémentaires

Luc
Luc

Je m'appelle Luke, je suis un joueur et j'adore écrire sur FiveM, GTA et le jeu de rôle. Je dirige une communauté de jeu de rôle et j'ai environ 10 ans d'expérience dans l'administration de serveurs.

Articles: 570