
Upstream-OpenVPN-Kernel-Fix für CVE-2026-74727, getestet auf Ubuntu-Kernel 7.0.0-38.38. Enthält Build-Anweisungen und Ergebnisse funktionaler Tests.
Dokumentation eines lokalen Builds, funktionaler Tests, einer gezielten Quellcode-Überprüfung und deterministischer Regressionstests der Rehash-Invarianten für VPN-IP und Transport-Endpunkt des Upstream-Fixes im Zusammenhang mit CVE-2026-74727, gegen das Ubuntu-Kernel-Quellpaket linux 7.0.0-38.38 auf x86_64. Die Transport-Endpunkt-Tests wurden zusätzlich auf einem lokal gebauten Generic-KASAN-Kernel neu gebaut und ausgeführt.
Dies ist ein Backport-Review eines bestehenden Upstream-Fixes, keine neu entdeckte Schwachstelle und kein eigenständiger Sicherheitsfix. Der dokumentierte Upstream-Autor ist Antonio Quartulli. Der dokumentierte Commit ist 33ec10567fe14456063daf549fdf1a4f53448e4c.
Upstream-Patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/patch/?id=33ec10567fe14456063daf549fdf1a4f53448e4c
Die Änderung in drivers/net/ovpn/peer.c verhindert das erneute Hashen eines Peers, der bereits aus der Peer-ID-Hash-Tabelle entfernt wurde. Beim Weitergeben sind die ursprünglichen Patch-Header, die Urheberschaft und die Lizenzierung zu erhalten. Diese Dokumentation lizenziert den Kernel-Patch nicht neu.
Der ursprüngliche Upstream-Patch ist bytegenau enthalten. Sein SHA-256 stimmt mit dem in der dokumentierten Testsitzung verwendeten Artefakt überein. Autor, Commit-Nachricht und Codeänderungen wurden gegen den öffentlichen Upstream-Commit auf GitHub geprüft. Es ist kein Binärartefakt enthalten.
Die Patch-Prüfsumme wurde unabhängig gegen die enthaltene Datei geprüft. Die Modul-Prüfsumme wurde während der Testsitzung des Betreibers aufgezeichnet; das Binärartefakt wird hier nicht verteilt.
| Artefakt | SHA-256 |
|---|---|
CVE-2026-74727-upstream.patch | baf0962c60b182776a86e040d2ec5b35eea2737c2e2eb6f17f87eb7d2fe47b24 |
Getestetes ovpn.ko | 0853fdce14ce1c4d64857871dc873bf98a1b8fe8243bf042ad6daffc906e6d27 |
Verwenden Sie eine separate entpackte Kopie des exakten Ubuntu-Quellpakets linux 7.0.0-38.38. Installieren Sie zuerst die passenden Kernel-Header und die Build-Toolchain. Der dokumentierte Compiler war Ubuntu GCC 15.2.0-16ubuntu1, passend zum Compiler des laufenden Kernels.
Vom Quellverzeichnis aus, mit dem Patch im übergeordneten Verzeichnis:
patch --dry-run --batch --forward --fuzz=0 -p1 < ../CVE-2026-74727-upstream.patch
patch --batch --forward --fuzz=0 -p1 < ../CVE-2026-74727-upstream.patch
make -C /lib/modules/7.0.0-38-generic/build \
M="$PWD/drivers/net/ovpn" CONFIG_OVPN=m \
CC=x86_64-linux-gnu-gcc -j1 modules
Die aufgezeichnete Patch-Anwendung verwendete null Fuzz mit Zeilenoffsets von -6 und -5. Der Build gab Exit-Code 0 zurück. Die BTF-Generierung wurde übersprungen, da vmlinux nicht verfügbar war. Die Modul-vermagic stimmte mit 7.0.0-38-generic SMP preempt mod_unload modversions überein.
Übereinstimmende vermagic und ein erfolgreicher Build belegen nicht, dass ein Modul sicher ist oder dass die Schwachstelle vollständig validiert wurde.
Die Tests wurden manuell auf einer Hyper-V-Ubuntu-VM mit Kernel 7.0.0-38-generic und deaktiviertem Secure Boot durchgeführt. Die Ergebnisse basieren auf der vom Bediener bereitgestellten Terminalausgabe:
192.0.2.2 auf 192.0.2.3; der zurückgegebene Peer-Status bestätigte die Änderung. Dies beschränkte sich auf einen temporären Test-Namespace und änderte nicht die operative VPN-Adresse.Am 2026-10-06 führten zwei eigenständige Testmodule die tatsächliche Funktion ovpn_peer_hash_vpn_ip() aus, die aus dem ungepatchten Backup und dem gepatchten Quellcode extrahiert wurde. Private synthetische Objekte blieben durchgehend alloziert. Nach der Simulation einer abgeschlossenen Entfernung aus den Hash-Tabellen rief der Test die Funktion erneut unter ovpn->lock auf.
| Eigenschaft | Vor dem Patch | Nach dem Patch |
|---|---|---|
| Aktiver Peer ist in IPv4- und IPv6-Tabellen eingetragen | PASS | PASS |
| Entfernter Peer bleibt außerhalb der IPv4- und IPv6-Tabellen | FAIL | PASS |
| Belegte IPv4-/IPv6-Buckets nach Rehash eines entfernten Peers | 1 / 1 | 0 / 0 |
Dies ist eine Laufzeitprüfung der spezifischen Invariante nach der Entfernung, keine Reproduktion einer gleichzeitigen Lösch-Race oder eines Use-after-Free. Das Invarianten-Versagen der Baseline ist erwartet und zeigt, dass der Test die beiden Funktionsversionen unterscheidet. Beide Module wurden anschließend entladen. Das operative VPN blieb aktiv, seine Adresse unverändert. Das geprüfte Log-Intervall enthielt die Testergebnisse und keine passenden BUG-, Oops-, General-Protection-Fault- oder Soft-Lockup-Meldungen.
Siehe TESTING.md für die aufgezeichnete Ausgabe, Reproduktionsanweisungen und Einschränkungen. Der Generator befindet sich in tests/prepare-ovpn-rehash-regtest.py.
Am 2026-10-06 führten eigenständige Testmodule außerdem die tatsächliche Funktion ovpn_peer_endpoints_update() aus, die aus den ungepatchten und gepatchten Quellen extrahiert wurde, zusammen mit den Produktions-Binding-Helfern. Sowohl für IPv4 als auch für IPv6 bewirkten private synthetische Paket-Header, dass ein aktiver Peer floatete, und lösten dann ein weiteres Endpunkt-Update aus, nachdem seine Hash-Einträge entfernt worden waren, während sein Speicher alloziert blieb.
| Eigenschaft, sowohl für IPv4 als auch IPv6 | Vor dem Patch | Nach dem Patch |
|---|---|---|
| Aktiver Peer floatet und bleibt in der Transport-Tabelle | PASS | PASS |
| Endpunkt-Update wird nach modellierter Entfernung erreicht | PASS | PASS |
| Entfernter Peer bleibt außerhalb der Transport-Tabelle | FAIL | PASS |
| Belegte Transport-Buckets nach Update eines entfernten Peers | 1 | 0 |
Es wurden keine Pakete übertragen, und es wurden keine echten Schnittstellen, VPN-Peers oder Adressen verändert. Beide Testmodule wurden anschließend entladen; das operative VPN blieb aktiv, seine Adresse unverändert. Das geprüfte Log-Intervall enthielt die vier Testergebnisse und keine passenden BUG-, Oops-, General-Protection-Fault- oder Soft-Lockup-Zeilen.
Siehe FLOAT-TESTING.md und tests/prepare-ovpn-float-regtest.py für Umfang, Reproduktionsanweisungen und aufgezeichnete Ergebnisse.
Am 2026-10-06 wurde der geprüfte Ubuntu-Quellcode als vollständiger Kernel mit CONFIG_KASAN=y, CONFIG_KASAN_GENERIC=y, CONFIG_KASAN_OUTLINE=y und CONFIG_STACKTRACE=y gebaut. Der Release-String lautete 7.0.14-ovpn-kasan. Kernel- und Modul-Builds lieferten Exit-Code 0. Die VM startete diesen Kernel, und ihr administrativer VPN-Dienst war aktiv.