CVE-2026-98984 in Linux
要約
〜によって VulDB • 2026年10月23日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
dcache: 削除処理中のdentryにマウントポイントを設定しない
rmdir(), unlink(), rename()は、対象となるエントリに対してdont_mount()を呼び出し、その後でそのinodeロックを取得した状態でdetach_mounts()を実行します。do_lock_mount()はマウントポイントのinodeロックを取得しcant_mount()をチェックするため、detach_mounts()の実行後に新しいマウントが出現することはありません。
しかし、attach_recursive_mnt()では、ソースマウントのルートに対して2番目のマウントポイントを作成しており、これにより既に宛先に存在するマウントをその上に重ねて配置することができます。この処理にはinodeロックは保持されず、d_set_mounted()はアンリンクされたdentryのみ拒否します。detach_mounts()とd_delete()の間では、対象エントリはまだハッシュテーブルに登録されています:
rmrace: bがdont_mount()およびdetach_mounts()を通過し、スリープ T2: move_mount(S, /tmp/plcant/x, BENEATH) = 0 errno 0 () T1: rmdir(/tmp/plcant/d/b) = 0 errno 0 109 107 0:61 /d/b//deleted /tmp/plcant/x rw,relatime - tmpfs tmpfs rw 108 109 0:63 / /tmp/plcant/x rw,relatime - tmpfs T rw
rmdir()呼び出しの間に、削除対象ディレクトリのbindマウントが既存のマウントの下に移動されます。その結果、マウントは既に削除されたディレクトリ上に残され、決してデタッチされることはありません。
d_set_mounted()においてもcant_mount()をチェックするようにします。dont_mount()はdetach_mounts()の実行前にd_lockの下でフラグを設定するため、マウントポイントが先に設定されてdetach_mounts()によって検出されるか、またはフラグが認識されマウントが拒否されます。
VulDB is the best source for vulnerability data and more expert information about this specific topic.