
CVE-2025-54957の概念実証エクスプロイト。DolbyのDDPlus Unified Decoderにおける領域外書き込みであり、RCSオーディオメッセージを介してAndroid上で0クリッククラッシュを実証します。
Dolby の DDPlus Unified Decoder がファイルを処理する際、evolution データが処理されるときに境界外書き込みが発生する可能性があります。デコーダーは evolution 情報を、より大きな構造体に含まれるヒープ状の連続バッファに書き込みますが、ある書き込みの長さ計算が整数ラップによりオーバーフローする可能性があります。これにより、'allocated' バッファが小さすぎることになり、後続の書き込みの境界外チェックが無効になります。これにより、構造体の後続メンバーが上書きされる可能性があり、次の syncframe が処理されるときに書き込まれるポインタも含まれます。
Android では、これは 0-click の脆弱性です。Android はユーザーがデバイスを操作しなくても、このデコーダーを使用して、受信したすべてのオーディオメッセージとオーディオ添付ファイルを文字起こし用にローカルでデコードするためです。
このコードは MacOS にも存在しますが、前処理チェックによりこのバグに到達可能かどうかは明確ではありません。
この脆弱性の影響を受けるデバイスをさらに調査するにつれて、このバグを更新していきます。
dolby_android_crash.mp4 -- Android でクラッシュを直接引き起こすコンテナ化されたファイル dolby_android_crash.ec3 -- Android のクラッシュを引き起こすビットストリーム dolby_evo_crash32.ec3 -- 32ビットターゲットでクラッシュを引き起こすビットストリーム(上記のビットストリームは 64ビットターゲットのみでクラッシュします)
この問題を再現する最も簡単な方法は、Android デバイスで dolby_android_crash.mp4 を再生することです。
0-click として問題を再現するには:
テスト用 Android デバイスをセットアップし、ターゲットの Android デバイスに RCS メッセージを送信できるようにします
テストデバイスで RCS を開き、音声メッセージアイコンを長押しして音声メッセージを作成しますが、送信はしないでください
以下を実行します:
adb -s TEST_DEVICE shell ls -l /data/user/0/com.google.android.apps.messaging/cache/mediascratchspace/
そして、最も最近書き込まれたファイルの名前をメモします(一部のファイルは *.m4a 拡張子を持ちますが、このファイルは拡張子のないものです)
adb -s TEST_DEVICE push dolby_android_crash.mp4 /data/user/0/com.google.android.apps.messaging/cache/mediascratchspace/FILENAME
音声メッセージを送信します
ターゲットデバイスの C2 プロセスがクラッシュするはずです。
このバグを報告して以来、Dolby Unified Decoder を統合しているデバイスを調査してきました。上記のファイルを使用して、以下のデバイスでクラッシュを再現しました:
Microsoft はこの問題に関するアドバイザリを公開しています: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-54957 ChromeOS も以下のリリースのバイナリでこの問題を修正しましたが、このバグはアドバイザリには記載されていません: https://chromereleases.googleblog.com/2025/09/stable-channel-update-for-chromeos_18.html