CVE-2026-93787 in Linux
要約
〜によって VulDB • 2026年09月24日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
smb: クライアント: cifs_filldir() 内で SMB レスポンスの末尾に対してディレクトリエントリ名を境界チェックする
cifs_filldir() は、サーバーから提供される長さ (de.namelen) を使用して、SMB1 TRANS2_FIND_FIRST / FIND_NEXT のレスポンスからエントリ名をコピーします。kmalloc された SMB レスポンスバッファは範囲が制限されていますが、filldir64() -> verify_dirent_name() -> memchr() が namelen バイトを読み込む前に、de.name + de.namelen が依然としてそのバッファ内に収まっているかどうかをチェックする処理がありません。
したがって、ディレクトリエントリで過大な FileNameLength を返す悪意のある SMB1 サーバーは、memchr() がレスポンススラブバッファの末尾を超えて読み込む原因となります。攻撃者が制御するサーバーによって提供される CIFS マウント上のディレクトリをリストできる任意のユーザー(マウントされたディレクトリに対する getdents64())から到達可能です:
BUG: KASAN: slab-out-of-bounds in memchr+0x71/0x80 Read of size 1 at addr ffff88800e0640cc by task poc/115 Call Trace: dump_stack_lvl+0x64/0x80 print_report+0xce/0x620 kasan_report+0xec/0x120 memchr+0x71/0x80 filldir64+0x4c/0x6a0 cifs_filldir.constprop.0+0x9bb/0x1e00 cifs_readdir+0x2101/0x3380 iterate_dir+0x19c/0x520 __x64_sys_getdents64+0x126/0x210 do_syscall_64+0x107/0x5a0 entry_SYSCALL_64_after_hwframe+0x77/0x7f
レスポンスの末尾へのポインタを cifs_filldir() に渡して、その境界を超えて名前に拡張されるエントリを拒否します。
このバグは Artiphishell の vTriage パイプラインによって発見されました。同パイプラインは、パッチ未適用のカーネル上で KASAN レポートを確実にトリガーするユーザー空間レプロデューサー(擬似悪意のある SMB1 サーバーと getdents64() クライアント)を生成しました。以下の修正は Claude コーディングアシスタントを使用して草案が作成されました;ユーザー空間レプロデューサーは要請に応じて提供可能です。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.