Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-1015 — Linux 内核 1-Day 分析与利用 | Kitploit
工具/GitHubGitHub/more-kohii/cve-2022-1015
漏洞分析漏洞利用学习与教育二进制利用
GitHubmore-kohii/cve-2022-1015

CVE-2022-1015

Linux 内核 1-Day 分析与利用

查看仓库
113年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2022-1015

根因

在 nft_parse_register 函数中,当 arg 以 default 方式传递时未进行验证,导致 nft_do_chain 函数的栈上发生 OOB(越界)漏洞。

此时利用 payload expression 可以同时进行读和写操作。

payload 的行为如下所示。

image

也就是说,通过适当调整索引,可以在栈上进行 OOB 读和写操作。

但是,regs 存在一个进行验证的函数。

root@kitploit:~
default:
		if (reg < NFT_REG_1 * NFT_REG_SIZE / NFT_REG32_SIZE)
			return -EINVAL;
		if (len == 0)
			return -EINVAL;
		if (reg * NFT_REG32_SIZE + len >
		    sizeof_field(struct nft_regs, data))
			return -ERANGE;

		if (data != NULL && type != NFT_DATA_VALUE)
			return -EINVAL;
		return 0;

查看上述代码,必须满足 reg * NFT_REG32_SIZE + len > sizeof_field(struct nft_regs, data) 的条件。

代入常量后,就是 reg * 4 + len > 80,满足这个条件即可。

也就是说,需要根据 reg 适当调整 len。

参考的源代码

  • nft_regs

    root@kitploit:~
    struct nft_regs {
    	union {
    		u32			data[20];
    		struct nft_verdict	verdict;
    	};
    };
    
  • nft_do_chain

    root@kitploit:~
    unsigned int
    nft_do_chain(struct nft_pktinfo *pkt, void *priv)
    {
    	const struct nft_chain *chain = priv, *basechain = chain;
    	const struct net *net = nft_net(pkt);
    	struct nft_rule *const *rules;
    	const struct nft_rule *rule;
    	const struct nft_expr *expr, *last;
    	struct nft_regs regs;
    	...
    }
    
  • nft_parse_register

    root@kitploit:~
    static unsigned int nft_parse_register(const struct nlattr *attr)
    {
    	unsigned int reg;
    
    	reg = ntohl(nla_get_be32(attr));
    	switch (reg) {
    	case NFT_REG_VERDICT...NFT_REG_4:
    		return reg * NFT_REG_SIZE / NFT_REG32_SIZE;
    	default:
    		return reg + NFT_REG_SIZE / NFT_REG32_SIZE - NFT_REG32_00;
    	}
    }
    
下载工具