Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!
CVE-2026-52924 — Technische Analyse von CVE-2026-52924, einer kritischen Use-after-Free-Schwachstelle in der Behandlung veralteter SCTP-Cookies im Linux-Kernel, einschließlich Grundursache, Angriffsablauf, Fix und Erkennungsmethoden. | Kitploit
Technische Analyse von CVE-2026-52924, einer kritischen Use-after-Free-Schwachstelle in der Behandlung veralteter SCTP-Cookies im Linux-Kernel, einschließlich Grundursache, Angriffsablauf, Fix und Erkennungsmethoden.
Die Schwachstelle tritt in der Behandlung veralteter COOKIE-ECHO-Pakete durch die SCTP-Zustandsmaschine auf. Das Problem betrifft die unsachgemäße Bereinigung der ausgehenden Stream-Warteschlange, wenn eine Assoziation zurückgesetzt wird.
Angriffsablauf
Normaler Betrieb: Die Assoziation wechselt in den Zustand COOKIE_ECHOED
Benutzerdaten in der Warteschlange: Die Anwendung sendet Daten, die zur Übertragung eingereiht werden
Fehler „Veraltetes Cookie": Der entfernte Peer sendet einen Fehler „Veraltetes Cookie"
Rollback ausgelöst: Die Assoziation wird von COOKIE_ECHOED → COOKIE_WAIT zurückgesetzt
Stream-Zustand aktualisiert:sctp_stream_update() gibt die alte Stream-Tabelle frei und installiert eine neue
Ungültiger Zeiger:stream->out_curr zeigt weiterhin auf den freigegebenen sctp_stream_out-Eintrag
Dequeue-Zugriff: Wenn der Scheduler versucht, aus der Warteschlange zu entfernen (FCFS, RR, PRIO), greift er auf out_curr->ext zu
Use-After-Free: Der Zugriff auf freigegebenen Speicher führt über die KASAN-Erkennung zu einem Kernel-Absturz
Problematischer Codeablauf
root@kitploit:~
sctp_sf_do_5_2_6_stale():
├─ Empfange Fehler „Veraltetes Cookie"
├─ Setze Assoziationszustand zurück
└─ Rufe sctp_stream_update() auf
├─ Gebe alte Stream-Tabelle frei
├─ Installiere neue Stream-Tabelle
└─ FEHLER: stream->out_curr wird NICHT ungültig gemacht ❌
Später beim Entfernen aus der Warteschlange:
sctp_sched_fcfs_dequeue():
└─ Zugriff auf stream->out_curr->ext (FREIGEGEBENER SPEICHER) 💥
Absturzbeispiel
root@kitploit:~
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
Warum ein einfaches Aktualisieren von out_curr nicht ausreicht
Eine naive Lösung könnte darin bestehen, lediglich stream->out_curr zu löschen:
Alle ausstehenden Übertragungsdaten werden verworfen
Alle Einträge der Wiederübertragungswarteschlange werden freigegeben
Zwischengespeicherte Scheduler-Zeiger (out_curr usw.) werden ungültig gemacht
Der Stream-Zustand kann beim Neustart von COOKIE_WAIT sicher neu aufgebaut werden
Es gibt keine verwaisten Referenzen auf freigegebene Stream-Einträge
Implementierungsort
Datei:net/sctp/sm_statefuns.c Funktion:sctp_sf_do_5_2_6_stale() Ergänzung: Aufruf von sctp_outq_free(&asoc->outqueue) vor sctp_stream_update()
root@kitploit:~
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... vorhandener Code ...
// Ausgangswarteschlange leeren, bevor der Stream-Zustand neu aufgebaut wird
sctp_outq_free(&asoc->outqueue);
// Jetzt ist die Aktualisierung des Streams sicher
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... Rest der Funktion ...
}
Auswirkungsanalyse
Schweregradfaktoren (CVSS 9.8)
Angriffsvektor: Netzwerk (CVSS:3.1/AV:N)
Angriffskomplexität: Niedrig (CVSS:3.1/AC:L)
Erforderliche Privilegien: Keine (CVSS:3.1/PR:N)
Benutzerinteraktion: Keine (CVSS:3.1/UI:N)
Scope: Unverändert (CVSS:3.1/S:U)
Auswirkung auf Vertraulichkeit: Hoch (CVSS:3.1/C:H)
Auswirkung auf Integrität: Hoch (CVSS:3.1/I:H)
Auswirkung auf Verfügbarkeit: Hoch (CVSS:3.1/A:H)
Voraussetzungen für die Ausnutzung
Netzwerkzugriff auf das Zielsystem (SCTP-Port offen)
Fähigkeit, SCTP-Pakete zum Aufbau einer Verbindung zu senden
Senden eines Fehlers „Veraltetes Cookie" zum richtigen Zeitpunkt (Zustand COOKIE_ECHOED)
Auslösen einer Scheduler-Dequeue-Operation
Angriffsszenarien
Denial of Service: Wiederholter Kernel-Absturz → DoS
Informationsoffenlegung: Lesen von Kernel-Speicher über UAF
Privilegienerweiterung: Potenziell durch Speichermanipulation
Remote-Codeausführung: Möglich mit Speicherkorruptions-Exploit
Erkennungsmethoden
KASAN-Erkennung (Laufzeit)
root@kitploit:~
# KASAN in der Kernel-Konfiguration aktivieren
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# Laufzeitausgabe zeigt:
BUG: KASAN: slab-use-after-free
Statische Analyse
root@kitploit:~
# Nach unsicherem stream->out_curr-Zugriff ohne Validierung suchen
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
Netzwerkerkennung
Überwachung auf SCTP-Fehlerpakete „Veraltetes Cookie" (Typ 3, Code 1)
Verfolgung von Verbindungs-Rollback-Mustern
Alarmierung bei schnellen COOKIE_ECHOED → COOKIE_WAIT-Übergängen
Minderungsstrategien
Temporäre Minderungen (bis zum Patch)
SCTP deaktivieren: SCTP-Modul entfernen oder SCTP-Ports (132, 132 UDP) blockieren