Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/tremwil/ds3-nrssr-rce
Frameworks d'ExploitationAnalyse des VulnérabilitésExploitationRétro-ingénierieShellcodeTests d'IntrusionApprentissage et ÉducationRed TeamingGénération de ShellcodeDéveloppement de Charges UtilesExploitation de Binaires
169818il y a 4 ansVérifié par Kitploit
GitHub
tremwil/ds3-nrssr-rce

ds3-nrssr-rce

Documentation et code de preuve de concept pour CVE-2022-24125 et CVE-2022-24126.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Mise à jour : Dark Souls III 1.15.1

Une nouvelle mise à jour du jeu, la 1.15.1, est sortie pour Dark Souls III le 25/08/2022, en même temps que la restauration des services en ligne. Cette mise à jour a corrigé à la fois CVE-2022-24125 et CVE-2022-24126, ainsi qu'une grande variété d'autres vulnérabilités de sécurité potentielles présentes dans le réseau P2P du jeu (lectures/écritures hors limites). De plus, tous les exploits connus permettant de corrompre la sauvegarde d'autres joueurs ont été corrigés. De nombreuses tricheries mineures courantes (par exemple « curse knife ») souvent rencontrées lors du multijoueur en ligne ont également été corrigées.

ds3-nrssr-rce

Ce dépôt contient le code de preuve de concept et la documentation pour l'exploit RCE le plus récent affectant les jeux de FROM SOFTWARE, CVE-2022-24126. Bien que théoriquement possible dans d'autres jeux, l'accent est mis sur Dark Souls III, car c'est le jeu sur lequel mes recherches ont été menées. À l'heure actuelle, le code de preuve de concept n'existe que pour Dark Souls III. La vulnérabilité a été confirmée comme présente dans :

  • Dark Souls 1 PTDE (crédit : LukeYui)
  • Dark Souls Remastered (crédit : metal-crow)
  • Dark Souls 2 (y compris Scholar) (crédit : LukeYui)
  • Dark Souls 3 (jusqu'à la version 1.15.0) (crédit : tremwil)

Le code vulnérable est également présent dans Sekiro (crédit : LukeYui), bien qu'il n'existe aucun moyen de le déclencher. Sa présence dans Demon's Souls n'a pas été confirmée mais est très probable. Bien que le test réseau fermé ait été affecté, la version finale d'Elden Ring ne l'est pas. En réalité, une énorme liste de crashs réseau, de lectures/écritures hors limites et d'exploits permettant aux joueurs de modifier les données de jeu de leurs pairs, présents dans Dark Souls III, a été corrigée dans Elden Ring. Merci à LukeYui pour avoir compilé cette liste et à FROM SOFTWARE pour avoir agi rapidement ! Je suis heureux de dire qu'Elden Ring est sans conteste le titre de FROM SOFTWARE le plus sûr en ce qui concerne l'étendue des dégâts que les pirates peuvent infliger.

Dissiper les idées reçues

Contrairement à la croyance populaire, il ne s'agit PAS d'un exploit de réseau pair-à-pair. Il est lié au serveur de matchmaking et est donc bien plus grave, car vous n'avez pas besoin de participer à une quelconque activité multijoueur pour être vulnérable, en raison d'une autre vulnérabilité du serveur de matchmaking (CVE-2022-24125).

Dans Dark Souls III, un attaquant malveillant abusant de cette faille aurait pu exécuter de manière fiable une charge utile allant jusqu'à 1,3 Mio1 de shellcode sur la machine de chaque joueur en ligne en quelques secondes.

Le jeu ayant une base de joueurs simultanés moyenne d'environ 20 000 joueurs dans les mois précédant la fermeture des serveurs, il était clairement nécessaire de corriger ce problème immédiatement, surtout avec la possibilité qu'il soit présent dans Elden Ring. Comme FROM SOFTWARE n'avait toujours pas agi plus de 40 jours après mon rapport initial accompagné de vidéos de preuve de concept et d'une documentation détaillée sur l'exploit (sur laquelle une grande partie de ce readme est basée), j'ai décidé de démontrer publiquement l'existence de l'exploit de manière bénigne, dans l'espoir d'attirer l'attention pour que les développeurs s'en occupent — et cela a fonctionné.

Table des matières

  • Résumé de l'exploit (CVE-2022-24126)
  • Vecteurs de distribution (CVE-2022-24125)
  • La tactique d'exploitation générale pour tous les jeux
    • Bug n° 1 : absence de vérification des limites dans l'analyseur de liste d'entrées
    • Bug n° 2 : dépassement de tampon dans l'analyseur NRSessionSearchResult
    • Ouvrir la voie à la chaîne ROP
  • Code de preuve de concept pour Dark Souls III
    • Exécution du code PoC
    • Vecteur d'attaque
    • Chaîne de redirection d'appels virtuels
    • Informations supplémentaires

Résumé de l'exploit (CVE-2022-24126)

Une vérification des limites inappropriée sur un tampon de pile et le champ de taille des données lors de l'analyse des données de matchmaking NRSessionSearchResult permet à un attaquant d'exécuter du code arbitraire. Le débordement de pile permet d'écraser les deux octets inférieurs de vftable_ptr de l'objet DLMemoryInputStream utilisé en interne par le lecteur de flux, redirigeant l'exécution vers du code voisin soigneusement choisi. Une exploitation astucieuse de la structure de l'objet DLMemoryInputStream et du champ de taille des données permet ensuite d'obtenir une redirection de code arbitraire, avec RCX pointant vers l'adresse de notre paquet. À partir de là, une série de redirections de code via des appels virtuels avec différents décalages (qui sauteront désormais vers les adresses que nous avons écrites dans le tampon du paquet) peut être utilisée pour parvenir à l'exécution de code arbitraire.

Vecteurs de distribution (CVE-2022-24125)

Les vecteurs de distribution sont ce qui rend cet RCE particulièrement grave (au-delà du fait qu'il s'agisse déjà d'un RCE). L'exploit est transmis via des requêtes push de matchmaking contenant des informations NRSessionSearchResult. Cela signifie que l'attaquant peut cibler toute personne qui rejoint sa session en ligne. En particulier, pour DS3 :

  • les invocations (PushRequestSummonSign)
  • les envahisseurs esprit sombre (PushRequestAllowBreakInTarget)
  • les joueurs rejoignant via une alliance (PushRequestVisit)
  • les combattants de l'arène (PushRequestAcceptQuickMatch)

C'est déjà assez grave, mais le véritable potentiel est débloqué par la requête RequestSendMessageToPlayers :

message RequestSendMessageToPlayers { 
    repeated uint32 player_ids = 1; 
    required bytes push_message = 2;
}

L'hôte utilise cette requête pour envoyer directement le message push PushRequestAllowBreakInTarget aux envahisseurs afin qu'ils puissent obtenir les coordonnées d'apparition et rejoindre sa session P2P. C'est tout. C'est la seule façon dont cette requête est utilisée par le jeu.

Pourtant, elle permet à n'importe quel client d'envoyer des messages push arbitraires à des centaines de milliers de joueurs spécifiques.

Je ne saurais trop insister sur le danger extrême que cela représente. N'importe quel joueur peut essentiellement se faire passer pour le serveur de matchmaking. En utilisant cette requête pour envoyer l'exploit via un PushRequestVisit, tout joueur en ligne peut être ciblé à distance par l'attaquant, à condition que son identifiant de joueur soit connu. L'attaquant peut également envoyer l'exploit à l'ensemble de la base de joueurs en ligne très rapidement en envoyant plusieurs requêtes, chacune contenant une grande tranche d'identifiants de joueurs possibles.

La tactique d'exploitation générale pour tous les jeux

Bien que le RCE ne se transpose pas exactement à chaque jeu, l'idée centrale de l'exploit, qui donne à l'attaquant une redirection de code arbitraire, est la même. Si cela peut être réalisé, il est très probable qu'une chaîne d'appels virtuels ou une chaîne ROP spécifique au jeu puisse ensuite être trouvée. Cette « première étape » utilise les vulnérabilités suivantes :

Footnotes

  1. Pour Dark Souls III version 1.15. La taille théorique maximale de la charge utile dépend de la disposition de la pile et varie donc selon le jeu et la version. ↩

Télécharger l’outil