【活用ガイド】

JVNDB-2026-014364

LinuxのLinux Kernelにおける不特定の脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。ksmbdのsmb_inherit_dacl()関数内におけるnum_acesの検証とACEwalkの強化が行われました。smb_inherit_dacl()では、親ディレクトリのDACL xattrからオンディスクのnum_aces値を信用し、それを元にヒープ割り当てのサイズを決定していました。num_acesはle16_to_cpu(parent_pdacl-num_aces)からu16として読み取られますが、宣言されているpdacl_sizeとの整合性を検証していませんでした。認証されたクライアントは、親ディレクトリのsecurity.NTACLが改竄されている場合(例えば、オフラインでのxattr破損やparse_dacl()をバイパスするパスの同時操作により)、最小限の実際のACEデータしかない状態でnum_aces=65535を提示できます。これにより約8MBの割り当てが発生し(kzallocではないため初期化されていません)、後続のループは部分的にしかデータを埋めません。また、32ビットカーネルでは三方向のsize_t乗算オーバーフローを引き起こす可能性もありました。さらに、ACEの走査ループはoffsetof(struct smb_ace, access_req)という弱い最小サイズチェックを使用しており、ACEサイズが最小値未満の場合も拒否していませんでした。この問題はUML + KASAN + LOCKDEP環境にて実際のksmbdコード経路で再現されました。正規のmount.cifsクライアントがSMB経由で親ディレクトリを作成するとksmbdが有効なsecurity.NTACL xattrを書き込みますが、バックエンドファイルシステム上のNTACLバイナリが書き換えられ、num_acesが0xFFFFに設定されたもののposix_acl_hashが維持されているためksmbd_vfs_get_sd_xattr()のハッシュ検証は通過しました。その後のSMB2 CREATEで親の下に子が作成されると(シェアに"vfs objects = acl_xattr"が設定されている場合)、smb2_open()がsmb_inherit_dacl()を呼び出し、ページアロケータ失敗を引き起こします。パッチ適用後は、追加されたガードによって大きな割り当ての実行前に改竄された値を-EINVALで拒否し、smb2_open()はsmb2_create_sd_buffer()へフォールバックして子をデフォルトのSDで作成します。その結果、警告やクラッシュは発生しません。修正点は以下の通りです。1.num_acesをparse_dacl()で使用するのと同じ計算式でpdacl_sizeと照合して検証しました。2.オーバーフロー安全な割り当てのため、生のkmalloc(sizeof * num_aces * 2)をkmalloc_array(num_aces * 2, sizeof(...))に置き換えました。3.各ACEループのガードを強化し、有効な最小ACEサイズ(offsetof(smb_ace, sid) + CIFS_SID_BASE_SIZE)を要求し、過小サイズのACEを拒否するようにしました。これによりsmb_check_perm_dacl()やparse_dacl()の強化と整合しました。v1からv2では、合成テストモジュールでの停止表示を実用的なUML + KASAN複製に置換し、mount.cifsとSMB2 CREATE経路での再現に変更しました。さらにNamjaeによるコードレビューに従い、コードコメントからコミットハッシュの記述を削除し、parse_dacl()の参照は保持しました。
CVSS による深刻度 (CVSS とは?)

CVSS v3 による深刻度
基本値: 8.8 (重要) [その他]
  • 攻撃元区分: ネットワーク
  • 攻撃条件の複雑さ: 低
  • 攻撃に必要な特権レベル: 低
  • 利用者の関与: 不要
  • 影響の想定範囲: 変更なし
  • 機密性への影響(C): 高
  • 完全性への影響(I): 高
  • 可用性への影響(A): 高
影響を受けるシステム


Linux
  • Linux Kernel 5.15 以上 6.12.84 未満
  • Linux Kernel 6.13 以上 6.18.25 未満
  • Linux Kernel 6.19 以上 7.0.2 未満

想定される影響

当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。
また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。
さらに、当該ソフトウェアが完全に停止する可能性があります。
そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。
対策

リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。
ベンダ情報

CWEによる脆弱性タイプ一覧  CWEとは?

  1. 情報不足(CWE-noinfo) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-31706
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-31706
  2. 関連文書 : ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3e4e2ea2a781018ed5d75f969e3e5606beb66e48)
  3. 関連文書 : ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3e5360b422dd741cb315654a191fa73869a37414)
  4. 関連文書 : ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/59c32abaaec9cdd6164811c7e864e72f7554b82d)
  5. 関連文書 : ksmbd: validate num_aces and harden ACE walk in smb_inherit_dacl() - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/063a7409b0de46d7c770b65bb0338e6fdb3b1f0a)
更新履歴

  • [2026年05月08日]
      掲載