CVE-2026-64467 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
rust_binder: オフセット配列のクリーンアップ時にu64ストライドを使用する
Allocation's Dropはオフセット配列(binder_size_t = u64エントリ)を走査してオブジェクトをクリーンアップしますが、ストライドおよび各エントリの読み取りにusizeが使用されていました。これは本来u64であるべきです。
64ビットカーネルでは(usize == u64)、この問題は発生しませんが、32ビットカーネルでは8バイトのエントリを4バイトずつステップして走査するため、N個のエントリを持つ配列に対して2N回のイテレーションが行われ、常にゼロである上位ワードがオフセット0として読み取られ、結果的にオフセット0のオブジェクトがN回余分にクリーンアップされます。その結果、参照されているノードまたはハンドルは実際の値よりも低い参照カウントとなり(refcountの過剰なデクリメント)、binderの参照管理が破損します。例えば、まだ参照が残っているにもかかわらず、所有者に対して強い参照の解放(BR_RELEASE)が通知される場合があります。
ストライドをu64に変更し、各エントリをu64として読み取り、try_into()を使用してusizeに狭めます。
32ビットARMにおいて、この過剰なデクリメントによってカウントがゼロ未満になると、ドライバの既存のrefcountガードにより拒否され、以下のエラーが発生します:
rust_binder: Failure: refcount underflow!
If you want to get the best quality for vulnerability data then you always have to consider VulDB.