
MOC3ingbird Exploit pour Live2D (CVE-2023-27566)
Les travaux futurs dans ce domaine se dérouleront sous l'organisation Sakura Motion, en commençant par la réécriture de notre Core : https://github.com/SakuraMotion/PurismCore.
Version japonaise : README_JA.md
Ce dépôt contient un modèle Live2D simple qui fait planter toute application
qui tente de le charger : une attaque par déni de service. Si vous avez
l'éditeur hexadécimal ImHex installé, vous pouvez
inspecter et modifier le fichier MOC3 avec le fichier de motifs dans
src/moc3.hexpat. Veuillez noter que vous devrez modifier la valeur de
décalage de l'espace d'exécution 0x7FFFFFFF (FF FF FF 7F) près du début du
fichier pour une valeur raisonnable (0) afin de pouvoir voir les données du
motif. Vous pouvez également activer ShowRuntimeSpaceFields à partir de
l'onglet Paramètres.
src/moc3.hexpat devrait être capable de visualiser tous les fichiers MOC3.
Si vous en trouvez un qu'il ne peut pas visualiser, veuillez créer une issue
et nous examinerons le problème.
Les fichiers inclus peuvent également être utilisés comme modèle pour des recherches et expérimentations ultérieures.
Ces fichiers sont publiés dans l'espoir qu'ils inciteront Live2D à améliorer ses pratiques de sécurité.
Il n'existe qu'une seule implémentation de lecture MOC3 répandue : Live2D Cubism Core. Cubism Core est une bibliothèque C qui ne tente aucun contrôle des limites sur les décalages contenus dans les fichiers MOC3. Par conséquent, il est trivial de lire et d'écrire de la mémoire en dehors des limites des données MOC3 en mémoire, et il est presque certainement possible d'exécuter du code arbitraire de cette manière.
À l'heure actuelle, je n'ai pas trouvé de moyen d'exécuter du code en utilisant uniquement Cubism Core ; cependant, une exécution de code reste peut-être possible en tirant parti de la disposition mémoire du programme hôte (par exemple Cubism Viewer, VTube Studio, etc.).
Téléchargement ZIP direct pour le modèle MOC3ingbird (ce dépôt) : cliquez ici.
Si vous disposez du Cubism Editor (et Viewer)
de Live2D ou de tout autre logiciel capable de charger des modèles Live2D,
ouvrez simplement le fichier exploit.moc3 avec celui-ci.
Pour le viewer fourni avec le Live2D Cubism Editor, vous pouvez télécharger ce
dépôt et glisser exploit.moc3 dans le viewer. Il commencera à charger le
modèle et plantera instantanément.
Si vous attachez un débogueur à l'application qui plante, vous devriez voir
l'exception EXCEPTION_ACCESS_VIOLATION, le signal SIGSEGV, ou quelque chose
d'équivalent. Le PoC actuel écrit un pointeur vers
moc3BaseAddress + sections.parts.runtimeSpace0 avec la valeur
moc3BaseAddress + sections.parts.ids.
Le motif src/moc3.hexpat prend en charge tous les fichiers MOC3. Des
exemples peuvent être trouvés sur https://live2d.com/en/download/sample-data/.
Veuillez noter que ces exemples sont protégés par le droit d'auteur de Live2D
Inc. et peuvent être soumis à des restrictions supplémentaires.
The OpenL2D Project Developers ne sont pas responsables de garantir la
conformité des utilisateurs de ce logiciel avec des accords tiers.
Copyright © 2023 The OpenL2D Project Developers. Tous droits réservés.
Ce modèle et tous les fichiers associés sont des logiciels libres sous les termes de la Free Development Public License 1.0-US telle que publiée par le Freedom of Development Project sur https://freedevproject.org/fdpl-1.0-us. L'utilisation des fichiers de ce dépôt constitue l'acceptation de cette licence.
Aucun fichier de ce dépôt n'est dérivé d'une sortie d'un logiciel Live2D. Tous droits réservés uniquement à The OpenL2D Project Developers, qui, en ce qui concerne la distribution de ces fichiers, n'ont aucune obligation envers quiconque en vertu d'un accord.
Pour être plus explicite : vous êtes libre d'utiliser les fichiers de modèle et les fichiers de motifs inclus pour créer vos propres outils de lecture et d'écriture de fichiers MOC3. Aucune licence ne restreindra votre droit de le faire.