Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2022-1015 — Análise & Exploração 1-Day do Linux Kernel | Kitploit
Ferramentas/GitHubGitHub/more-kohii/cve-2022-1015
Análise de VulnerabilidadesExploraçãoAprendizado e EducaçãoExploração de Binários
GitHubmore-kohii/cve-2022-1015

CVE-2022-1015

Análise & Exploração 1-Day do Linux Kernel

Ver Repositório
11há 3 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2022-1015

Causa raiz

Na função nft_parse_register, quando arg passa pelo caso default, não há validação, o que causa um out-of-bounds (oob) na stack da função nft_do_chain.

Nesse momento, utilizando a expressão payload, é possível tanto ler quanto escrever.

A payload funciona da seguinte forma:

image

Ou seja, ajustando adequadamente o índice, é possível fazer oob read/write na stack.

Porém, existe uma função que valida 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;

Observando o código acima, é necessário satisfazer .

Baixar ferramenta
reg * NFT_REG32_SIZE + len > sizeof_field(struct nft_regs, data)

Usando constantes, basta satisfazer reg * 4 + len > 80.

Ou seja, é preciso ajustar len adequadamente conforme reg.

Código-fonte de referência

  • 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;
    	}
    }