
# Go-Port des Copy-Fail-PoC für CVE-2026-31431 Go-Port des Copy-Fail-PoC für CVE-2026-31431, einen Linux-Kernel-Authencesn-Fehler, der einen 4-Byte-Schreibzugriff in den Page Cache über AF_ALG und splice ermöglicht. Enthält eine Multi-Arch-Build-Pipeline und ausführliche technische Dokumentation.
Dieses Repository bietet einen Go-Port des öffentlichen Copy-Fail-PoC und eine reproduzierbare Build-Pipeline für Linux-Binaries mehrerer Architekturen.
Copy Fail (CVE-2026-31431) ist ein Logikfehler im Linux-Kernel in authencesn, der einen deterministischen 4-Byte-Schreibzugriff in Page-Cache-Daten ermöglicht, die über AF_ALG + splice() referenziert werden.
Verwenden Sie dieses Projekt nur in Umgebungen, in denen Sie ausdrücklich zum Testen autorisiert sind. Führen Sie diesen PoC nicht gegen Systeme aus, die Sie nicht besitzen oder für deren Bewertung Sie keine schriftliche Genehmigung haben.
Wenn Sie sofort testen möchten, ohne aus dem Quellcode zu bauen, laden Sie ein Release-Binary herunter und führen Sie es aus:
wget https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases/download/v1.0.1/copy-fail-cve-2026-31431_linux_amd64
chmod +x copy-fail-cve-2026-31431_linux_amd64
./copy-fail-cve-2026-31431_linux_amd64
Für andere Architekturen laden Sie das passende Asset von der GitHub-Releases-Seite herunter:
Alle Linux-Ziele bauen:
make clean build-linux
Bauen und Prüfsummen generieren:
make clean checksums
Ausgabebinaries in dist/:
copy-fail-cve-2026-31431_linux_amd64copy-fail-cve-2026-31431_linux_arm64copy-fail-cve-2026-31431_linux_386copy-fail-cve-2026-31431_linux_armv7SHA256SUMSStandardausführung:
./copy-fail-cve-2026-31431_linux_amd64
Einen benutzerdefinierten Zielpfad verwenden:
./copy-fail-cve-2026-31431_linux_amd64 -target /path/to/binary
Ausführung von su nach dem Lauf deaktivieren:
./copy-fail-cve-2026-31431_linux_amd64 -spawn-su=false
Build-Metadaten ausgeben:
./copy-fail-cve-2026-31431_linux_amd64 -version
Wenn die Ausführung bei Offset 0 mit einem Fehler ähnlich dem folgenden fehlschlägt:
error: copy chunk at offset 0: splice(pipe->AF_ALG): software caused connection abort
hat der Kernel höchstwahrscheinlich den verwundbaren AEAD-In-Place-Pfad abgelehnt (z. B. weil der Host für CVE-2026-31431 gepatcht ist oder algif_aead entschärft/deaktiviert ist).
Schnellprüfungen:
uname -r
grep -E "algif_aead|authencesn" /proc/modules
Auf behobenen Systemen wird erwartet, dass dieser PoC fehlschlägt.
Gemäß der öffentlichen Offenlegung ermöglicht der verwundbare Pfad einem nicht privilegierten lokalen Benutzer unter bestimmten Bedingungen einen 4-Byte-Schreibzugriff auf Page-Cache-Inhalte lesbarer Dateien zu beeinflussen.
Die wichtige betriebliche Eigenschaft ist, dass die In-Memory-Page-Cache-Kopie während der Laufzeit von den On-Disk-Bytes abweichen kann, was die Auswirkungsanalyse für Teams, die sich nur auf Integritätsprüfungen auf Datenträgerebene verlassen, nicht trivial macht.
Copy Fail ist bemerkenswert, weil es wie folgt gemeldet wurde:
Auf hoher Ebene liegt das Problem an der Schnittstelle von drei Mechanismen:
AF_ALG-AEAD-Anfrageverarbeitung.splice()-Page-Cache-gestützte Datenbewegung.authencesn-Entschlüsselungs-Scratch-Verhalten.Im verwundbaren Design können Page-Cache-gestützte Segmente in eine Anfrageform eingebunden werden, die später während der Algorithmusverarbeitung Schreibzugriffe erhält, was eine Schlüsselannahme verletzt, dass nur beabsichtigte Zielregionen modifiziert werden.
Im dokumentierten Pfad verwendet authencesn Zielseitige-Scratch-Operationen rund um die ESN-Layout-Behandlung und führt einen Schreibzugriff an einem Offset aus, der über den erwarteten Entschlüsselungsausgabevertrag hinausgeht.
In Kombination mit dem In-Place-AEAD-Setup und verketteten Scatterlist-Referenzen kann dieser Schreibzugriff in Page-Cache-gestütztem Speicher für vom Angreifer ausgewählte Regionen landen.
Die Offenlegung beschreibt eine Entwicklung über mehrere Commits:
authencesn-Verhalten stammt aus früherer Integrationshistorie.AF_ALG-AEAD-Unterstützung führte Benutzerraum-Erreichbarkeit mit splice()-Interaktion ein.algif_aead kombinierte Quell- und Zielfluss auf eine Weise, die diese Schnittstelle ausnutzbar machte.Die wichtigste Lektion ist das Kompositionsrisiko: Einzeln vernünftige Änderungen können in Kombination unsicher werden.
Der öffentliche Bericht und PoC beschreiben diese Abfolge:
AF_ALG-AEAD-Sockets für authencesn(hmac(sha256),cbc(aes)).splice(), um Page-Cache-gestützte Dateidaten durch den Anforderungspfad zu leiten.Die Go-Implementierung dieses Repositorys spiegelt die öffentliche PoC-Logik für Forschung und Validierung in autorisierten Umgebungen wider.
Der gemeldete Fix stellt die verwundbare In-Place-AEAD-Operation in algif_aead auf Out-of-Place-Verhalten um.
Konzeptionell:
AF_ALG-Nutzung, wo betrieblich machbar).Basierend auf dem öffentlichen Bericht:
| Datum | Ereignis |
|---|---|
| 2026-03-23 | Bericht an das Linux-Kernel-Sicherheitsteam eingereicht |
| 2026-03-24 | Erste Bestätigung |
| 2026-03-25 | Patch-Diskussion/Überprüfung |
| 2026-04-01 | Fix in Mainline übernommen |
| 2026-04-22 | CVE-2026-31431 zugewiesen |
| 2026-04-29 | Öffentliche Offenlegung |
Die veröffentlichte Forschung schreibt die Entdeckung einer menschlich geführten, KI-unterstützten Subsystemanalyse zu, die sich auf benutzerraum-erreichbare Krypto-Codepfade und Scatterlist/Page-Herkunft unter splice() konzentrierte.
main.go: Go-PoC-Port.Makefile: Deterministische Multi-Arch-Linux-Build-Ziele..github/workflows/build.yml: CI-Build- und Release-Artefakt-Workflow.Workflow-Datei: .github/workflows/build.yml
Auslöser:
mainv*workflow_dispatchVerhalten:
make clean checksums.v*.Vorgeschlagener Release-Ablauf:
git tag v1.0.0
git push origin v1.0.0
| Distribution | Kernel-Version |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |