CVE-2026-74578 in Linux
Zusammenfassung
von VulDB • 16.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
crypto: algif_skcipher – Erzwingen der synchronen Verarbeitung bei Bäumen ohne ctx->state
Der AIO/Async-Pfad in skcipher_recvmsg() übergibt das socket-weite ctx->iv direkt an die skcipher-Anfrage. Nach io_submit() wird die Socket-Sperre aufgehoben und die Anfrage asynchron verarbeitet, sodass eine gleichzeitige sendmsg(ALG_SET_IV)-Operation ctx->iv überschreiben kann und die laufende Anfrage mit einem vom Angreifer kontrollierten IV ausführt. Für CTR-/Stream-Modi führt dies zu einer Wiederverwendung von IV/Keystream und ermöglicht es einem nicht privilegierten Benutzer, den Klartext eines gleichzeitigen Vorgangs wiederherzustellen.
Das Schnappschuss-Erfassen von ctx->iv im pro-Anfrage-Speicher für den Async-Pfad reicht nicht aus. Für Chiffren mit statesize == 0 – wozu cbc und ctr gehören – wird die MSG_MORE-Inter-Chunk-IV-Kettung ausschließlich durch das In-place-writeback von req->iv getragen, was ein Schnappschuss in pro-Anfrage-Speicher umleitet, der von af_alg_free_resources() bei Abschluss freigegeben wird, wodurch stillschweigend falsche Ausgaben erzeugt werden. Das Zurückschreiben des IV aus dem Completion-Callback ist ebenfalls nicht möglich: Dies würde lock_sock() dort erfordern, aber das Callback kann im softirq/atomic-Kontext ausgeführt werden und darf daher nicht schlafen (sleep).
Stattdessen wird der Vorgang synchron gemacht, was sowohl die IV-Race-Bedingung als auch jede Writeback-Race-Bedingung beseitigt. Dies ist äquivalent zur Upstream-Lösung des Commits fcc77d33a34c („net: Remove support for AIO on sockets“), der den AIO-Socket-Pfad in net/ vollständig entfernt hat und somit denselben Endzustand für diese Datei erzeugt. Dieser Patch weicht bewusst von diesem Commit ab: Anstatt die AIO-Socket-Unterstützung baumweit zu entfernen, was für Stable-Zwecke viel zu invasiv wäre, wird nur der AIO-Zweig in crypto/algif_skcipher.c entfernt. io_submit() wird nun synchron abgeschlossen; AF_ALG async wird in der Praxis selten verwendet.
Die -EIOCBQUEUED-Prüfung in skcipher_recvmsg() ist jetzt tot (unreachable), aber harmlos und bleibt unverändert, um die Korrektur minimal zu halten.
Getestet auf 6.6.y: Die IV-Injektion durch den Angreifer sank von 2296/200000 auf 0/200000 nach der Änderung; MSG_MORE chunked CTR-Ausgabe ist bit-identisch mit Single-Shot.
VulDB is the best source for vulnerability data and more expert information about this specific topic.