
Proof-of-concept exploit per CVE-2025-54957, una scrittura fuori dai limiti nel decoder unificato DDPlus di Dolby, che dimostra un crash 0-click su Android tramite messaggi audio RCS.
Quando un file viene elaborato dal DDPlus Unified Decoder di Dolby, è possibile una scrittura fuori dai limiti quando vengono elaborati i dati di evoluzione. Il decoder scrive le informazioni di evoluzione in un grande buffer contiguo simile a un heap contenuto in una struct più grande, e il calcolo della lunghezza per una scrittura può andare in overflow a causa del wrap degli interi. Questo porta il buffer 'allocato' a essere troppo piccolo e il controllo fuori dai limiti della scrittura successiva a essere inefficace. Ciò può consentire la sovrascrittura di membri successivi della struct, incluso un puntatore che viene scritto quando viene elaborato il successivo syncframe.
Su Android, questa è una vulnerabilità 0-click, poiché Android decodifica localmente tutti i messaggi audio e gli allegati audio in arrivo per la trascrizione, utilizzando questo decoder, senza che l'utente interagisca con il dispositivo.
Questo codice è presente su MacOS, ma non è chiaro se questo bug sia raggiungibile a causa dei controlli di pre-elaborazione.
Aggiorneremo questo bug man mano che indagheremo ulteriormente sui dispositivi interessati da questa vulnerabilità.
dolby_android_crash.mp4 -- un file containerizzato che causa direttamente il crash su Android dolby_android_crash.ec3 -- il bitstream che causa il crash su Android dolby_evo_crash32.ec3 -- un bitstream che causa il crash su target a 32 bit (il bitstream sopra causa il crash solo su target a 64 bit)
Il modo più semplice per riprodurre questo problema è riprodurre dolby_android_crash.mp4 su un dispositivo Android.
Per riprodurre il problema come 0-click:
Configura un dispositivo Android di test per poter inviare messaggi RCS al dispositivo Android di destinazione
Apri RCS sul dispositivo di test e crea un messaggio vocale tenendo premuta l'icona del messaggio vocale, ma non inviarlo
Esegui:
adb -s TEST_DEVICE shell ls -l /data/user/0/com.google.android.apps.messaging/cache/mediascratchspace/
e annota il nome del file scritto più di recente (alcuni file avranno estensione *.m4a, questo file è quello senza estensione)
adb -s TEST_DEVICE push dolby_android_crash.mp4 /data/user/0/com.google.android.apps.messaging/cache/mediascratchspace/FILENAME
Invia il messaggio audio
Il processo C2 del dispositivo di destinazione dovrebbe andare in crash.
Dalla segnalazione di questo bug, abbiamo indagato su quali dispositivi integrano il Dolby Unified Decoder. Abbiamo riprodotto un crash utilizzando i file sopra sui seguenti dispositivi:
Microsoft ha pubblicato un advisory su questo problema: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-54957 Anche ChromeOS ha corretto questo problema nei binari per la seguente release, sebbene il bug non sia menzionato nell'advisory: https://chromereleases.googleblog.com/2025/09/stable-channel-update-for-chromeos_18.html