
MOC3ingbird Exploit para Live2D (CVE-2023-27566)
O trabalho futuro neste espaço ocorrerá sob a Sakura Motion organização, começando com nossa reescrita do Core: https://github.com/SakuraMotion/PurismCore.
Versão em japonês: README_JA.md
Este repositório contém um modelo Live2D simples que trava qualquer aplicativo
que tente carregá-lo: um ataque de negação de serviço. Se você tiver o
editor hexadecimal ImHex instalado, poderá inspecionar e
editar o arquivo MOC3 com o arquivo de padrão em src/moc3.hexpat. Observe
que você precisará alterar o valor de deslocamento do espaço de execução
0x7FFFFFFF (FF FF FF 7F) próximo ao início do arquivo para algo razoável (0) para
poder ver os dados do padrão. Alternativamente, você pode ativar
ShowRuntimeSpaceFields na guia Configurações.
src/moc3.hexpat deve ser capaz de visualizar todos os arquivos MOC3. Se você encontrar um
que ele não consiga visualizar, por favor abra uma issue e analisaremos.
Os arquivos incluídos também podem ser usados como modelo para pesquisas e experimentações adicionais.
Estes arquivos são lançados na esperança de que levem a Live2D a melhorar suas práticas de segurança.
Existe apenas uma implementação amplamente difundida de leitor de MOC3: o Live2D Cubism Core. O Cubism Core é uma biblioteca C que não tenta realizar verificação de limites em offsets contidos em arquivos MOC3. Como resultado, é trivial ler e escrever memória fora dos limites dos dados MOC3 na memória, e é quase certamente possível executar código arbitrário dessa forma.
Até agora, não encontrei uma maneira de alcançar a execução de código usando apenas o Cubism Core; no entanto, a execução de código ainda pode ser possível aproveitando o layout de memória do programa host (por exemplo, Cubism Viewer, VTube Studio, etc.).
Download direto em ZIP do modelo MOC3ingbird (este repositório): clique aqui.
Se você tiver o
Cubism Editor (e Viewer) da Live2D ou
qualquer outro software que possa carregar modelos Live2D, basta abrir o exploit.moc3
arquivo com ele.
Para o viewer incluído no Live2D Cubism Editor, você pode baixar este
repositório e arrastar exploit.moc3 para o viewer. Ele começará a carregar o
modelo e travará instantaneamente.
Se você anexar um depurador ao aplicativo que está travando, deverá ver a
exceção EXCEPTION_ACCESS_VIOLATION, SIGSEGV, ou algum outro equivalente. O
PoC atual escreve um ponteiro para moc3BaseAddress + sections.parts.runtimeSpace0
com o valor moc3BaseAddress + sections.parts.ids.
O padrão src/moc3.hexpat é compatível com todos os arquivos MOC3. Alguns exemplos podem ser
encontrados em https://live2d.com/en/download/sample-data/. Observe que esses
exemplos são protegidos por direitos autorais da Live2D Inc. e podem ter restrições adicionais.
Os OpenL2D Project Developers não são responsáveis por garantir a
conformidade dos usuários deste software com quaisquer acordos de terceiros.
Copyright © 2023 The OpenL2D Project Developers. Todos os direitos reservados.
Este modelo e todos os arquivos relacionados são software livre licenciado sob os termos da Free Development Public License 1.0-US, conforme publicada pela Freedom of Development Project em https://freedevproject.org/fdpl-1.0-us. O uso dos arquivos neste repositório constitui aceitação desta licença.
Nenhum arquivo neste repositório foi derivado da saída de qualquer software Live2D. Todos os direitos são reservados apenas aos OpenL2D Project Developers, que, em relação à distribuição desses arquivos, não têm obrigações com nenhuma parte sob nenhum acordo.
Para ser mais explícito: você é livre para usar os arquivos de modelo e de padrão incluídos para criar seus próprios leitores e escritores de MOC3. Nenhuma licença restringirá seu direito de fazer isso.