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-2026-41285-OpenBSD-v6daemons-go-brrr — Eine IPv6-ND-Option mit Länge null. Eine fehlende Prüfung. Der Daemon läuft rückwärts und bleibt in der Schleife. An OpenBSD gemeldet, behoben, CVE zugewiesen. | Kitploit
Tools/GitHubGitHub/rat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr
SchwachstellenanalyseExploitationFuzzingNetzwerksicherheitDrahtlose Sicherheit
GitHubrat5ak/cve-2026-41285-openbsd-v6daemons-go-brrr

CVE-2026-41285-OpenBSD-v6daemons-go-brrr

Eine IPv6-ND-Option mit Länge null. Eine fehlende Prüfung. Der Daemon läuft rückwärts und bleibt in der Schleife. An OpenBSD gemeldet, behoben, CVE zugewiesen.

Repository anzeigen
6vor 4 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 →
Teilen

CVE-2026-41285: Ein Paket tötet IPv6 auf OpenBSD

Ein einzelnes manipuliertes ICMPv6-Paket aus dem lokalen Netzwerk lässt slaacd und/oder rad dauerhaft hängen. Die IPv6-SLAAC-Adressautokonfiguration fällt aus, bis jemand den Daemon manuell neu startet. Keine Authentifizierung, keine Privilegien, 18 Bytes ICMPv6-Nutzlast.

CVECVE-2026-41285
FehlerklasseEndlosschleife durch Integer-Unterlauf
GrundursacheDer ND-Optionsparser führt nd_opt_len * 8 - 2 aus, ohne len==0 zu prüfen
Komponentesbin/slaacd/engine.c, usr.sbin/rad/engine.c
AuswirkungDauerhafter DoS der IPv6-SLAAC (slaacd) oder des RA-Dienstes (rad)
ErforderlichEin beliebiges Gerät im selben L2-Netzwerksegment
GetestetOpenBSD 7.8 GENERIC amd64

Der Fehler

RFC 4861 §4.6 besagt, dass ND-Optionen mit der Länge null ungültig sind und stillschweigend verworfen werden müssen. Das eigene nd6_options() des Kernels in sys/netinet6/nd6.c macht das korrekt. Aber das rohe ICMPv6-Paket wird trotzdem an Userland-Sockets zugestellt, bevor diese Prüfung greift.

slaacd und rad parsen ND-Optionen beide selbst. Die Schleife sieht so aus:

root@kitploit:~
while (len > 0) {
    // ...
    optlen = nd_opt->nd_opt_len * 8 - 2;  // nd_opt_len is uint8_t
    if (optlen > len)
        break;
    len += 2;
    // advance pointer by optlen... which is (uint32_t)-2 promoted from int
}

Wenn nd_opt_len == 0: Der Ausdruck 0 * 8 - 2 wird zu int befördert → -2. Die Prüfung (-2 > len) ist immer falsch (vorzeichenbehafteter Vergleich, len ist positiv). Dann wird len += 2 ausgeführt und der Zeiger geht um 2 Bytes zurück. Die Schleife kommt nie weiter. Die CPU bleibt bei 100%. Für immer.

Der Kernel hat seine eigene Kopie validiert. Der Userland-Daemon bekam das rohe Original. Niemand hat es slaacd gesagt.

Auswirkungen

  • Ein Paket → slaacd-Engine hängt in einer Endlosschleife bei 100% CPU
  • Alle folgenden RAs werden ignoriert → keine neuen SLAAC-Adressen konfiguriert
  • Vorhandene Adressen laufen schließlich ab (Lebensdauer endet, keine Erneuerung)
  • IPv6-Konnektivität fällt auf allen von slaacd verwalteten Schnittstellen aus
  • Gleicher Angriff gegen rad: Ein manipuliertes RS tötet den RA-Dienst für das Link
  • Die Wiederherstellung erfordert ein manuelles rcctl restart slaacd oder einen Neustart

PoC

root@kitploit:~
python3 poc/kill_slaacd.py <interface>

Erfordert scapy. Sendet eine Router Advertisement mit einer einzigen ND-Option, bei der nd_opt_len = 0 ist. Das ist alles. Der Optionstyp spielt keine Rolle (PoC verwendet Typ 200 / unbekannt).

Für den vollständigen End-to-End-Beweis (zeigt SLAAC funktionsfähig -> Exploit -> SLAAC tot):

root@kitploit:~
python3 poc/prove_dos.py

Belege

root@kitploit:~
── Before exploit ──
  SLAAC addresses: 2001:db8:1:0:df6f:edeb:6e3a:2640, ...
  Engine CPU: 0.0%

── After one packet ──
  Engine CPU: 23.1% → 43.3% (climbing)
  New RA with 2001:db8:2::/64 sent → no address configured
  slaacd is dead. IPv6 autoconf: DEAD.

Bekannte Vorfälle

Dieselbe Angriffsfläche wie CVE-2022-27881 und CVE-2022-27882 (frühere slaacd-Endlosschleifen in engine.c, ebenfalls ND-Option-Parsing). Dies ist eine neue Instanz derselben Fehlerklasse – die früheren Fixes haben nicht alle Parsing-Schleifen abgedeckt.

Behebung

Prüfe nd_opt_len == 0, bevor du Arithmetik darauf ausführst. Brich aus der Schleife aus. Das macht der Kernel bereits in nd6_options():

root@kitploit:~
if (nd_opt->nd_opt_len == 0)
    break;  // or: goto bad;

Vorgeschlagener Patch für slaacds parse_ra(), debug_log_ra() und rads RS-Parser – alle drei Schleifen benötigen dieselbe einzeilige Absicherung.

Chronologie

  • 2026-04-12: An [email protected] mit PoC und Patch gemeldet
  • 2026-04-20: CVE-2026-41285 von MITRE vergeben

Sei nicht dumm

Dies ist ein DoS im lokalen Netzwerk. Wenn du dich im selben L2-Segment befindest wie eine OpenBSD-Kiste, die slaacd ausführt, friert ein einziges Paket dessen IPv6 ein. Sende es nicht an Netzwerke, die dir nicht gehören. Wenn du OpenBSD betreibst, suche nach einem Patch oder füge die len==0-Absicherung selbst hinzu.


Daniel Wade - GitHub · Twitter/X · Bluesky · nadsec.online

Tool herunterladen