Commit 4c1e92

2026-11-05 15:04:57 flichtenheld: 2.7.9
Downloads.md ..
@@ 1,111 1,177 @@
- ## OpenVPN 2.7.8 -- Released 7 October 2026
- The OpenVPN community project team is proud to release OpenVPN 2.7.8. This is a bugfix release fixing
+ ## OpenVPN 2.7.9 -- Released 5 November 2026
+ The OpenVPN community project team is proud to release OpenVPN 2.7.9. This is a bugfix release fixing
several security issues.
- For details see [Changes.rst](https://github.com/OpenVPN/openvpn/blob/v2.7.8/Changes.rst)
+ For details see [Changes.rst](https://github.com/OpenVPN/openvpn/blob/v2.7.9/Changes.rst)
- Security fixes:
+ ### Security fixes
- - Check for NULL-Bytes in certificate subjects - refuse all such certificates
- now as "invalid" ([CVE-2026-84790](https://www.cve.org/CVERecord?id=CVE-2026-84790)).
+ - win32: restrict loading plugin dependencies (DLLs) to plugin, app
+ and system directories.
- (Bug reported by Vivek Parikh, tracked in
- Github: OpenVPN/openvpn-private-issues#163)
+ - win32: run openvpn.exe from the interactive service at "high integrity
+ level", that is, process memory of openvpn.exe and all its threads are
+ protected from tampering. Signals/Events are still permitted.
- - TLS handshake with tls-crypt-v2: do not try to add a wrapped client key
- if no key material is available (client bug in response to an ill-behaving
- server).
+ - win32: openvpnserv: strictly filter user-defined environment variables
+ before passing to openvpn.exe ([CVE-2026-121720](https://www.cve.org/CVERecord?id=CVE-2026-121720))
- (No CVE assigned as "a malicious server can stop the client from working
- properly" is not considered a CVE-worthy security issue according to the
- CRA guidelines)
+ (Issue found by Heiko Hund, tracked in
+ Github: OpenVPN/openvpn-private-issues#186)
- - options: fix unsigned underflow when clearing domain_search_list
- ([CVE-2026-88964](https://www.cve.org/CVERecord?id=CVE-2026-84964))
+ - win32: openvpnserv: make validation of openvpn command line more robust
+ to invalid-quoting attacks ([CVE-2026-115342](https://www.cve.org/CVERecord?id=CVE-2026-115342))
- (Bug reported and fix contributed by Cole Munz,
- tracked in Github: OpenVPN/openvpn-private-issues#178)
+ - win32: openvpn.exe: change parsing of commandline to use the same
+ function that the interactive service uses (CommandLineToArgvW())
+ ([CVE-2026-115342](https://www.cve.org/CVERecord?id=CVE-2026-115342))
- - win32: stop cmd.exe from expanding variables in quoted arguments
- ([CVE-2026-84256](https://www.cve.org/CVERecord?id=CVE-2026-84256))
+ (Issues found by Heiko Hund, tracked in
+ Github: OpenVPN/openvpn-private-issues#184)
- (Bug reported by Darren Carreras, tracked in Github:
- OpenVPN/openvpn-private-issues#176)
+ ### Bug fixes
- User-visible Changes:
+ - Username/Password parsing from --auth-user-pass file (or inline)
+ left parts of overlong usernames in the password field. Fix.
+ (GH [OpenVPN/openvpn#1140](https://github.com/OpenVPN/openvpn/issues/1140))
- - Certificate validation is now stricter regarding NULL bytes in strings
- (see above). This might break existing installations if such certificates
- exist and OpenSSL builds are used. mbedTLS builds always rejected this.
+ - win32: openvpnserv: fix memory leak for security descriptors
- - On a certificate with duplicate fields (multiple CN, for example) OpenSSL
- builds would use the last one, mbedTLS builds use the first one - changed
- in the mbedTLS build so behaviour is identical.
+ - win32: repair logging of errors in Windows tun_read_queue()
- Bugfixes:
+ - win32: avoid accessing uninitialized structure data if GetInterfaceInfo()
+ or GetPerAdapterInfo() fail
- - DCO: remove installed iroutes at client exit time, not at delayed
- multi instance cleanup time - otherwise there is a race with reconnecting
- clients, possibly ending up having "no iroutes installed in the system
- at all". Bug reported by OpenVPN Inc Access Server team.
+ - win32: openvpnserv: avoid double free() if GetTokenInformation() fails
- - DCO Linux: fix remaining races between synchronous netlink operations
- and incoming asynchronous notifications, by adding a second netlink socket
- and strictly separating sync/async operations.
+ - win32: openvpnserv: avoid potential format-string issue on registry defaults
- - Client: refuse incoming pushed option combination of epoch data format
- with non-AEAD ciphers (restart session instead of aborting with a fatal
- error).
+ - win32: openvpnserv: repair error reporting on RegGetValueA() failures
+ inside GetItfDnsServersV4()
- - DCO (Linux and Windows): on failures to set up a new peer or install
- key materials for a peer, do not exit OpenVPN with a fatal error. Instead,
- signal the error up the call-chain and restart the (multi) instance.
+ - win32: openvpnserv: fix inet_ntop() return code check in
+ GetItfDnsServersV6(), making it ignore DHCP-provided DNS servers.
- The handshake is inherently racy when a peer is removed kernel-side
- due to transport errors or timeouts, and userland does not yet know this
- and wants to, for example, install new keys. This is fatal for the
- particular client instance, but must not end the whole server process.
+ - route: repair printing of ROUTE_GATEWAY/ROUTE6_GATEWAY info broken
+ by commit 2777cdd3 - the actual gateway handling was correct, just not
+ printing anything anymore.
- - DCO: stop fetching peer stats during client disconnect
- The intention of the original code was to ensure reported counters
- are always correct, but it did not work (because at query time, the peer
- in kernel is already gone, so we only got an error message) - and very
- inefficiently so (because we queried all the peers all the time).
- End-of-session final counter values will be implemented properly by a
- followup patch leveraging counters piggybacked on the kernel's
- "DEL_PEER" notification message.
+ - config: check_file_access: fix --extra-certs access check
- - p2mp server: improve handling of mbuf lists in the face of broadcast
- or multicast traffic, and fix a bug on client exit that could lead
- to a server queue deadlock in very particular scenarios.
+ - win32: tun: free gc arena in windows_set_mtu() (mem leak in error path)
- Windows MSI changes since 2.7.7-I001:
- * Update included dco-win driver to v2.8.13
- * [CVE-2026-105390](https://www.cve.org/CVERecord?id=CVE-2026-105390) — a locking flaw allowed a local user with access to the driver's device to cause a system deadlock and denial of service, hanging the host until it was power-cycled.
- * Performance improvements by moving to multi-core data processing. See [Release Notes](https://github.com/OpenVPN/ovpn-dco-win/releases/tag/2.8.13) for details.
- * Update included OpenSSL to 3.6.5
- * Update included Easy-RSA to 3.2.7
-
- Note: Windows MSI was updated to I002 on October 22th. Changes in I002:
- * Included dco-win driver updated to v2.8.14
- * ([CVE-2026-115402](https://www.cve.org/CVERecord?id=CVE-2026-115402)) let a
- TCP connect hold the socket open while its IRP is in flight - a teardown
- during connect could close a socket WSK was still using, or complete the
- same request twice, either of which can end in a bug check. Device removal
- now cancels an in-flight connect instead of waiting for the transport.
- * fix high CPU usage in System after a session ends - the TX ring was not
- given back when there was no transport, so the queue stalled and
- NetAdapterCx kept polling it (Github: [ovpn-dco-win/issues/164](https://github.com/OpenVPN/ovpn-dco-win/issues/164))
- * the driver's merge module now ships a signed custom action DLL - it was
- unsigned, so Smart App Control blocked it where enforced and the install
- failed at OvpnDco_Evaluate with MSI error 1723
+ - route: close socket in Haiku get_default_gateway() (FD leak)
+
+ - win32: openvpnserv: skip conversion of empty domain names
+
+ - win32: cmake+mingw: don't prefix the event message DLL with lib
+ (it was building 'libopenvpnservmsg.dll' instead of 'openvpnservmsg.dll')
+
+ - win32: pass the buffer size in bytes to get_openvpn_reg_value()
+
+ - PUSH_UPDATE server: free temporary options after sending message (memleak)
+
+
+ ### User-visible Changes
+
+ - Linux: set IFF_BACKPRESSURE on Linux (if available)
+
+ This helps the kernel tun/tap to apply proper prioritization (qdisc etc)
+ to incoming packets if userspace is slow to process them. Without the
+ flag, the kernel would just drop everything.
+
+ - Management/GUI: Optionally indicate username in >PASSWORD '<UP_TYPE>' prompts
+
+ If an openvpn config has a username set but no password, and OpenVPN
+ wants to prompt for the password, the GUI could not see the username
+ today and prompted for both. With this change, OpenVPN sends a hint to
+ the management interface, so a GUI can pre-fill the username field, or
+ only prompt for the password.
+
+ This is only done if the management interface client announces
+ support for it (compatibility level >= 6).
+
+ ### Code improvements/general hardening
+
+ - crypto_epoch: wipe key material with secure_memzero()
+
+ - do not look up "none" cipher in OpenSSL - this avoids leaving an "error"
+ on the OpenSSL error stack, which can then later lead to spurious
+ SSL error prints on CRL loading.
+
+ - Make CRL reload EOF detection independent of stale error queue entries
+ (GH: [OpenVPN/openvpn#1104](https://github.com/OpenVPN/openvpn/issues/1104))
+
+ - tls_crypt: fix handling of "cipher final output" (which is always empty
+ on today's SSL libraries, so no impact today, but might not be in future)
+
+ - crypto: ASSERT() opt before first use in openvpn_decrypt_aead()
+
+ - auth_token: wipe the server secret key after loading it
+
+ - port-share: do not write journal file through symlinks or hardlinks
+ (and also document how port-share directory should be set up)
+ (GH [OpenVPN/openvpn#1124](https://github.com/OpenVPN/openvpn/issues/1124))
+
+ - dns-updown: close first pipe if creating the second one fails
+ (avoid leaking file descriptors on error)
+
+ - init: check parameters for NULL before strlen() in send_cc_message
+ (not triggerable today)
+
+ - crypto_openssl: Clear PEM decoded key data before freeing it
+
+ - Increase the buffer size for alert-message in management user-pass query
+ (so long usernames can be hinted towards the GUI)
+
+ - win32: openvpnserv: validate message size for dns/nrpt/wins handlers
+ (GH: [OpenVPN/openvpn#1129](https://github.com/OpenVPN/openvpn/issues/1129))
+
+ - win32: plugin: detect too long plugin paths on Windows
+
+ - win32: openvpnserv: null-terminate iface.name in address and route handlers
+ (GH: [OpenVPN/openvpn#1130](https://github.com/OpenVPN/openvpn/issues/1130))
+
+
+ ### Documentation improvements
+
+ - Fix numbering of examples in management-notes.txt
+
+ - Document "notify" as auth pending method
+
+ - Convert Changes.rst to Markdown (2.7)
+
+
+ ### Long-term code maintenance
+
+ - OpenSSL 4.1 compatibility: use ASN1_STRING_get_length() now, providing
+ a fallback to ASN1_STRING_length() for older SSL libraries.
+
+ - Linux: sitnl: use RTM_SETLINK for updating existing interfaces
+ (instead of RTM_NEWLINK)
+
+ - gen-sample-keys.sh: Don't apply server extensions to CSRs
+
+ - review all usages of strncpy()
+ (change to strncpynt(), memcpy(), etc. where appropriate)
+
+
+
+ Windows MSI changes since 2.7.8-I001:
+ * Update included openvpn-gui to 11.67
+ * Support username indication in communication with OpenVPN (see above). Prefills the username in prompt to user.
+ (GH: [OpenVPN/openvpn-gui#719](https://github.com/OpenVPN/openvpn/issues/719))
+ * Fix tray tooltip and popup positioning on non-primary monitors
+ (GH: [OpenVPN/openvpn-gui#836](https://github.com/OpenVPN/openvpn/issues/836))
+ * Improve Swedish translation
+ (GH: [OpenVPN/openvpn-gui#828](https://github.com/OpenVPN/openvpn/pull/828))
| | | |
|-|-|-|
- |**Windows 64-bit MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-amd64.msi.asc)|[OpenVPN-2.7.8-I002-amd64.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-amd64.msi)|
- |**Windows ARM64 MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-arm64.msi.asc)|[OpenVPN-2.7.8-I002-arm64.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-arm64.msi)|
- |**Windows 32-bit MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-x86.msi.asc)|[OpenVPN-2.7.8-I002-x86.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.8-I002-x86.msi)|
- |**Source archive file**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/openvpn-2.7.8.tar.gz.asc)|[openvpn-2.7.8.tar.gz](https://swupdate.openvpn.org/community/releases/openvpn-2.7.8.tar.gz)|
+ |**Windows 64-bit MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-amd64.msi.asc)|[OpenVPN-2.7.9-I001-amd64.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-amd64.msi)|
+ |**Windows ARM64 MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-arm64.msi.asc)|[OpenVPN-2.7.9-I001-arm64.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-arm64.msi)|
+ |**Windows 32-bit MSI installer**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-x86.msi.asc)|[OpenVPN-2.7.9-I001-x86.msi](https://swupdate.openvpn.org/community/releases/OpenVPN-2.7.9-I001-x86.msi)|
+ |**Source archive file**|[GnuPG Signature](https://swupdate.openvpn.org/community/releases/openvpn-2.7.9.tar.gz.asc)|[openvpn-2.7.9.tar.gz](https://swupdate.openvpn.org/community/releases/openvpn-2.7.9.tar.gz)|
For Community-maintained packages for Linux distributions see [OpenVPN Software Repositories](/Pages/OpenVPN%20software%20repos).
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9