Skip to content

Commit 595075a

Browse files
Merge tag 'v2.6.12' of https://github.com/OpenVPN/openvpn into bugfix/NCL-2203-SCC-Windows-Fix-vulnerability-in-OpenVPN
OpenVPN Release v2.6.12 2024.07.17 -- Version 2.6.12 Arne Schwabe (1): Allow trailing \r and \n in control channel message Frank Lichtenheld (1): configure: Try to detect LZO with pkg-config Gianmarco De Gregori (1): Http-proxy: fix bug preventing proxy credentials caching
2 parents 2eb81bf + 038a94b commit 595075a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+796
-277
lines changed

.github/workflows/build.yaml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,16 @@ jobs:
194194
matrix:
195195
ssllib: [ openssl11, openssl3, libressl]
196196
build: [ normal, asan ]
197-
os: [macos-11, macos-12]
197+
os: [macos-12, macos-13, macos-14]
198198
include:
199+
# macos14 and newer runners use ARM CPUs and homebrew uses /opt/homebrew/
200+
# on ARM instead of /usr/local/
201+
- os: macos-12
202+
homebrew: /usr/local/opt
203+
- os: macos-13
204+
homebrew: /usr/local/opt
205+
- os: macos-14
206+
homebrew: /opt/homebrew/opt
199207
- build: asan
200208
cflags: "-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1"
201209
ldflags: -fsanitize=address
@@ -220,8 +228,10 @@ jobs:
220228
env:
221229
CFLAGS: ${{ matrix.cflags }}
222230
LDFLAGS: ${{ matrix.ldflags }}
223-
OPENSSL_CFLAGS: "-I/usr/local/opt/${{matrix.libdir}}/include"
224-
OPENSSL_LIBS: "-L/usr/local/opt/${{matrix.libdir}}/lib -lcrypto -lssl"
231+
OPENSSL_CFLAGS: "-I${{matrix.homebrew}}/${{matrix.libdir}}/include"
232+
OPENSSL_LIBS: "-L${{matrix.homebrew}}/${{matrix.libdir}}/lib -lcrypto -lssl"
233+
LZO_CFLAGS: "-I${{matrix.homebrew}}/lzo/include"
234+
LZO_LIBS: "-L${{matrix.homebrew}}/lzo/lib -llzo2"
225235
UBSAN_OPTIONS: print_stacktrace=1
226236
steps:
227237
- name: Install dependencies

.github/workflows/coverity-scan.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66

77
jobs:
88
latest:
9+
# Running coverity requires the secrets.COVERITY_SCAN_TOKEN token
10+
# which is only available on the main repository
11+
if: github.repository_owner == 'OpenVPN'
912
runs-on: ubuntu-latest
1013
steps:
1114
- name: Check submission cache

ChangeLog

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,53 @@
11
OpenVPN ChangeLog
22
Copyright (C) 2002-2024 OpenVPN Inc <sales@openvpn.net>
33

4+
2024.07.17 -- Version 2.6.12
5+
6+
Arne Schwabe (1):
7+
Allow trailing \r and \n in control channel message
8+
9+
Frank Lichtenheld (1):
10+
configure: Try to detect LZO with pkg-config
11+
12+
Gianmarco De Gregori (1):
13+
Http-proxy: fix bug preventing proxy credentials caching
14+
15+
16+
2024.06.20 -- Version 2.6.11
17+
18+
5andr0 (1):
19+
Implement server_poll_timeout for socks
20+
21+
Arne Schwabe (6):
22+
Use snprintf instead of sprintf for get_ssl_library_version
23+
Add bracket in fingerprint message and do not warn about missing verification
24+
Replace macos11 with macos14 in github runners
25+
Only run coverity scan in OpenVPN/OpenVPN repository
26+
Workaround issue in LibreSSL crashing when enumerating digests/ciphers
27+
Properly handle null bytes and invalid characters in control messages
28+
29+
Franco Fichtner (1):
30+
Allow to set ifmode for existing DCO interfaces in FreeBSD
31+
32+
Frank Lichtenheld (6):
33+
samples: Update sample configurations
34+
documentation: make section levels consistent
35+
phase2_tcp_server: fix Coverity issue 'Dereference after null check'
36+
script-options.rst: Update ifconfig_* variables
37+
LZO: do not use lzoutils.h macros
38+
Remove "experimental" denotation for --fast-io
39+
40+
Heiko Wundram (1):
41+
Implement Windows CA template match for Crypto-API selector
42+
43+
Lev Stipakov (2):
44+
misc.c: remove unused code
45+
interactive.c: Improve access control for gui<->service pipe
46+
47+
Reynir Björnsson (1):
48+
Only schedule_exit() once
49+
50+
451
2024.03.20 -- Version 2.6.10
552

