CVE-2026-98604: ovpn: replace bind when learning local endpoint
In the Linux kernel, the following vulnerability has been resolved:
ovpn: replace bind when learning local endpoint
struct ovpnbind is published through peer->bind with RCU, but local endpoint learning updates bind->local in place under peer->lock. UDP TX reads the field without that lock. In particular, a concurrent IPv6 update can therefore result in a torn address read.
Use ovpnpeerresetsockaddr to publish a replacement bind when learning a new local endpoint, just as a remote endpoint change does. Preserve the current remote address and reset the dst cache only after the new bind has been published successfully.
Track remote endpoint changes separately so that float notification and transport-address rehashing remain limited to actual peer floats.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
What condition creates the race?
The race occurs when ovpn learns or updates a peer's local endpoint while UDP transmission concurrently reads that endpoint. A concurrent IPv6 local-address update can cause the reader to observe a torn address.
Is this limited to changes in a peer's remote endpoint?
No. The vulnerable update concerns learning a new local endpoint; remote endpoint changes are tracked separately. The fix preserves the existing remote address while publishing a replacement bind object for the local-endpoint update.
What should be changed to remediate the issue?
Use a kernel version containing the fix that replaces and RCU-publishes the bind object when learning a new local endpoint, rather than modifying bind->local in place. The replacement must be published successfully before the destination cache is reset.