JVNDB-2026-032016 | |
LinuxのLinux Kernelにおける境界外読み取りに関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が解決されました。net: af_key: IPComp状態のためにalg_key_lenを初期化しなかった問題です。pfkey_msg2xfrm_state()は、IPComp (SADB_X_SATYPE_IPCOMP) の場合を処理する際に、x->calgを割り当ててアルゴリズム名だけをコピーしています。```x->calg = kmalloc_obj(*x->calg);if (!x->calg) { err = -ENOMEM; goto out;}strcpy(x->calg->alg_name, a->name);x->props.calgo = sa->sadb_sa_encrypt;```同じ関数内の認証(x->aalg)および暗号化(x->ealg)のブランチとは異なり、圧縮ブランチはcalg->alg_key_lenを初期化していませんでした。IPCompはキーを持たず、割り当てるのはsizeof(struct xfrm_algo)のみ(キー領域なし)であるため、このフィールドは初期化されていないスラブデータのまま残っていました。calg->alg_key_lenは、XFRM_MSG_MIGRATE中にIPComp状態のクローン作成時にxfrm_algo_clone()で長さとして用いられます。```xfrm_state_migrate() xfrm_state_clone_and_setup() x->calg = xfrm_algo_clone(orig->calg); kmemdup(orig, xfrm_alg_len(orig));```ここでxfrm_alg_len()は sizeof(*alg) + (alg_key_len + 7) / 8 を返します。初期化されていない(ゴミ値の)alg_key_lenが非ゼロの場合、kmemdup()は68バイトのcalgオブジェクトの末尾を越えて読み込みます。PF_KEY経由でIPComp SAを追加し、それを移行すると(net-next, KASAN, init_on_alloc=0環境下で)以下のようなバグが発生します。```BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x44/0x60Read of size 4164 at addr ff11000025a74980 by task diag2/9287CPU: 3 UID: 0 PID: 9287 Comm: diag2 7.1.0-rc6-g903db046d557 #1Call Trace: <TASK> dump_stack_lvl+0x10e/0x1f0 print_report+0xf7/0x600 kasan_report+0xe4/0x120 kasan_check_range+0x105/0x1b0 __asan_memcpy+0x23/0x60 kmemdup_noprof+0x44/0x60 xfrm_state_migrate+0x70a/0x1da0 xfrm_migrate+0x753/0x18a0 xfrm_do_migrate+0xb47/0xf10 xfrm_user_rcv_msg+0x411/0xb50 netlink_rcv_skb+0x158/0x420 xfrm_netlink_rcv+0x71/0x90 netlink_unicast+0x584/0x850 netlink_sendmsg+0x8b0/0xdc0 ____sys_sendmsg+0x9f7/0xb90 ___sys_sendmsg+0x134/0x1d0 __sys_sendmsg+0x16d/0x220 do_syscall_64+0x116/0x7d0 entry_SYSCALL_64_after_hwframe+0x77/0x7f</TASK>アロケート元タスク9287: kasan_save_stack+0x33/0x60 kasan_save_track+0x14/0x30 __kasan_kmalloc+0xaa/0xb0 pfkey_add+0x2652/0x2ea0 pfkey_process+0x6d0/0x830 pfkey_sendmsg+0x42c/0x850 __sys_sendto+0x461/0x4b0 __x64_sys_sendto+0xe0/0x1c0 do_syscall_64+0x116/0x7d0 entry_SYSCALL_64_after_hwframe+0x77/0x7f```問題のアドレスはオブジェクトff11000025a74980に属し、これはサイズ96のkmalloc-96キャッシュのものです。問題のアドレスは割り当てられた68バイト領域[ff11000025a74980, ff11000025a749c4)の先頭0バイトの位置にあります。未初期化の値によっては、同じフィールドが過剰なkmemdup()の割り当てを要求し、移行クローンを失敗させることもあります。XFRMのnetlink経路には影響はありません。verify_one_alg()関数はxfrm_alg_len()より短いXFRMA_ALG_COMP属性を拒否するため、XFRM_MSG_NEWSA経由で追加されたcalgは常に自己整合性があります。これらを踏まえ、calg->alg_key_lenを0で初期化し、aalgおよびealgのブランチに合わせました。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.1 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/25 |
| 登録日 | 2026/09/04 |
| 最終更新日 | 2026/09/04 |



