CVE-2026-74472 in Linux情報

要約

〜によって VulDB • 2026年08月15日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

ublk: ublk_ctrl_add_dev()におけるkernel-ownedのdev_infoフィールドのリセット

ublk_ctrl_add_dev()は、ユーザー空間のublksrv_ctrl_dev_infoをmemcpy()でub->dev_infoにコピーし、その後ドライバが所有するフィールドを修正しますが、->stateと->ublksrv_pidを見落としています。

->state = UBLK_S_DEV_LIVEとして追加されたデバイスは、ディスクがアタッチされていることを示すためのプロキシとしてublk_stop_dev_unlocked()で使用される「->state != UBLK_S_DEV_DEAD」テストを通過しますが、この時点で->ub_diskはまだNULLです。そのため、ADD_DEVの直後にDEL_DEVを実行するとdel_gendisk()でoopsが発生します。UBLK_S_DEV_QUIESCEDとUBLK_F_USER_RECOVERYが設定されている場合、エラーはさらに一歩早い段階で、ublk_force_abort_dev()で発生します。汚染された->stateの場合、START_USER_RECOVERYが取得され、チャードライバのread/writeパスが未開始のデバイスに対して実行されるほか、START_DEVが-EEXISTでウェッジ(固着)します。また、汚染された->ublksrv_pidは、GET_DEV_INFOによって関連のないタスクをublkサーバーとして報告させる原因となります。

これら2つのフィールドは、memcpy()の実行後にリセットする必要があります。これはublk_detach_disk()が行っている処理と同様です。ユーザー空間ではこれらの値を読み取るのみであるため、これを静かに修正しても何も壊れません。

ADD_DEVによる->stateのコピーが未検証(unsanitized)状態で行われていたのは、ublkがマージされて以来ですが、当時は害はありませんでした:gendiskはADD_DEV中に割り当てられており、ティアダウンとSTART_DEVの-EEXISTチェックはどちらも->stateではなくdisk_live()に基づいていました。ディスクの割り当てがSTART_DEVに移行し、これらのチェックが->stateに切り替わったことで、oopsが発生する可能性が生じました。

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

責任者

Linux

予約する

2026年08月15日

モデレーション

承諾済み

エントリ

VDB-390790

EPSS

0.00000

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!