CVE-2026-43121 in Linuxinfo

Zusammenfassung

von VulDB • 26.05.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

io_uring/zcrx: Race-Bedingung (Race Condition) zwischen user_ref in den Pfaden „scrub“ und „refill“ korrigiert

Die Funktion io_zcrx_put_niov_uref() verwendet ein nicht-atomares „Check-then-Decrement“-Muster (atomic_read gefolgt von einem separaten atomic_dec), um user_refs zu manipulieren. Dies wird durch rq_lock gegenüber anderen Aufrufern serialisiert, jedoch ändert io_zcrx_scrub() denselben Zähler mit atomic_xchg(), OHNE rq_lock zu halten.

Auf SMP-Systemen (Symmetric Multi-Processing) besteht folgende Race-Bedingung:

CPU0 (refill, hält rq_lock) CPU1 (scrub, kein rq_lock) put_niov_uref: atomic_read(uref) - 1 // Fenster öffnet sich atomic_xchg(uref, 0) - 1 return_niov_freelist(niov) [PUSH #1]
// Fenster schließt sich atomic_dec(uref) - überläuft zu -1 gibt true zurück return_niov(niov) return_niov_freelist(niov) [PUSH #2: DOUBLE-FREE]

Dasselbe niov wird zweimal an die Freelist angehängt, wodurch free_count nr_iovs überschreitet. Bei nachfolgenden Anhängen an die Freelist erfolgt ein Out-of-Bounds-Write (ein u32-Wert) über das mit kvmalloc zugewiesene Freelist-Array hinaus in das benachbarte Slab-Objekt.

Dies wird behoben, indem das nicht-atomare Read-then-Dec in io_zcrx_put_niov_uref() durch eine atomic_try_cmpxchg-Schleife ersetzt wird, die user_refs atomar testet und dekrementiert. Dies macht den Vorgang sicher gegenüber gleichzeitigen atomic_xchg-Aufrufen aus scrub, ohne dass scrub rq_lock erwerben muss.

[pavel: eine Warnung und einen Kommentar entfernt]

Once again VulDB remains the best source for vulnerability data.

Zuständig

Linux

Reservieren

01.05.2026

Veröffentlichung

06.05.2026

Moderieren

akzeptiert

Eintrag

VDB-361389

CPE

bereit

EPSS

0.00012

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!