
PoC近日利用可能
Google Chrome(バージョン123およびそれ以前)における、WebAssembly(WASM)のガベージコレクション型処理に影響する重大なリモートコード実行の脆弱性。このバグは型混乱を引き起こし、任意のメモリ読み取り/書き込み、最終的にはコード実行にエスカレーションされる可能性があります。
この脆弱性は、WASMの同型再帰的な正準型IDと、JavaScriptからWASMへの変換関数で使用されるwasm::HeapType / wasm::ValueType表現との間の混乱に起因します。
重要なのは、正準型IDは kV8MaxWasmTypes にまったく束縛されないことです — ホストメモリが許す限り大きくなります。
ValueTypeクラスはヒープ型を20ビットフィールドにエンコードしますが、正準型IDはこの制限を超える可能性があります。次のような正準型IDが:
tn = t0 + 0x100000 * n
20ビットに切り詰められると、t0とエイリアスし、型混乱攻撃を可能にします。
さらに、kAny + 0x100000 * n(kAny = 1000005)に一致する正準型IDは型チェックをバイパスし、任意のWASM型混乱を許可します。
このアドバイザリでは、悪用を3つのフェーズで説明しています:
100万以上の型を持つWASMモジュールを作成すると、正準型IDがラップし、構造体型と参照型の間の混乱が可能になります。kAnyとエイリアスするように細工された構造体型は、JSからWASMへの型チェックをバイパスします。
ArrayBufferのバッキングストアフィールドを変更することで、攻撃者は書き込まれた値がメタデータアドレスである任意のアドレス書き込みを得ます。これはSlotSpanMetadata構造を悪用してchrome.dllアドレスを漏洩し、任意のメモリ書き込みを達成します。
この悪用はCodePointerTableを乗っ取り、シェルコード領域を実行可能にするROPチェーンに実行をピボットします。
PoCは以下を示しています:
kAnyとエイリアスする構造体型を作成する。これはCVE-2024-2887のバリアントであり、Manfred Paulによって発見され、Pwn2Own Vancouver 2024で発表されました。異なるベクトルを通じて同様の型正準化の弱点を悪用します。
Google Chrome 123およびそれ以前。
Google Chrome 124で修正されました。
Seunghyun Lee(Xion、@0x10n)、TyphoonPWN 2024の参加者。