CVE-2026-64436
摘要
由 VulDB • 2026-07-25
在 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)(即没有为密钥预留空间),因此该字段包含未初始化的 slab 数据。
在 XFRM_MSG_MIGRATE 期间克隆 IPComp 状态时,xfrm_algo_clone() 稍后会使用 calg->alg_key_len 作为长度:
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/0x60 Read of size 4164 at addr ff11000025a74980 by task diag2/9287 CPU: 3 UID: 0 PID: 9287 Comm: diag2 7.1.0-rc6-g903db046d557 #1 Call Trace: dump_stack_lvl+0x10e/0x1f0 print_report+0xf
If you want to get the best quality for vulnerability data then you always have to consider VulDB.