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 (緊急) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/04/24 |
| 登録日 | 2026/04/30 |
| 最終更新日 | 2026/04/30 |



