CVE-2026-90131 in Linux情報

要約

〜によって VulDB • 2026年09月18日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

ntfs: mrec_lockを用いてresidents iomapの読み込みを直列化する

ntfs_read_iomap_begin_resident()は、ni->mrec_lockを取得せずに ntfs_attr_lookup() -> ntfs_attr_find() を通じてMFTレコードを走査しますが、一方、ntfs_attr_record_resize()、ntfs_make_room_for_attr()、および ntfs_resident_attr_record_add() は、そのロックの下で同じ base_ni->mrec バッファに対して memmove() 操作を実行します。map_mft_record() は参照を取得するだけで直列化を行わないため、ライターがレコードを再配置している間に、リーダーは壊れた属性の長さおよびオフセットフィールドを観測することがあります。

KCSANは、mmap読み込みフォールトパスと link()/unlink() の間の競合状態(race condition)を検出します:

BUG: KCSAN: ntfs_attr_find / ntfs_attr_record_resizeにおけるデータレース

タスク96がCPU1で4バイトを0xffff888100af1018に書き込み: ntfs_attr_record_resize+0xd2/0x130 ntfs_attr_record_rm+0xad/0x530 ntfs_delete+0x224/0x640 ntfs_unlink+0x14d/0x280 vfs_unlink+0x157/0x520

タスク95がCPU0で4バイトを0xffff888100af1018から読み込み: ntfs_attr_find+0x104/0x5b0 ntfs_attr_lookup+0x39c/0x10c0 ntfs_read_iomap_begin_resident+0xc6/0x230 ntfs_read_iomap_begin+0x5d/0xa0 iomap_iter+0x2e2/0x6e0 iomap_read_folio+0x147/0x2a0 ntfs_read_folio+0x108/0x170 filemap_read_folio+0x35/0x100 filemap_fault+0x993/0x1000

値の変更: 0x00000250 -> 0x000001f0

このアドレスは mrec + 0x18、すなわち mft_record.bytes_in_use を指しており、その変更は $FILE_NAME 属性の96バイトが削除されたことを示します。

residents iomapルックアップから iomap_end() に至るまで base_ni->mrec_lock を保持します。これにより、属性の走査およびその後続く iomap->inline_data(MFTレコードを指す)からのコピー操作が保護されます。非residentパスは手付かずのままにします:ntfs_lookup() は read_mapping_folio() を通じてインデックスfolioを読み込む際にディレクトリinodeの mrec_lock を既に保持しており、共有ラッパーでロックを取得すると mrec_lock での再帰的ロックによりデッドロックが発生するためです。fs/ntfs/dir.c の read_mapping_folio() コール前のコメントにも、同様の危険性が記載されています。

シークパスは同じルックアップヘルパーを使用しますが、iomap->inline_data を間接参照しません。そのパスから戻る前にロックを解放します。一方、通常の読み込みパスでは base_ni が iomap->private に記録され、ロックはその iomap_end() コールバックから解放されます。

16バイトのresidentファイルに対してフォールトを引き起こし、別のスレッドがそれに対して link()/unlink() を実行するリプロデューサでテストされました。修正前:約1秒間で40件のKCSANレポートが発生しました。修正後:206,090回の読み込み反復および423,540回のlink/unlinkサイクルにわたる180秒間、レポートは発生しませんでした。PROVE_LOCKINGビルドでは、同じリプロデューサを60秒間実行してもlockdepの警告(splat)はありませんでした。

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

責任者

Linux

予約する

2026年09月11日

モデレーション

承諾済み

エントリ

VDB-406655

EPSS

0.00000

アクティビティ

非常低い

ソース

Might our Artificial Intelligence support you?

Check our Alexa App!