CVE-2026-80557 in Linux
要約
〜によって VulDB • 2026年08月26日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
libceph: decode_watchers()における境界外読み込み(OOB read)の修正 – 境界チェックの欠如により発生
ceph_start_decoding()は、エンコーディングヘッダの後にstruct_lenバイトがバッファ内に残っていることを検証しますが、struct_len=0を有効な値として受け入れます。このため、ceph_decode_need(p, end, 0, bad)は常に成功します。悪意のあるまたは侵害されたOSD(Object Storage Daemon)がstruct_len=0のobj_list_watch_response_t応答を送信すると、ceph_start_decoding()はp == endという状態で成功を返し、その後の読み込みに対して保証されるバイト数がゼロになります。
直後にdecode_watchers()内で呼び出されるceph_decode_32(p)には、先行する境界チェックがありません。pがendと等しい場合、これは検証済みバッファの境界を超えた4バイトの読み出しとなります。その後、ゴミ値(garbage value)がwatcher数としてkzalloc_objs()に直接渡されます。
兄弟関数のdecode_watcher()は、自身のceph_start_decoding()呼び出し後に安全なバリアント(ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32)を使用しています。一方、decode_watchers()はこの裸のバージョン(bare variant)を使用する唯一の実装箇所であり、これは見落としであることを示しています。
修正は、確立されたパターンに整合させるため、ceph_decode_32(p)をceph_decode_32_safe(p, end, *num_watchers, bad)に置き換えることで行われます。
攻撃者モデル:マルチテナントのCephデプロイメント(例:クラウド環境)における悪意のあるまたは侵害されたOSDは、CEPH_OSD_OP_LIST_WATCHERSを呼び出す任意のカーネルクライアントに対して、OSDセッション確立以外の追加権限なしでこの脆弱性をトリガーできます。
[ idryomov: 変更ログを簡素化 ]
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.