Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-1015 — Linux Kernel 1-Day Analyse & Exploitation | Kitploit
Tools/GitHubGitHub/more-kohii/cve-2022-1015
SchwachstellenanalyseExploitationLernen & BildungBinary-Exploitation
GitHubmore-kohii/cve-2022-1015

CVE-2022-1015

Linux Kernel 1-Day Analyse & Exploitation

Repository anzeigen
11vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2022-1015

Ursache

In der Funktion nft_parse_register wird keine Überprüfung durchgeführt, wenn das Argument in den Default-Fall fällt, was zu einem Out-of-Bounds (OOB) auf dem Stack der Funktion nft_do_chain führt.

Dabei kann man mit dem Payload-Ausdruck sowohl Lese- als auch Schreiboperationen durchführen.

Der Payload verhält sich wie folgt:

image

Das bedeutet, dass man durch geeignete Anpassung des Indexes OOB-Lese- und Schreiboperationen auf dem Stack durchführen kann.

Allerdings gibt es eine Funktion, die die Regs validiert.

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;

Aus dem obigen Code geht hervor, dass die Bedingung reg * NFT_REG32_SIZE + len > sizeof_field(struct nft_regs, data) erfüllt sein muss.

Wenn man die Konstanten einsetzt, muss reg * 4 + len > 80 erfüllt sein.

Tool herunterladen

Das heißt, man muss die Länge len entsprechend an reg anpassen.

Referenzquellcode

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