
MOC3ingbird Exploit para Live2D (CVE-2023-27566)
El trabajo futuro en este espacio se llevará a cabo bajo la organización Sakura Motion, comenzando con nuestra reescritura de Core: https://github.com/SakuraMotion/PurismCore.
日本語版:README_JA.md
Este repositorio contiene un modelo Live2D simple que bloquea cualquier aplicación
que intente cargarlo: un ataque de denegación de servicio. Si tienes instalado el
editor hexadecimal ImHex, puedes inspeccionar y
editar el archivo MOC3 con el archivo de patrones en src/moc3.hexpat. Ten en cuenta
que necesitarás cambiar el valor de desplazamiento del espacio de ejecución
0x7FFFFFFF (FF FF FF 7F) cerca del inicio del archivo a algo razonable (0) para
poder ver los datos del patrón. Alternativamente, puedes habilitar
ShowRuntimeSpaceFields desde la pestaña Configuración.
src/moc3.hexpat debería poder ver todos los archivos MOC3. Si encuentras uno
que no pueda ver, por favor abre un issue y lo investigaremos.
Los archivos incluidos también pueden usarse como plantilla para futuras investigaciones y experimentación.
Estos archivos se publican con la esperanza de que impulsen a Live2D a mejorar sus prácticas de seguridad.
Solo existe una implementación generalizada de lectura de MOC3: Live2D Cubism Core. Cubism Core es una biblioteca C que no intenta realizar comprobaciones de límites en los desplazamientos contenidos en los archivos MOC3. Como resultado, es trivial leer y escribir memoria fuera de los límites de los datos MOC3 en memoria, y es casi con certeza posible ejecutar código arbitrario de esta manera.
Por ahora, no he encontrado una forma de lograr ejecución de código usando solo Cubism Core; sin embargo, la ejecución de código puede ser posible aprovechando el diseño de memoria del programa anfitrión (por ejemplo, Cubism Viewer, VTube Studio, etc.).
Descarga directa en ZIP para el modelo MOC3ingbird (este repositorio): haz clic aquí.
Si tienes el
Cubism Editor (y Viewer) de Live2D o
cualquier otro software que pueda cargar modelos Live2D, simplemente abre el archivo exploit.moc3
con él.
Para el visor incluido con el Live2D Cubism Editor, puedes descargar este
repositorio y arrastrar exploit.moc3 al visor. Comenzará a cargar el
modelo y se bloqueará al instante.
Si adjuntas un depurador a la aplicación que se bloquea, deberías ver la
excepción EXCEPTION_ACCESS_VIOLATION, SIGSEGV, o algún otro equivalente. El
PoC actual escribe un puntero a moc3BaseAddress + sections.parts.runtimeSpace0
con el valor moc3BaseAddress + sections.parts.ids.
El patrón src/moc3.hexpat es compatible con todos los archivos MOC3. Algunas muestras
se pueden encontrar en https://live2d.com/en/download/sample-data/. Ten en cuenta
que esas muestras tienen derechos de autor de Live2D Inc. y pueden venir con restricciones adicionales.
Los Desarrolladores del Proyecto OpenL2D no son responsables de garantizar el
cumplimiento de los usuarios de este software con cualquier acuerdo de terceros.
Copyright © 2023 The OpenL2D Project Developers. Todos los derechos reservados.
Este modelo y todos los archivos relacionados son software libre licenciado bajo los términos de la Free Development Public License 1.0-US publicada por el Freedom of Development Project en https://freedevproject.org/fdpl-1.0-us. El uso de los archivos en este repositorio constituye la aceptación de esta licencia.
Ningún archivo en este repositorio se derivó de la salida de ningún software de Live2D. Todos los derechos reservados solo a los Desarrolladores del Proyecto OpenL2D, quienes, en cuanto a la distribución de estos archivos, no tienen obligaciones con ninguna parte bajo ningún acuerdo.
Para ser más explícitos: eres libre de usar los archivos de modelo y los archivos de patrón incluidos para crear tus propios lectores y escritores MOC3. Ninguna licencia restringirá tu derecho a hacerlo.