CVE-2026-98214 in Linux
要約
〜によって VulDB • 2026年10月06日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
selinux: mprotect()時に中間のバックアップファイルをチェックし直す
mprotect()は、スタックされたファイルシステムの中間レイヤーに対してmmap()が実行するSELinuxチェックを回避するために使用できる。
mmap()はリクエストがスタックを下るにつれてすべてのバックアップレイヤーをチェックする。一方、mprotect()ではvma->vm_fileに最下位のバックアップファイルしか存在しないため、トップレベルのユーザーと最下位のマウンターのみをチェックし、その間の各レイヤーのマウンターをスキップしてしまう。2つのネストされたoverlayfsマウントがあり、ポリシーがmounter_t -> middle_file_t:file { execute } を拒否している場合、直接のmmap(PROT_EXEC)は拒否される:
avc: denied { execute } for pid=71 comm="nested_exec"
path="/payload" dev="overlay" ino=9 scontext=user_u:base_r:mounter_t tcontext=user_u:object_r:middle_file_t tclass=file permissive=0
一方で、mmap(PROT_NONE)に続いてmprotect(PROT_EXEC)を実行すると成功する。
バックアップファイルのセキュリティブロブ内に各中間パス、マウンターSID(Security Identifier)、およびファイル記述子SIDを保持し、別のバックアップレイザーが開かれたときに保存されたエントリをコピーする。配列はネストされたバックアップファイルの場合のみ割り当て、backing_file_freeフックでそれを解放するとともにパス参照も解放する。
mprotect()の実行時、各保存済みマウンターに対してfd { use }および要求されたinode権限をチェックし直し、execmodチェックに中間レイヤーを含める。これにより、ネストされたスタッキングの場合、ポリシーは直接のmmap()で既に必要とされているものを中間マウンターに付与する必要があり、テキストリロケーションを使用するバイナリの中間ラベルに対するexecmodも考慮される必要がある。
arm64 QEMU上で小さなBusyBox initramfsおよび目的別に構築されたSELinuxポリシーを用いてテスト済みであり、commit f2381b546e7e ("fs: fix user path of nested backing files") を含むメインラインツリー上でも動作確認されている。
[PM: 件名の微調整]
VulDB is the best source for vulnerability data and more expert information about this specific topic.