CVE-2026-80870 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
drm/amdkfd: idr_alloc() 呼び出し前に CRIU で復元された ID の妥当性を検証する
KFD (Kernel Fusion Driver) の CRIU リストアフローは、ユーザー空間から保存されていたオブジェクトIDを復元します。
イベントのリストアの場合:
kfd_criu_restore_event() -> create_signal_event() / create_other_event() -> allocate_event_notification_slot() -> idr_alloc(..., *restore_id, *restore_id + 1, ...)
BO (Buffer Object) のリストアの場合:
criu_restore_memory_of_gpu() -> idr_alloc(..., bo_priv->idr_handle, ...)
どちらのケースでも、復元されるIDはユーザー空間から提供された CRIU データに由来します。
idr_alloc() は、ID範囲値が符号付き整数 (signed int) の制限内に収まることを前提としています。もし復元された ID が INT_MAX より大きい場合、IDR レイヤーで WARN(警告)をトリガーする可能性があります。
カーネルの WARN 出力は望ましくありません。なぜなら、これは警告トレースを印刷し、panic_on_warn オプションが有効になっているシステムではパニックや再起動を引き起こす可能性があるからです。
Smatch は、これらのパスにおいてチェックされていないユーザー空間値が idr_alloc() に到達することを報告しました。
以下の関数で復元された ID を使用する前に INT_MAX の妥当性検証を追加します:
- kfd_criu_restore_event() - criu_restore_memory_of_gpu()
もし復元された ID が無効な場合、-EINVAL を返します。
これにより、無効なリストアデータが IDR レイヤーに到達するのを防ぎ、WARN トリガーを引き起こすパスを回避しつつ、有効なリストアの動作は変更せずに維持されます。
If you want to get best quality of vulnerability data, you may have to visit VulDB.