Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2022-1015 — Análisis y Explotación de Vulnerabilidades de 1 Día en el Kernel de Linux | Kitploit
Herramientas/GitHubGitHub/more-kohii/cve-2022-1015
Análisis de VulnerabilidadesExplotaciónAprendizaje y EducaciónExplotación de Binarios
GitHubmore-kohii/cve-2022-1015

CVE-2022-1015

Análisis y Explotación de Vulnerabilidades de 1 Día en el Kernel de Linux

Ver Repositorio
11hace 3 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2022-1015

Causa raíz

En la función nft_parse_register, al no validar cuando el argumento pasa al caso default, se produce un OOB en la pila de la función nft_do_chain.

En este momento, usando la expresión payload se pueden hacer tanto lectura como escritura.

El payload realiza la siguiente operación:

image

Es decir, ajustando adecuadamente el índice, se pueden realizar lecturas y escrituras OOB en la pila.

Sin embargo, existe una función que valida los registros (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;

En el código anterior, se debe cumplir que reg * NFT_REG32_SIZE + len > sizeof_field(struct nft_regs, data).

Si se ponen constantes, se debe cumplir reg * 4 + len > 80.

Es decir, se debe ajustar adecuadamente len según reg.

Código fuente de referencia

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