【活用ガイド】

JVNDB-2026-013618

LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性

概要

Linuxカーネルにおいて、以下の脆弱性が修正されました。mptcpにおける__inet_lookup_establishedのslab-use-after-free問題が修正されました。ehashテーブルのルックアップはロックレスで行われ、RCUリードサイドクリティカルセクション中のソケットメモリの安定性を保証するためにSLAB_TYPESAFE_BY_RCUに依存しています。tcp_protおよびtcpv6_protはいずれもproto_register()を通じてこのフラグ付きでスラブキャッシュを作成します。しかし、MPTCPのmptcp_subflow_init()はinet_init()(fs_initcall、レベル5)中にtcpv6_protをtcpv6_prot_overrideにコピーしますが、inet6_init()(module_init/device_initcall、レベル6)がproto_register(&tcpv6_prot)を呼び出す前であるため、その時点でtcpv6_prot.slabはまだNULLであり、結果としてtcpv6_prot_override.slabは永続的にNULLのままになります。これにより、MPTCPのIPv6サブフロウの子ソケットはTCPv6スラブキャッシュではなくkmalloc(kmalloc-4kに該当)で割り当てられます。kmalloc-4kキャッシュはSLAB_TYPESAFE_BY_RCUを欠いているため、子ソケット用に設計上解除されているSOCK_RCU_FREEなしでこれらのソケットが解放されると、メモリが即座に再利用可能になります。その結果、rcu_read_lock下の同時ehashルックアップが解放済みメモリにアクセスし、__inet_lookup_establishedでslab-use-after-freeが発生します。この問題を修正するため、IPv6固有の初期化処理をmptcp_subflow_init()から新たなmptcp_subflow_v6_init()に分割し、プロトコル登録前にmptcp_proto_v6_init()から呼び出すようにしました。これによりtcpv6_prot_override.slabが正しくSLAB_TYPESAFE_BY_RCUスラブキャッシュを継承することが保証されます。
CVSS による深刻度 (CVSS とは?)

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


Linux
  • Linux Kernel 5.12.1 以上 5.15.203 未満
  • Linux Kernel 5.16 以上 6.1.169 未満
  • Linux Kernel 6.13 以上 6.18.23 未満
  • Linux Kernel 6.19 以上 6.19.13 未満
  • Linux Kernel 6.2 以上 6.6.135 未満
  • Linux Kernel 6.7 以上 6.12.82 未満
  • Linux Kernel 5.12
  • Linux Kernel 7.0

想定される影響

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

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

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

  1. 解放済みメモリの使用(CWE-416) [NVD評価]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2026-31669
参考情報

  1. National Vulnerability Database (NVD) : CVE-2026-31669
  2. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/3fd6547f5b8ac99687be6d937a0321efda760597)
  3. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/eb9c6aeb512f877cf397deb1e4526f646c70e4a7)
  4. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/9b55b253907e7431210483519c5ad711a37dafa1)
  5. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/b313e9037d98c13938740e5ebda7852929366dff)
  6. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/15fa9ead4d5e6b6b9c794e84144146c917f2cb62)
  7. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47)
  8. 関連文書 : mptcp: fix slab-use-after-free in __inet_lookup_established - kernel/git/stable/linux.git - Linux kernel stable tree (https://git.kernel.org/stable/c/fb1f54b7d16f393b8b65d328410f78b4beea8fcc)
更新履歴

  • [2026年04月30日]
      掲載