JVNDB-2026-014755 | |
LinuxのLinux KernelにおけるTime-of-check Time-of-use (TOCTOU) 競合状態の脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました。xfsにおけるattr dabtreeの非アクティブ化に伴うクラッシュウィンドウの閉鎖問題です。ノード形式の拡張属性を持つinodeを非アクティブ化する際、xfs_attr3_node_inactive()はxfs_trans_binval()を用いてすべての子のリーフおよびノードブロックを無効化しますが、親ノードブロックから対応するエントリを削除しません。この暗黙の前提は、xfs_attr_inactive()がその後attrフォーク全体をゼロエクステントに切り詰めるため、ログ回復時にルートノードに到達して古いポインタを追跡しないというものです。しかし、リーフおよびノードブロックの取消がコミットされた後、attr bmapの切り詰めがコミットされる前にログシャットダウンが発生した場合、この前提は崩れます。回復処理はattr bmapをそのまま再生します(inodeはまだattrフォークのエクステントを持っています)が、すべての取消されたリーフおよびノードブロックの再生を抑制し、それらがディスク上に古いデータとして残る可能性があります。次回のマウント時に、xlog_recover_process_iunlinks()は非アクティブ化を再試行し、attr bmap経由でルートノードを読み込もうとします。もしルートノードが再生されていなければ、読み込み時にすぐにメタデータ検証エラーが発生し、再生されていた場合でも、子ポインタをたどって未再生の子ブロックを読み込もうとして同じエラーが発生します。エラー例としては、XFS (pmem0): Metadata corruption detected at xfs_da3_node_read_verify+0x53/0x220, xfs_da3_node block 0x78、XFS (pmem0): Unmount and run xfs_repair、XFS (pmem0): First 128 bytes of corrupted metadata buffer: ...、XFS (pmem0): metadata I/O error in "xfs_da_read_buf+0x104/0x190" at daddr 0x78 len 8 error 117があります。修正点は2箇所あります。1つ目は、xfs_attr3_node_inactive()内で子ブロックに対してxfs_trans_binval()を呼び出した後、同一トランザクション内で直ちに親ノードからその子ブロックを参照するエントリを削除し、親が取消されたブロックを指し示す期間を排除します。すべての子が削除された後、空になったルートノードは同じトランザクション内でリーフブロックに変換されます。このノードからリーフへの変換はクラッシュ安全性のために必要です。空のノードがログに書き込まれた後、第二段階のbmap切り詰めがコミットされる前にシステムシャットダウンが発生した場合、ログ回復はディスク上のルートブロックを検証しようとします。xfs_da3_node_verify()はcount == 0のノードブロックを許容しないため、そのようなブロックは検証に失敗しメタデータ破損シャットダウンを引き起こします。一方で、リーフブロックはこの一時的な状態を許容します。2つ目は、xfs_attr_inactive()内でattrフォークの切り詰めを2段階の明示的なフェーズに分割しました。まずルートブロックを超えるすべてのエクステント(親参照がすでに削除された子エクステント)を切り詰めます。次に、ルートブロックを無効化しattr bmapをゼロに切り詰める操作を単一トランザクションで行います。第二段階の2つの操作は原子で実行する必要があります。attr bmapに非ゼロ長が存在する限り、回復処理はそれを追跡してルートブロックに到達できるため、ルートブロックの無効化はbmapのゼロ切り詰めと同時にコミットされなければなりません。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 4.7 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
|
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/05/01 |
| 登録日 | 2026/05/11 |
| 最終更新日 | 2026/05/11 |



