PoC 发布:CVE-2024-26809 利用 nftables Double-Free 获取 Root Shell

阅读量17158

发布时间 : 2025-05-12 14:07:05

x
译文声明

本文是翻译文章,文章原作者 Ddos,文章来源:securityonline

原文地址:https://securityonline.info/poc-released-cve-2024-26809-exploits-nftables-double-free-to-achieve-root-shell/

译文仅供参考,具体内容表达以及含义原文为准。

CVE-2024-26581 PoC 漏洞利用 nftables、CVE-2024-26809

Linux 内核的 nftables 子系统(具体位于 net/netfilter 模块)中发现了一个漏洞,攻击者可以利用该漏洞通过 nft_pipapo_destroy() 中的双重释放漏洞实现本地权限提升。该漏洞编号为 CVE-2024-26809,影响内核 6.1-rc1 及更高版本以及 5.15.54 及更高版本。

该漏洞源于 nftables 中用于数据包过滤的 pipapo 集合销毁过程中的一个逻辑缺陷。在特定条件下,某个元素可能同时存在于 match 和 clone 中,而函数会尝试两次释放它们,从而导致内存损坏。

有问题的功能:

static void nft_pipapo_destroy(const struct nft_ctx *ctx,
			       const struct 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);
	...

当设置了脏标志时,在重叠的内存区域上错误地调用了两次 nft_set_pipapo_match_destroy()。发生重叠的原因是集合元素可能同时属于匹配和克隆。

CVE-2024-26809 漏洞利用了内核对象缓存系统(特别是 kmalloc-256)的堆整理和操作。攻击者策略性地分配和释放内存,用于:

  • 重叠 nftables 对象
  • 泄漏内核地址
  • 劫持函数指针(例如 expr->ops->dump)
  • 执行 ROP 小工具以获取 root 权限

分析指出: “完成堆栈迁移后,我们可以运行 ROPgadget 并最终获得 root shell ” 。

此次攻击展示了对内核内存结构的深入理解,并展示了如何利用微妙的内存错误来破坏整个系统。

一个可行的概念验证(PoC)漏洞可以利用,说明如何链接该漏洞以获得内核代码执行。

漏洞已通过此提交修复。强烈建议受影响内核版本的用户更新其系统以包含此补丁,从而降低 CVE-2024-26809 带来的风险。

本文翻译自securityonline 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
安全客
分享到:微信

发表评论

Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全KER All Rights Reserved 京ICP备08010314号-66