
MOC3ingbird Exploit für Live2D (CVE-2023-27566)
Zukünftige Arbeiten in diesem Bereich werden unter der Organisation Sakura Motion stattfinden, beginnend mit unserem Core-Rewrite: https://github.com/SakuraMotion/PurismCore.
日本語版:README_JA.md
Dieses Repository enthält ein einfaches Live2D-Modell, das jede Anwendung, die es zu laden versucht, zum Absturz bringt: ein Denial-of-Service-Angriff. Falls Sie den ImHex Hex-Editor installiert haben, können Sie die MOC3-Datei mit der Pattern-Datei in src/moc3.hexpat inspizieren und bearbeiten. Bitte beachten Sie, dass Sie den Laufzeit-Speicher-Offset-Wert 0x7FFFFFFF (FF FF FF 7F) am Anfang der Datei auf einen sinnvollen Wert (0) ändern müssen, um die Pattern-Daten sehen zu können. Alternativ können Sie im Reiter Einstellungen ShowRuntimeSpaceFields aktivieren.
src/moc3.hexpat sollte alle MOC3-Dateien anzeigen können. Wenn Sie eine Datei finden, die nicht angezeigt werden kann, erstellen Sie bitte ein Issue und wir werden uns darum kümmern.
Die enthaltenen Dateien können auch als Vorlage für weitere Forschung und Experimente verwendet werden.
Diese Dateien werden in der Hoffnung veröffentlicht, dass sie Live2D dazu anregen, ihre Sicherheitspraktiken zu verbessern.
Es gibt nur eine weit verbreitete Implementierung zum Lesen von MOC3-Dateien: Live2D Cubism Core. Cubism Core ist eine C-Bibliothek, die keinerlei Versuche unternimmt, Grenzprüfungen für Offsets durchzuführen, die in MOC3-Dateien enthalten sind. Dadurch ist es trivial, Speicher außerhalb der Grenzen der MOC3-Daten im Speicher zu lesen und zu schreiben, und es ist fast sicher möglich, auf diese Weise beliebigen Code auszuführen.
Stand jetzt habe ich noch keinen Weg gefunden, mit Cubism Core allein eine Codeausführung zu erreichen; jedoch könnte eine Codeausführung durch Ausnutzung des Speicherlayouts des Host-Programms (z. B. Cubism Viewer, VTube Studio usw.) dennoch möglich sein.
Direkter ZIP-Download für das MOC3ingbird-Modell (dieses Repository): hier klicken.
Falls Sie Live2Ds Cubism Editor (und Viewer) oder eine andere Software installiert haben, die Live2D-Modelle laden kann, öffnen Sie einfach die Datei exploit.moc3 damit.
Für den Viewer, der mit dem Live2D Cubism Editor gebündelt ist, können Sie dieses Repository herunterladen und exploit.moc3 in den Viewer ziehen. Das Modell beginnt zu laden und stürzt sofort ab.
Wenn Sie einen Debugger an die abstürzende Anwendung anhängen, sollten Sie die Ausnahme EXCEPTION_ACCESS_VIOLATION, SIGSEGV oder eine gleichwertige sehen. Der aktuelle PoC schreibt einen Zeiger auf moc3BaseAddress + sections.parts.runtimeSpace0 mit dem Wert moc3BaseAddress + sections.parts.ids.
Das Pattern src/moc3.hexpat unterstützt alle MOC3-Dateien. Einige Beispiele finden Sie unter https://live2d.com/en/download/sample-data/. Bitte beachten Sie, dass diese Beispiele urheberrechtlich durch Live2D Inc. geschützt sind und möglicherweise zusätzlichen Einschränkungen unterliegen. Die Entwickler des OpenL2D-Projekts sind nicht dafür verantwortlich, die Einhaltung von Vereinbarungen Dritter durch Nutzer dieser Software sicherzustellen.
Copyright © 2023 The OpenL2D Project Developers. Alle Rechte vorbehalten.
Dieses Modell und alle zugehörigen Dateien sind freie Software, lizenziert unter den Bedingungen der Free Development Public License 1.0-US, veröffentlicht vom Freedom of Development Project unter https://freedevproject.org/fdpl-1.0-us. Die Verwendung der Dateien in diesem Repository stellt die Annahme dieser Lizenz dar.
Keine Datei in diesem Repository wurde aus der Ausgabe einer Live2D-Software abgeleitet. Alle Rechte sind ausschließlich den OpenL2D-Projektentwicklern vorbehalten, die bezüglich der Verteilung dieser Dateien gegenüber keiner Partei Verpflichtungen aus irgendeiner Vereinbarung haben.
Um es deutlicher zu sagen: Sie sind frei, die enthaltenen Modelldateien und Pattern-Dateien zu verwenden, um Ihre eigenen MOC3-Leser und -Schreiber zu erstellen. Keine Lizenz wird Ihr Recht dazu einschränken.