CVE-2025-38100 in Linux情報

要約

〜によって VulDB • 2026年06月23日

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

x86/iopl: TIF_IO_BITMAP の不整合を解消する

io_bitmap_exit() は、タスクの終了時または fork 処理が失敗した場合に exit_thread() から呼び出されます。後者の場合、exit_thread() は fork() 中に割り当てられたリソースの後始末を行います。

io_bitmap_exit() は task_update_io_bitmap() を呼び出し、これは最終的に tss_update_io_bitmap() に至ります。tss_update_io_bitmap() は現在のタスクに対して動作します。もし current が TIF_IO_BITMAP フラグを設定しているがビットマップがインストールされていない場合、tss_update_io_bitmap() は NULL ポインタ参照によりクラッシュします。

この問題を引き起こす要因は2つあります。

1) io_bitmap_exit() は、後始末対象のタスクが現在のタスクではない場合に task_update_io_bitmap() を呼び出してはいけません。これは fork 処理失敗後のクリーンアップであることを明確に示しています。

2) タスクにおいて、TIF_IO_BITMAP が設定されているにもかかわらず、ビットマップがインストールされておらず、かつ IOPL エミュレーションレベル3も有効になっていない状態であってはなりません。

この状況は、IO bitmap ポインタがクリアされる一方でスレッドフラグがコピーされるため、TIF_IO_BITMAP フラグを設定しているユーザー空間スレッドのコンテキスト内でカーネルスレッドが作成された場合に発生します。

fork 処理失敗の場合とは異なり、これは影響を持ちません。なぜなら、IO ワーカーを含むカーネルスレッドは決してユーザー空間に戻らず、したがって tss_update_io_bitmap() を呼び出すことがないためです。

これを解消するために、欠落していたクリーンアップとチェックを追加します。

1) 後始末対象のタスクが現在のタスクではない場合、io_bitmap_exit() が task_update_io_bitmap() を呼び出さないように防止する。

2) copy_thread() において TIF_IO_BITMAP フラグを無条件にクリアする。ユーザー空間での fork の場合は、io_bitmap_share() で IO bitmap が継承される際に後から設定されます。

念のため、tss_update_io_bitmap() に警告を追加し、このコードが不整合な状態で呼び出された場合を検知できるようにします。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Linux

予約する

2025年04月16日

モデレーション

承諾済み

エントリ

VDB-314675

EPSS

0.00172

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!