flawopen.com/Teardowns/cve-2026-31431-linux-algif-aead-copy-fail
CVE-2026-31431: Copy-Fail-Fehler im Linux-Kernel
Copy Fail ist eine lokale Rechteausweitung im AEAD-Pfad von Linux AF_ALG. Eine In-place-Optimierung verwechselte Quell- und Ziel-Mappings; der Upstream-Fix stellt Out-of-place-Verarbeitung wieder her, und CISA führt die CVE in KEV.[1], [2], [5]
Eine Bibliothekarin soll eine Kopie markieren, doch eine Abkürzung führt den Stift zum Originalbuch. Die In-place-Abkürzung ließ einen für das Ergebnis bestimmten Schreibvorgang eine andere gemappte Seite erreichen. Der Fix verarbeitet Quelle und Ziel getrennt.[3], [8]
Kernkonzepte & Begriffe
AEAD- Authenticated Encryption with Associated Data: verschlüsselt Daten und authentifiziert zusätzliche unverschlüsselte Metadaten.[8]
algif_aead- AF_ALG-Implementierung für AEAD einschließlich des anfälligen Quell-/Zielpfads.[3]
Page cache- Kernel-Cache für Dateiinhalte; Schreibzugriffe auf gemappte Seiten können Lesevorgänge vor dem Zurückschreiben beeinflussen.[8]
CWE-1288 / CWE-669- NVD führt
CWE-1288mitredhat-SADPals Quelle der Zuordnung; auch die Red-Hat-Seite nennt diese CWE. Der Hinweis des Canadian Centre for Cyber Security ordnet das ProblemCWE-669zu. Das sind quellenspezifische Klassifizierungen, keine austauschbaren Bezeichnungen.[11], [7], [5], [9], [10]
Framework-Zuordnungen
- CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-669 CWE-1288
- CISA KEV — aufgenommen am 2026-05-01 — CVE-2026-31431
Ursachenanalyse
Die Änderung 72548b093ee3 von 2017 führte eine In-place-Optimierung in algif_aead ein. Quelle und Ziel können aus unterschiedlichen Mappings stammen. authencesn kann temporäre Daten außerhalb der Ausgabe schreiben; die In-place-Scatterlist konnte eine über splice() bereitgestellte Page-Cache-Seite erreichen. Der Linux-CVE-Hinweis beschreibt die Behebung als Rückkehr zur Out-of-place-Verarbeitung bei erhaltener Kopie der Associated Data. Lokaler Zugriff und ein aktivierter anfälliger Pfad sind erforderlich. CVSS 7,8 (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H); kein unauthentifizierter Fernzugriff.[1], [3], [8], [7], [9], [10]
Schritt-für-Schritt Angriffsablauf
Schreibvorgang verlässt den Ausgabebereich
Während authencesn können temporäre Daten die vorgesehene Ausgabe überschreiten und eine Cache-Seite eines über splice() gelieferten Dateiinhalts erreichen.[8]
Quellcode: Verwundbar vs. Sicher
Konzeptionelle Zusammenfassung, kein wörtlicher Kernel-Code und kein kompilierbarer Patch. Laut Upstream-Hinweis macht der Fix 72548b093ee3 größtenteils rückgängig, behält aber die Kopie der Associated Data bei, weil die Mappings verschieden sind.[3], [2]
Quelltextauszug: crypto/algif_aead.c (_aead_recvmsg)
/* Vor der Korrektur: Die Kryptografieoperation direkt im selben Puffer ausführen. */
rsgl_src = areq->first_rsgl.sgl.sg;
if (ctx->enc) {
memcpy_sglist(areq->first_rsgl.sgl.sg, tsgl_src, processed);
af_alg_pull_tsgl(sk, processed, NULL, 0);
} else {
memcpy_sglist(areq->first_rsgl.sgl.sg, tsgl_src, outlen);
/* Eine TX-Scatterlist für den Authentifizierungs-Tag aufbauen und verketten. */
areq->tsgl_entries = af_alg_count_tsgl(sk, processed, processed - as);
/* ... */
}
aead_request_set_crypt(&areq->cra_u.aead_req, rsgl_src,
areq->first_rsgl.sgl.sg, used, ctx->iv);
/* Nach der Korrektur: Eine Quell-Scatterlist pro Anfrage behalten. */
processed = used + ctx->aead_assoclen;
areq->tsgl_entries = af_alg_count_tsgl(sk, processed);
/* areq->tsgl reservieren und initialisieren, dann die TX-Seiten dort eintragen. */
af_alg_pull_tsgl(sk, processed, areq->tsgl);
tsgl_src = areq->tsgl;
/* Zugehörige Daten kopieren, Quelle und Ziel jedoch getrennt halten. */
rsgl_src = areq->first_rsgl.sgl.sg;
memcpy_sglist(rsgl_src, tsgl_src, ctx->aead_assoclen);
aead_request_set_crypt(&areq->cra_u.aead_req, tsgl_src,
areq->first_rsgl.sgl.sg, used, ctx->iv);
Checkliste für Engineering & Systemsicherheit
- ✓Aktualisieren Sie über den Distributionskanal und prüfen Sie im Paket-Hinweis, dass
CVE-2026-31431behoben ist; eine allgemeine Upstream-Version belegt den Status nicht.[1], [5], [7] - ✓Priorisieren Sie Hosts mit gemeinsamem Kernel und nicht vertrauenswürdigen lokalen Nutzern, etwa Mehrmandanten-Hosts, Build-Worker und Container-Knoten.[5], [7]
- ✓Falls ein Update nicht sofort möglich ist, nutzen Sie nur eine dokumentierte Anbietermaßnahme und prüfen Sie deren Auswirkungen; der Code kann einkompiliert sein.[5], [7]
- ✓Prüfen Sie Kernel-Inventar und Paketprovenienz in allen Images, auch unveränderlichen Images und LTS-Zweigen mit Backports.[5], [7]
- ✓Container teilen den Host-Kernel; eine lokale Rechteausweitung kann die Namespace-Isolation schwächen.[5], [8]
- ✓Beobachten Sie weitere Backports und verfolgen Sie ungepatchte Hosts als Remediationsaufgaben; ein KEV-Eintrag ersetzt kein Update.[1], [5]
Quellen
- Linux kernel CVE notice for CVE-2026-31431
- Upstream stable patch: revert algif_aead to out-of-place operation
- Stable patch source with the algif_aead.c code diff
- CVE record and CVSS vector
- Canadian Centre for Cyber Security alert AL26-009
- CISA Known Exploited Vulnerabilities catalog entry
- Red Hat CVE analysis and affected product status
- Xint technical disclosure: Copy Fail — 732 Bytes to Root on Linux
- MITRE CWE-1288: Improper Validation of Consistency within Input
- MITRE CWE-669: Incorrect Resource Transfer Between Spheres
- NVD — CVE-2026-31431 weakness mapping (source: redhat-SADP)