653
Christoph Schug (1):

Changes.rst

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,89 @@
1+
Overview of changes in 2.6.12
2+
=============================
3+
Bug fixes
4+
---------
5+
- the fix for CVE-2024-5594 (refuse control channel messages with
6+
nonprintable characters) was too strict, breaking user configurations
7+
with AUTH_FAIL messages having trailing CR/NL characters. This often
8+
happens if the AUTH_FAIL reason is set by a script. Strip those before
9+
testing the command buffer (Github: #568). Also, add unit test.
10+
11+
- Http-proxy: fix bug preventing proxy credentials caching (Trac: #1187)
12+
13+
Code maintenance
14+
----------------
15+
- try to detect LZO installation with pkg-config (= on many systems
16+
manually setting LZO_CFLAGS/LZO_LIBS should no longer be necessary)
17+
18+
Overview of changes in 2.6.11
19+
=============================
20+
Security fixes
21+
--------------
22+
- CVE-2024-4877: Windows: harden interactive service pipe.
23+
Security scope: a malicious process with "some" elevated privileges
24+
(SeImpersonatePrivilege) could open the pipe a second time, tricking
25+
openvn GUI into providing user credentials (tokens), getting full
26+
access to the account openvpn-gui.exe runs as.
27+
(Zeze with TeamT5)
28+
29+
- CVE-2024-5594: control channel: refuse control channel messages with
30+
nonprintable characters in them. Security scope: a malicious openvpn
31+
peer can send garbage to openvpn log, or cause high CPU load.
32+
(Reynir Björnsson)
33+
34+
- CVE-2024-28882: only call schedule_exit() once (on a given peer).
35+
Security scope: an authenticated client can make the server "keep the
36+
session" even when the server has been told to disconnect this client
37+
(Reynir Björnsson)
38+
39+
New features
40+
------------
41+
- Windows Crypto-API: Implement Windows CA template match for searching
42+
certificates in windows crypto store.
43+
44+
- support pre-created DCO interface on FreeBSD (OpenVPN would fail to
45+
set ifmode p2p/subnet otherwise)
46+
47+
Bugfixes
48+
--------
49+
- fix connect timeout when using SOCKS proxies (trac #328, github #267)
50+
51+
- work around LibreSSL crashing on OpenBSD 7.5 when enumerating ciphers
52+
(LibreSSL bug, already fixed upstream, but not backported to OpenBSD 7.5,
53+
see also https://github.com/libressl/openbsd/issues/150)
54+
55+
- Add bracket in fingerprint message and do not warn about missing
56+
verification (github #516)
57+
58+
Documentation
59+
-------------
60+
- remove "experimental" denotation for --fast-io
61+
62+
- correctly document ifconfig_* variables passed to scripts (script-options.rst)
63+
64+
- documentation: make section levels consistent
65+
66+
- samples: Update sample configurations
67+
remove compression & old cipher settings, add more informative comments
68+
69+
Code maintenance
70+
----------------
71+
- remove usage of <lzoutils.h> header & macro, discouraged by upstream
72+
73+
- only run coverity scans in OpenVPN/OpenVPN repository (= do not spam
74+
owners of cloned repos with "cannot run this" messages)
75+
76+
- replace macOS 11 github runners with macOS 14
77+
78+
- remove some unused code in misc.c (leftover from commit 3a4fb1)
79+
80+
- phase2_tcp_server: fix Coverity issue 'Dereference after null check'
81+
- the code itself was correct, just doing needless checks
82+
83+
- Use snprintf instead of sprintf for get_ssl_library_version
84+
- the code itself was correct, but macOS clang dislikes sprintf()
85+
86+
187
Overview of changes in 2.6.10
288
=============================
389
Security fixes

config.h.cmake.in

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,9 @@ don't. */
175175
/* Define to 1 if you have the <linux/types.h> header file. */
176176
#cmakedefine HAVE_LINUX_TYPES_H
177177

178-
/* Define to 1 if you have the <lzoconf.h> header file. */
179-
#define HAVE_LZO_CONF_H
180-
181178
/* Define to 1 if you have the <lzo1x.h> header file. */
182179
#define HAVE_LZO1X_H 1
183180

184-
/* Define to 1 if you have the <lzoutil.h> header file. */
185-
#define HAVE_LZOUTIL_H 1
186-
187181
/* Define to 1 if you have the `mlockall' function. */
188182
#cmakedefine HAVE_MLOCKALL
189183

configure.ac

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,8 +1152,17 @@ fi
11521152

11531153
AC_ARG_VAR([LZO_CFLAGS], [C compiler flags for lzo])
11541154
AC_ARG_VAR([LZO_LIBS], [linker flags for lzo])
1155-
have_lzo="yes"
1156-
if test -z "${LZO_LIBS}"; then
1155+
if test -z "${LZO_CFLAGS}" -a -z "${LZO_LIBS}"; then
1156+
# if the user did not explicitly specify flags, try to autodetect
1157+
PKG_CHECK_MODULES([LZO],
1158+
[lzo2],
1159+
[have_lzo="yes"],
1160+
[]
1161+
)
1162+
1163+
if test "${have_lzo}" != "yes"; then
1164+
# try to detect without pkg-config
1165+
have_lzo="yes"
11571166
AC_CHECK_LIB(
11581167
[lzo2],
11591168
[lzo1x_1_15_compress],
@@ -1165,27 +1174,25 @@ if test -z "${LZO_LIBS}"; then
11651174
[have_lzo="no"]
11661175
)]
11671176
)
1177+
fi
1178+
else
1179+
# assume the user configured it correctly
1180+
have_lzo="yes"
11681181
fi
11691182
if test "${have_lzo}" = "yes"; then
11701183
saved_CFLAGS="${CFLAGS}"
11711184
CFLAGS="${CFLAGS} ${LZO_CFLAGS}"
1172-
AC_CHECK_HEADERS(
1173-
[lzo/lzoutil.h],
1174-
,
1175-
[AC_CHECK_HEADERS(
1176-
[lzoutil.h],
1177-
,
1178-
[AC_MSG_ERROR([lzoutil.h is missing])]
1179-
)]
1180-
)
11811185
AC_CHECK_HEADERS(
11821186
[lzo/lzo1x.h],
11831187
,
11841188
[AC_CHECK_HEADERS(
11851189
[lzo1x.h],
11861190
,
1187-
[AC_MSG_ERROR([lzo1x.h is missing])]
1188-
)]
1191+
[AC_MSG_ERROR([lzo1x.h is missing])],
1192+
[#include <limits.h>
1193+
#include <lzodefs.h>
1194+
#include <lzoconf.h>]
1195+
)],
11891196
)
11901197
CFLAGS="${saved_CFLAGS}"
11911198
fi

doc/man-sections/cipher-negotiation.rst

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
Data channel cipher negotiation
2-
===============================
2+
-------------------------------
33

44
OpenVPN 2.4 and higher have the capability to negotiate the data cipher that
55
is used to encrypt data packets. This section describes the mechanism in more detail and the
66
different backwards compatibility mechanism with older server and clients.
77

88
OpenVPN 2.5 and later behaviour
9-
--------------------------------
9+
```````````````````````````````
1010
When both client and server are at least running OpenVPN 2.5, that the order of
1111
the ciphers of the server's ``--data-ciphers`` is used to pick the data cipher.
1212
That means that the first cipher in that list that is also in the client's
@@ -25,7 +25,7 @@ For backwards compatibility OpenVPN 2.6 and later with ``--compat-mode 2.4.x``
2525
``--cipher`` option to this list.
2626

2727
OpenVPN 2.4 clients
28-
-------------------
28+
```````````````````
2929
The negotiation support in OpenVPN 2.4 was the first iteration of the implementation
3030
and still had some quirks. Its main goal was "upgrade to AES-256-GCM when possible".
3131
An OpenVPN 2.4 client that is built against a crypto library that supports AES in GCM
@@ -40,7 +40,7 @@ always have the `AES-256-GCM` and `AES-128-GCM` ciphers to the ``--ncp-ciphers``
4040
options to avoid this behaviour.
4141

4242
OpenVPN 3 clients
43-
-----------------
43+
`````````````````
4444
Clients based on the OpenVPN 3.x library (https://github.com/openvpn/openvpn3/)
4545
do not have a configurable ``--ncp-ciphers`` or ``--data-ciphers`` option. Newer
4646
versions by default disable legacy AES-CBC, BF-CBC, and DES-CBC ciphers.
@@ -52,7 +52,7 @@ included in the server's ``--data-ciphers`` option.
5252

5353

5454
OpenVPN 2.3 and older clients (and clients with ``--ncp-disable``)
55-
------------------------------------------------------------------
55+
``````````````````````````````````````````````````````````````````
5656
When a client without cipher negotiation support connects to a server the
5757
cipher specified with the ``--cipher`` option in the client configuration
5858
must be included in the ``--data-ciphers`` option of the server to allow
@@ -65,7 +65,7 @@ If the client is 2.3 or older and has been configured with the
6565
cipher used by the client is necessary.
6666

6767
OpenVPN 2.4 server
68-
------------------
68+
``````````````````
6969
When a client indicates support for `AES-128-GCM` and `AES-256-GCM`
7070
(with ``IV_NCP=2``) an OpenVPN 2.4 server will send the first
7171
cipher of the ``--ncp-ciphers`` to the OpenVPN client regardless of what
@@ -76,7 +76,7 @@ option is required. OpenVPN 2.5+ will only announce the ``IV_NCP=2`` flag if
7676
those ciphers are present.
7777

7878
OpenVPN 2.3 and older servers (and servers with ``--ncp-disable``)
79-
------------------------------------------------------------------
79+
``````````````````````````````````````````````````````````````````
8080
The cipher used by the server must be included in ``--data-ciphers`` to
8181
allow the client connecting to a server without cipher negotiation
8282
support.
@@ -89,7 +89,7 @@ If the server is 2.3 or older and has been configured with the
8989
cipher used by the server is necessary.
9090

9191
Blowfish in CBC mode (BF-CBC) deprecation
92-
------------------------------------------
92+
`````````````````````````````````````````
9393
The ``--cipher`` option defaulted to `BF-CBC` in OpenVPN 2.4 and older
9494
version. The default was never changed to ensure backwards compatibility.
9595
In OpenVPN 2.5 this behaviour has now been changed so that if the ``--cipher``

doc/man-sections/encryption-options.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
Encryption Options
2-
==================
2+
------------------
33

44
SSL Library information
5-
-----------------------
5+
```````````````````````
66

77
--show-ciphers
88
(Standalone) Show all cipher algorithms to use with the ``--cipher``
@@ -32,7 +32,7 @@ SSL Library information
3232
``--ecdh-curve`` and ``tls-groups`` options.
3333

3434
Generating key material
35-
-----------------------
35+
```````````````````````
3636

3737
--genkey args
3838
(Standalone) Generate a key to be used of the type keytype. if keyfile

doc/man-sections/generic-options.rst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ which mode OpenVPN is configured as.
1919
When using ``--auth-nocache`` in combination with a user/password file
2020
and ``--chroot`` or ``--daemon``, make sure to use an absolute path.
2121

22-
This directive does not affect the ``--http-proxy`` username/password.
23-
It is always cached.
24-
2522
--cd dir
2623
Change directory to ``dir`` prior to reading any files such as
2724
configuration files, key files, scripts, etc. ``dir`` should be an
@@ -215,7 +212,7 @@ which mode OpenVPN is configured as.
215212
are supported by OpenSSL.
216213

217214
--fast-io
218-
(Experimental) Optimize TUN/TAP/UDP I/O writes by avoiding a call to
215+
Optimize TUN/TAP/UDP I/O writes by avoiding a call to
219216
poll/epoll/select prior to the write operation. The purpose of such a
220217
call would normally be to block until the device or socket is ready to
221218
accept the write. Such blocking is unnecessary on some platforms which

doc/man-sections/pkcs11-options.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PKCS#11 / SmartCard options
2-
---------------------------
2+
```````````````````````````
33

44
--pkcs11-cert-private args
55
Set if access to certificate object should be performed after login.

0 commit comments

Comments
 (0)