更多全球网络安全资讯尽在邑安全
漏洞概述
Linux内核的nftables子系统(特别是net/netfilter模块)中发现一个高危漏洞,攻击者可利用nft_pipapo_destroy()函数中的双重释放(double-free)漏洞实现本地提权。该漏洞编号为CVE-2024-26809,影响内核版本6.1-rc1及以上以及5.15.54及以上的系统。
技术原理
该漏洞源于nftables数据包过滤功能中pipapo集合销毁过程的逻辑缺陷。在特定条件下,某个元素可能同时存在于match和clone中,导致函数尝试对同一内存区域执行两次释放操作,从而引发内存损坏。
问题函数关键片段:
staticvoidnft_pipapo_destroy(conststruct nft_ctx *ctx, conststruct nft_set *set) {
struct nft_pipapo *priv = nft_set_priv(set);
struct nft_pipapo_match *m;
int cpu;
m = rcu_dereference_protected(priv->match, true);
if (m) {
...
nft_set_pipapo_match_destroy(ctx, set, m);
...
}
if (priv->clone) {
m = priv->clone;
if (priv->dirty)
nft_set_pipapo_match_destroy(ctx, set, m);
...
当dirty标志被设置时,该函数会对重叠的内存区域错误地调用两次nft_set_pipapo_match_destroy()。
利用方式
CVE-2024-26809的利用过程涉及通过内核对象缓存系统(特别是kmalloc-256)进行堆布局和操控。攻击者通过精心设计的内存分配与释放操作实现:
-
重叠nftables对象 -
泄露内核地址 -
劫持函数指针(如expr->ops->dump) -
执行ROP(返回导向编程)指令链获取root权限
技术分析指出:"完成栈迁移后,我们可以运行ROPgadget并最终获得root shell"。该攻击展示了攻击者对内核内存结构的深入理解,以及如何将细微的内存错误武器化以实现完全系统控制。
修复建议
目前已有可用的概念验证(PoC)漏洞利用代码,演示了如何串联该漏洞实现内核代码执行。受影响内核版本的用户应立即更新系统以应用相关补丁,消除CVE-2024-26809带来的安全风险。
原文来自: securityonline.info
原文链接: https://securityonline.info/
推荐文章
1
2
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论