
MOC3ingbird Exploit per Live2D (CVE-2023-27566)
Il lavoro futuro in questo spazio avverrà sotto l'organizzazione Sakura Motion, iniziando con la riscrittura del nostro Core: https://github.com/SakuraMotion/PurismCore.
日本語版:README_JA.md
Questo repository contiene un semplice modello Live2D che fa crashare qualsiasi applicazione che tenti di caricarlo: un attacco di denial of service. Se hai installato l'editor esadecimale ImHex, puoi ispezionare e modificare il file MOC3 con il file pattern in src/moc3.hexpat. Nota che dovrai cambiare il valore 0x7FFFFFFF (FF FF FF 7F) dello spazio runtime offset vicino all'inizio del file in qualcosa di sensato (0) per poter vedere i dati del pattern. In alternativa, puoi abilitare ShowRuntimeSpaceFields dalla scheda Impostazioni.
src/moc3.hexpat dovrebbe essere in grado di visualizzare tutti i file MOC3. Se ne trovi uno che non riesce a visualizzare, per favore apri un ticket e lo esamineremo.
I file inclusi possono anche essere usati come modello per ulteriori ricerche e sperimentazioni.
Questi file vengono rilasciati nella speranza che spingano Live2D a migliorare le loro pratiche di sicurezza.
C'è solo un'implementazione diffusa di lettura MOC3: Live2D Cubism Core. Cubism Core è una libreria C che non tenta di eseguire il bounds checking sugli offset contenuti nei file MOC3. Di conseguenza, è banale leggere e scrivere memoria al di fuori dei limiti dei dati MOC3 in memoria, ed è quasi certamente possibile eseguire codice arbitrario in questo modo.
Ad oggi, non ho trovato un modo per ottenere l'esecuzione di codice usando solo Cubism Core; tuttavia, l'esecuzione di codice potrebbe essere ancora possibile sfruttando il layout di memoria del programma host (ad es. Cubism Viewer, VTube Studio, ecc.).
Download ZIP diretto per il modello MOC3ingbird (questo repository): clicca qui.
Se hai Cubism Editor (e Viewer) di Live2D o qualsiasi altro software in grado di caricare modelli Live2D, apri semplicemente il file exploit.moc3 con esso.
Per il viewer in bundle con Live2D Cubism Editor, puoi scaricare questo repository e trascinare exploit.moc3 nel viewer. Inizierà a caricare il modello e crasherà immediatamente.
Se colleghi un debugger all'applicazione che crasha, dovresti vedere l'eccezione EXCEPTION_ACCESS_VIOLATION, SIGSEGV o qualche altro equivalente. Il PoC corrente scrive un puntatore a moc3BaseAddress + sections.parts.runtimeSpace0 con il valore moc3BaseAddress + sections.parts.ids.
Il pattern src/moc3.hexpat supporta tutti i file MOC3. Alcuni esempi possono essere trovati su https://live2d.com/en/download/sample-data/. Nota che questi esempi sono protetti da copyright di Live2D Inc. e potrebbero avere restrizioni aggiuntive. Gli sviluppatori del Progetto OpenL2D non sono responsabili per garantire la conformità degli utenti di questo software con accordi di terze parti.
Copyright © 2023 The OpenL2D Project Developers. Tutti i diritti riservati.
Questo modello e tutti i file correlati sono software libero concesso in licenza secondo i termini della Free Development Public License 1.0-US pubblicata dal Freedom of Development Project su https://freedevproject.org/fdpl-1.0-us. L'uso dei file in questo repository costituisce accettazione di questa licenza.
Nessun file in questo repository è stato derivato dall'output di alcun software Live2D. Tutti i diritti riservati solo agli sviluppatori del Progetto OpenL2D, che, per quanto riguarda la distribuzione di questi file, non hanno obblighi verso alcuna parte in base a nessun accordo.
Per essere più espliciti: sei libero di usare i file modello e i file pattern inclusi per creare i tuoi lettori e scrittori MOC3. Nessuna licenza limiterà il tuo diritto di farlo.