CVE-2026-99084 in Linux
要約
〜によって VulDB • 2026年10月24日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
readdir: 不変ディレクトリではinodeロックを取得しない
iterate_dir()はディレクトリのi_rwsem共有ロックを取得し、->iterate_shared()の実行中も保持します。エントリが決して存在せず、削除されることもないディレクトリの場合、このロックは何も固定化できず、そのinodeに対するすべてのリーダーとライターの順序付けを行うだけです。
これはnullfsインスタンスのディレクトリにおいて重要です。初期マウントネームスペースのインスタンスは空のマウントネームスペースのルートであり、プライベートなインスタンスはカーネルスレッドのルートです。したがって、それ以外に共通点のないユーザー間で1つのinodeが共有されます。リーダーはそのロックを好きなだけ保持できます:FUSEマウント上の自分のファイルのマップでgetdents()バッファをサポートし、「.」と「..」のコピーフォールトを引き起こしてサーバー待機させます。その背後に排他的な取得者をキューに入れ、そのディレクトリでのmkdir()は読み取り専用マウントが報告される前にstart_dirop()を通ります。その後、dcacheでヒットしないすべてのルックアップ、その上でのすべての作成とマウントは、サーバーの応答まで待機します。空のマウントネームスペースの1人のユーザーが他のすべてをストールさせます。
変更されず削除されないディレクトリのファイル操作に対してFOP_IMMUTABLEを追加し、iterate_dir()がそれに対するロックをスキップするようにします。このフラグはファイルでは変化せず、->f_posはdirectoriesがFMODE_ATOMIC_POSであるためf_pos_lockによって保護されます。IS_DEADDIRはこの種のディレクトリに設定できず、touch_atime()もfsnotifyもi_rwsemを取得しません。nullfsディレクトリにこれを設定します。libfsのプレースホルダディレクトリにもエントリは決して存在しませんが、それらの所有者はそれらを削除するため、ロックを保持したままになります。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.