Linux 内核的 nftables 子系统(具体位于 net/netfilter 模块)中发现了一个漏洞,攻击者可以利用该漏洞通过 nft_pipapo_destroy() 中的双重释放漏洞实现本地权限提升。该漏洞编号为 CVE-2024-26809,影响内核 6.1-rc1 及更高版本以及 5.15.54 及更高版本。
该漏洞源于 nftables 中用于数据包过滤的 pipapo 集合销毁过程中的一个逻辑缺陷。在特定条件下,某个元素可能同时存在于 match 和 clone 中,而函数会尝试两次释放它们,从而导致内存损坏。
有问题的功能:
当设置了脏标志时,在重叠的内存区域上错误地调用了两次 nft_set_pipapo_match_destroy()。发生重叠的原因是集合元素可能同时属于匹配和克隆。
CVE-2024-26809 漏洞利用了内核对象缓存系统(特别是 kmalloc-256)的堆整理和操作。攻击者策略性地分配和释放内存,用于:
- 重叠 nftables 对象
- 泄漏内核地址
- 劫持函数指针(例如 expr->ops->dump)
- 执行 ROP 小工具以获取 root 权限
分析指出: “完成堆栈迁移后,我们可以运行 ROPgadget 并最终获得 root shell ” 。
此次攻击展示了对内核内存结构的深入理解,并展示了如何利用微妙的内存错误来破坏整个系统。
一个可行的概念验证(PoC)漏洞可以利用,说明如何链接该漏洞以获得内核代码执行。
此漏洞已通过此提交修复。强烈建议受影响内核版本的用户更新其系统以包含此补丁,从而降低 CVE-2024-26809 带来的风险。
发表评论
您还未登录,请先登录。
登录