Changes.rst 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747
  1. Overview of changes in 2.4
  2. ==========================
  3. New features
  4. ------------
  5. Seamless client IP/port floating
  6. Added new packet format P_DATA_V2, which includes peer-id. If both the
  7. server and client support it, the client sends all data packets in
  8. the new format. When a data packet arrives, the server identifies peer
  9. by peer-id. If peer's ip/port has changed, server assumes that
  10. client has floated, verifies HMAC and updates ip/port in internal structs.
  11. This allows the connection to be immediatly restored, instead of requiring
  12. a TLS handshake before the server accepts packets from the new client
  13. ip/port.
  14. Data channel cipher negotiation
  15. Data channel ciphers (``--cipher``) are now by default negotiated. If a
  16. client advertises support for Negotiable Crypto Parameters (NCP), the
  17. server will choose a cipher (by default AES-256-GCM) for the data channel,
  18. and tell the client to use that cipher. Data channel cipher negotiation
  19. can be controlled using ``--ncp-ciphers`` and ``--ncp-disable``.
  20. A more limited version also works in client-to-server and server-to-client
  21. scenarios where one of the end points uses a v2.4 client or server and the
  22. other side uses an older version. In such scenarios the v2.4 side will
  23. change to the ``--cipher`` set by the remote side, if permitted by by
  24. ``--ncp-ciphers``. For example, a v2.4 client with ``--cipher BF-CBC``
  25. and ``ncp-ciphers AES-256-GCM:AES-256-CBC`` can connect to both a v2.3
  26. server with ``cipher BF-CBC`` as well as a server with
  27. ``cipher AES-256-CBC`` in its config. The other way around, a v2.3 client
  28. with either ``cipher BF-CBC`` or ``cipher AES-256-CBC`` can connect to a
  29. v2.4 server with e.g. ``cipher BF-CBC`` and
  30. ``ncp-ciphers AES-256-GCM:AES-256-CBC`` in its config. For this to work
  31. it requires that OpenVPN was built without disabling OCC support.
  32. AEAD (GCM) data channel cipher support
  33. The data channel now supports AEAD ciphers (currently only GCM). The AEAD
  34. packet format has a smaller crypto overhead than the CBC packet format,
  35. (e.g. 20 bytes per packet for AES-128-GCM instead of 36 bytes per packet
  36. for AES-128-CBC + HMAC-SHA1).
  37. ECDH key exchange
  38. The TLS control channel now supports for elliptic curve diffie-hellmann
  39. key exchange (ECDH).
  40. Improved Certificate Revocation List (CRL) processing
  41. CRLs are now handled by the crypto library (OpenSSL or mbed TLS), instead
  42. of inside OpenVPN itself. The crypto library implementations are more
  43. strict than the OpenVPN implementation was. This might reject peer
  44. certificates that would previously be accepted. If this occurs, OpenVPN
  45. will log the crypto library's error description.
  46. Dualstack round-robin DNS client connect
  47. Instead of only using the first address of each ``--remote`` OpenVPN
  48. will now try all addresses (IPv6 and IPv4) of a ``--remote`` entry.
  49. Support for providing IPv6 DNS servers
  50. A new DHCP sub-option ``DNS6`` is added alongside with the already existing
  51. ``DNS`` sub-option. This is used to provide DNS resolvers available over
  52. IPv6. This may be pushed to clients where `` --up`` scripts and ``--plugin``
  53. can act upon it through the ``foreign_option_<n>`` environment variables.
  54. Support for the Windows client picking up this new sub-option is added,
  55. however IPv6 DNS resolvers need to be configured via ``netsh`` which requires
  56. administrator privileges unless the new interactive services on Windows is
  57. being used. If the interactive service is used, this service will execute
  58. ``netsh`` in the background with the proper privileges.
  59. New improved Windows Background service
  60. The new OpenVPNService is based on openvpnserv2, a complete rewrite of the OpenVPN
  61. service wrapper. It is intended for launching OpenVPN instances that should be
  62. up at all times, instead of being manually launched by a user. OpenVPNService is
  63. able to restart individual OpenVPN processes if they crash, and it also works
  64. properly on recent Windows versions. OpenVPNServiceLegacy tends to work poorly,
  65. if at all, on newer Windows versions (8+) and its use is not recommended.
  66. New interactive Windows service
  67. The installer starts OpenVPNServiceInteractive automatically and configures
  68. it to start at system startup.
  69. The interactive Windows service allows unprivileged users to start
  70. OpenVPN connections in the global config directory (usually
  71. C:\\Program Files\\OpenVPN\\config) using OpenVPN GUI without any
  72. extra configuration.
  73. Users who belong to the built-in Administrator group or to the
  74. local "OpenVPN Administrator" group can also store configuration
  75. files under %USERPROFILE%\\OpenVPN\\config for use with the
  76. interactive service.
  77. redirect-gateway ipv6
  78. OpenVPN has now feature parity between IPv4 and IPv6 for redirect
  79. gateway including the handling of overlapping IPv6 routes with
  80. IPv6 remote VPN server address.
  81. LZ4 Compression and pushable compression
  82. Additionally to LZO compression OpenVPN now also supports LZ4 compression.
  83. Compression options are now pushable from the server.
  84. Filter pulled options client-side: pull-filter
  85. New option to explicitly allow or reject options pushed by the server.
  86. May be used multiple times and is applied in the order specified.
  87. Per-client remove push options: push-remove
  88. New option to remove options on a per-client basis from the "push" list
  89. (more fine-grained than ``--push-reset``).
  90. Http proxy password inside config file
  91. Http proxy passwords can be specified with the inline file option
  92. ``<http-proxy-user-pass>`` .. ``</http-proxy-user-pass>``
  93. Windows version detection
  94. Windows version is detected, logged and possibly signalled to server
  95. (IV_PLAT_VER=<nn> if ``--push-peer-info`` is set on client).
  96. Authentication tokens
  97. In situations where it is not suitable to save user passwords on the client,
  98. OpenVPN has support for pushing a --auth-token since v2.3. This option is
  99. pushed from the server to the client with a token value to be used instead
  100. of the users password. For this to work, the authentication plug-in would
  101. need to implement this support as well. In OpenVPN 2.4 --auth-gen-token
  102. is introduced, which will allow the OpenVPN server to generate a random
  103. token and push it to the client without any changes to the authentication
  104. modules. When the clients need to re-authenticate the OpenVPN server will
  105. do the authentication internally, instead of sending the re-authentication
  106. request to the authentication module . This feature is especially
  107. useful in configurations which use One Time Password (OTP) authentication
  108. schemes, as this allows the tunnel keys to be renegotiated regularly without
  109. any need to supply new OTP codes.
  110. keying-material-exporter
  111. Keying Material Exporter [RFC-5705] allow additional keying material to be
  112. derived from existing TLS channel.
  113. Android platform support
  114. Support for running on Android using Android's VPNService API has been added.
  115. See doc/android.txt for more details. This support is primarily used in
  116. the OpenVPN for Android app (https://github.com/schwabe/ics-openvpn)
  117. AIX platform support
  118. AIX platform support has been added. The support only includes tap
  119. devices since AIX does not provide tun interface.
  120. Control channel encryption (``--tls-crypt``)
  121. Use a pre-shared static key (like the ``--tls-auth`` key) to encrypt control
  122. channel packets. Provides more privacy, some obfuscation and poor-man's
  123. post-quantum security.
  124. Asynchronous push reply
  125. Plug-ins providing support for deferred authentication can benefit from a more
  126. responsive authentication where the server sends PUSH_REPLY immediately once
  127. the authentication result is ready, instead of waiting for the the client to
  128. to send PUSH_REQUEST once more. This requires OpenVPN to be built with
  129. ``./configure --enable-async-push``. This is a compile-time only switch.
  130. Deprecated features
  131. -------------------
  132. For an up-to-date list of all deprecated options, see this wiki page:
  133. https://community.openvpn.net/openvpn/wiki/DeprecatedOptions
  134. - ``--key-method 1`` is deprecated in OpenVPN 2.4 and will be removed in v2.5.
  135. Migrate away from ``--key-method 1`` as soon as possible. The recommended
  136. approach is to remove the ``--key-method`` option from the configuration
  137. files, OpenVPN will then use ``--key-method 2`` by default. Note that this
  138. requires changing the option in both the client and server side configs.
  139. - ``--tls-remote`` is removed in OpenVPN 2.4, as indicated in the v2.3
  140. man-pages. Similar functionality is provided via ``--verify-x509-name``,
  141. which does the same job in a better way.
  142. - ``--compat-names`` and ``--no-name-remapping`` were deprecated in OpenVPN 2.3
  143. and will be removed in v2.5. All scripts and plug-ins depending on the old
  144. non-standard X.509 subject formatting must be updated to the standardized
  145. formatting. See the man page for more information.
  146. - ``--no-iv`` is deprecated in OpenVPN 2.4 and will be removed in v2.5.
  147. - ``--keysize`` is deprecated in OpenVPN 2.4 and will be removed in v2.6
  148. together with the support of ciphers with cipher block size less than
  149. 128-bits.
  150. - ``--comp-lzo`` is deprecated in OpenVPN 2.4. Use ``--compress`` instead.
  151. - ``--ifconfig-pool-linear`` has been deprecated since OpenVPN 2.1 and will be
  152. removed in v2.5. Use ``--topology p2p`` instead.
  153. - ``--client-cert-not-required`` is deprecated in OpenVPN 2.4 and will be removed
  154. in v2.5. Use ``--verify-client-cert none`` for a functional equivalent.
  155. - ``--ns-cert-type`` is deprecated in OpenVPN 2.3.18 and v2.4. It will be removed
  156. in v2.5. Use the far better ``--remote-cert-tls`` option which replaces this
  157. feature.
  158. User-visible Changes
  159. --------------------
  160. - When using ciphers with cipher blocks less than 128-bits,
  161. OpenVPN will complain loudly if the configuration uses ciphers considered
  162. weak, such as the SWEET32 attack vector. In such scenarios, OpenVPN will by
  163. default renegotiate for each 64MB of transported data (``--reneg-bytes``).
  164. This renegotiation can be disabled, but is HIGHLY DISCOURAGED.
  165. - For certificate DNs with duplicate fields, e.g. "OU=one,OU=two", both fields
  166. are now exported to the environment, where each second and later occurrence
  167. of a field get _$N appended to it's field name, starting at N=1. For the
  168. example above, that would result in e.g. X509_0_OU=one, X509_0_OU_1=two.
  169. Note that this breaks setups that rely on the fact that OpenVPN would
  170. previously (incorrectly) only export the last occurence of a field.
  171. - ``proto udp`` and ``proto tcp`` now use both IPv4 and IPv6. The new
  172. options ``proto udp4`` and ``proto tcp4`` use IPv4 only.
  173. - ``--sndbuf`` and ``--recvbuf`` default now to OS defaults instead of 64k
  174. - OpenVPN exits with an error if an option has extra parameters;
  175. previously they were silently ignored
  176. - ``--tls-auth`` always requires OpenVPN static key files and will no
  177. longer work with free form files
  178. - ``--proto udp6/tcp6`` in server mode will now try to always listen to
  179. both IPv4 and IPv6 on platforms that allow it. Use ``--bind ipv6only``
  180. to explicitly listen only on IPv6.
  181. - Removed ``--enable-password-save`` from configure. This option is now
  182. always enabled.
  183. - Stricter default TLS cipher list (override with ``--tls-cipher``), that now
  184. also disables:
  185. * Non-ephemeral key exchange using static (EC)DH keys
  186. * DSS private keys
  187. - mbed TLS builds: changed the tls_digest_N values exported to the script
  188. environment to be equal to the ones exported by OpenSSL builds, namely
  189. the certificate fingerprint (was the hash of the 'to be signed' data).
  190. - mbed TLS builds: minimum RSA key size is now 2048 bits. Shorter keys will
  191. not be accepted, both local and from the peer.
  192. - ``--connect-timeout`` now specifies the timeout until the first TLS packet
  193. is received (identical to ``--server-poll-timeout``) and this timeout now
  194. includes the removed socks proxy timeout and http proxy timeout.
  195. In ``--static`` mode ``connect-timeout`` specifies the timeout for TCP and
  196. proxy connection establishment
  197. - ``--connect-retry-max`` now specifies the maximum number of unsuccessful
  198. attempts of each remote/connection entry before exiting.
  199. - ``--http-proxy-timeout`` and the static non-changeable socks timeout (5s)
  200. have been folded into a "unified" ``--connect-timeout`` which covers all
  201. steps needed to connect to the server, up to the start of the TLS exchange.
  202. The default value has been raised to 120s, to handle slow http/socks
  203. proxies graciously. The old "fail TCP fast" behaviour can be achieved by
  204. adding "``--connect-timeout 10``" to the client config.
  205. - ``--http-proxy-retry`` and ``--sock-proxy-retry`` have been removed. Proxy connections
  206. will now behave like regular connection entries and generate a USR1 on failure.
  207. - ``--connect-retry`` gets an optional second argument that specifies the maximum
  208. time in seconds to wait between reconnection attempts when an exponential
  209. backoff is triggered due to repeated retries. Default = 300 seconds.
  210. - Data channel cipher negotiation (see New features section) can override
  211. ciphers configured in the config file. Use ``--ncp-disable`` if you do not want
  212. this behavior.
  213. - All tun devices on all platforms are always considered to be IPv6
  214. capable. The ``--tun-ipv6`` option is ignored (behaves like it is always
  215. on).
  216. - On the client side recursively routed packets, which have the same destination
  217. as the VPN server, are dropped. This can be disabled with
  218. --allow-recursive-routing option.
  219. - On Windows, when the ``--register-dns`` option is set, OpenVPN no longer
  220. restarts the ``dnscache`` service - this had unwanted side effects, and
  221. seems to be no longer necessary with currently supported Windows versions.
  222. - If no flags are given, and the interactive Windows service is used, "def1"
  223. is implicitly set (because "delete and later reinstall the existing
  224. default route" does not work well here). If not using the service,
  225. the old behaviour is kept.
  226. - OpenVPN now reloads a CRL only if the modication time or file size has
  227. changed, instead of for each new connection. This reduces the connection
  228. setup time, in particular when using large CRLs.
  229. - OpenVPN now ships with more up-to-date systemd unit files which take advantage
  230. of the improved service management as well as some hardening steps. The
  231. configuration files are picked up from the /etc/openvpn/server/ and
  232. /etc/openvpn/client/ directories (depending on unit file). This also avoids
  233. these new unit files and how they work to collide with older pre-existing
  234. unit files.
  235. - Using ``--no-iv`` (which is generally not a recommended setup) will
  236. require explicitly disabling NCP with ``--disable-ncp``. This is
  237. intentional because NCP will by default use AES-GCM, which requires
  238. an IV - so we want users of that option to consciously reconsider.
  239. Maintainer-visible changes
  240. --------------------------
  241. - OpenVPN no longer supports building with crypto support, but without TLS
  242. support. As a consequence, OPENSSL_CRYPTO_{CFLAGS,LIBS} and
  243. OPENSSL_SSL_{CFLAGS,LIBS} have been merged into OPENSSL_{CFLAGS,LIBS}. This
  244. is particularly relevant for maintainers who build their own OpenSSL library,
  245. e.g. when cross-compiling.
  246. - Linux distributions using systemd is highly encouraged to ship these new unit
  247. files instead of older ones, to provide a unified behaviour across systemd
  248. based Linux distributions.
  249. - With OpenVPN 2.4, the project has moved over to depend on and actively use
  250. the official C99 standard (-std=c99). This may fail on some older compiler/libc
  251. header combinations. In most of these situations it is recommended to
  252. use -std=gnu99 in CFLAGS. This is known to be needed when doing
  253. i386/i686 builds on RHEL5.
  254. Version 2.4.9
  255. =============
  256. This is primarily a maintenance release with minor bugfixes and improvements.
  257. New features
  258. ------------
  259. - Allow unicode search string in --cryptoapicert option (Windows)
  260. User visible changes
  261. --------------------
  262. - Skip expired certificates in Windows certificate store (Windows) (trac #966)
  263. - OpenSSL: Fix --crl-verify not loading multiple CRLs in one file (trac #623)
  264. - When using "--auth-user-pass file" with just a username and no password
  265. in the file, OpenVPN now queries the management interface (if active)
  266. for the credentials. Previously it would query the console for the
  267. password, and fail if no console available (normal case on Windows)
  268. (trac #757)
  269. - Swap the order of checks for validating interactive service user
  270. (Windows: check config location before querying domain controller for
  271. group membership, which can be slow)
  272. Bug fixes
  273. ---------
  274. - fix condition where a client's session could "float" to a new IP address
  275. that is not authorized ("fix illegal client float").
  276. This can be used to disrupt service to a freshly connected client (no
  277. session keys negotiated yet). It can not be used to inject or steal
  278. VPN traffic. CVE-2020-11810, trac #1272).
  279. - fix combination of async push (deferred auth) and NCP (trac #1259)
  280. - Fix OpenSSL 1.1.1 not using auto elliptic curve selection (trac #1228)
  281. - Fix OpenSSL error stack handling of tls_ctx_add_extra_certs
  282. - mbedTLS: Make sure TLS session survives move (trac #880)
  283. - Fix OpenSSL private key passphrase notices
  284. - Fix building with --enable-async-push in FreeBSD (trac #1256)
  285. - Fix broken fragmentation logic when using NCP (trac #1140)
  286. Version 2.4.8
  287. =============
  288. This is primarily a maintenance release with minor bugfixes and improvements.
  289. New features
  290. ------------
  291. - Support compiling with OpenSSL 1.1 without deprecated APIs
  292. - handle PSS padding in cryptoapicert (necessary for TLS >= 1.2)
  293. User visible changes
  294. --------------------
  295. - do not abort when hitting the combination of "--pull-filter" and
  296. "--mode server" (this got hit when starting OpenVPN servers using
  297. the windows GUI which installs a pull-filter to force ip-win32)
  298. - increase listen() backlog queue to 32 (improve response behaviour
  299. on openvpn servers using TCP that get portscanned)
  300. - fix and enhance documentation (INSTALL, man page, ...)
  301. Bug fixes
  302. ---------
  303. - the combination "IPv6 and proto UDP and SOCKS proxy" did not work - as
  304. a workaround, force IPv4 in this case until a full implementation for
  305. IPv6-UDP-SOCKS can be made.
  306. - fix IPv6 routes on tap interfaces on OpenSolaris/OpenIndiana
  307. - fix building with LibreSSL
  308. - do not set pkcs11-helper 'safe fork mode' (should fix PIN querying in
  309. systemd environments)
  310. - repair windows builds
  311. - repair Darwin builds (remove -no-cpp-precomp flag)
  312. Version 2.4.7
  313. =============
  314. This is primarily a maintenance release with minor bugfixes and improvements.
  315. New features
  316. ------------
  317. - ifconfig-ipv6(-push): allow using hostnames (in place of IPv6 addresses)
  318. - new option: --ciphersuites to select TLS 1.3 cipher suites
  319. (--cipher selects TLS 1.2 and earlier ciphers)
  320. - enable dhcp on tap adapter using interactive service
  321. (previously this required a privileged netsh.exe call from OpenVPN)
  322. - clarify and expand management interface documentation
  323. - add Interactive Service developer documentation
  324. User visible changes
  325. --------------------
  326. - add message explaining early TLS client hello failure (if TLS 1.0
  327. only clients try to connect to TLS 1.3 capable servers)
  328. - --show-tls will now display TLS 1.3 and TLS 1.2 ciphers in separate
  329. lists (if built with OpenSSL 1.1.1+)
  330. - don't print OCC warnings about 'key-method', 'keydir' and 'tls-auth'
  331. (unnecessary warnings, and will cause spurious warnings with tls-crypt-v2)
  332. - bump version of openvpn plugin argument structs to 5
  333. - plugin: Export base64 encode and decode functions
  334. - man: add security considerations to --compress section
  335. Bug fixes
  336. ---------
  337. - print port numbers (again) for incoming IPv4 connections received on
  338. a dual-stacked IPv6 socket. This got lost at some point during
  339. rewrite of the dual-stack code and proper printing of IPv4 addresses.
  340. - fallback to password authentication when auth-token fails
  341. - fix combination of --dev tap and --topology subnet across multiple
  342. platforms (BSDs, MacOS, and Solaris).
  343. - fix Windows CryptoAPI usage for TLS 1.2 signatures
  344. - fix option handling in combination with NCP negotiation and OCC
  345. (--opt-verify failure on reconnect if NCP modified options and server
  346. verified "original" vs. "modified" options)
  347. - mbedtls: print warning if random personalisation fails
  348. - fix subnet topology on NetBSD (2.4).
  349. Version 2.4.6
  350. =============
  351. This is primarily a maintenance release with minor bugfixes and improvements,
  352. and one security relevant fix for the Windows Interactive Service.
  353. User visible changes
  354. --------------------
  355. - warn if the management interface is configured with a TCP port and
  356. no password is set (because it might be possible to interfere with
  357. OpenVPN operation by tricking other programs into connecting to the
  358. management interface and inject unwanted commands)
  359. Bug fixes
  360. ---------
  361. - CVE-2018-9336: fix potential double-free() in the Interactive Service
  362. (Windows) on malformed input.
  363. - avoid possible integer overflow in wakeup computation (trac #922)
  364. - improve handling of incoming packet bursts for control channel data
  365. - fix compilation with older OpenSSL versions that were broken in 2.4.5
  366. - Windows + interactive Service: delete the IPv6 route to the "connected"
  367. network on tun close
  368. Version 2.4.5
  369. =============
  370. This is primarily a maintenance release, with further improved OpenSSL 1.1
  371. integration, several minor bug fixes and other minor improvements.
  372. New features
  373. ------------
  374. - The new option ``--tls-cert-profile`` can be used to restrict the set of
  375. allowed crypto algorithms in TLS certificates in mbed TLS builds. The
  376. default profile is 'legacy' for now, which allows SHA1+, RSA-1024+ and any
  377. elliptic curve certificates. The default will be changed to the 'preferred'
  378. profile in the future, which requires SHA2+, RSA-2048+ and any curve.
  379. - make CryptoAPI support (Windows) compatible with OpenSSL 1.1 builds
  380. - TLS v1.2 support for cryptoapicert (on Windows) -- RSA only
  381. - openvpnserv: Add support for multi-instances (to support multiple
  382. parallel OpenVPN installations, like EduVPN and regular OpenVPN)
  383. - Use P_DATA_V2 for server->client packets too (better packet alignment)
  384. - improve management interface documentation
  385. - rework registry key handling for OpenVPN service, notably making most
  386. registry values optional, falling back to reasonable defaults
  387. - accept IPv6 address for pushed "dhcp-option DNS ..."
  388. (make OpenVPN 2 option compatible with OpenVPN 3 iOS and Android clients)
  389. Bug fixes
  390. ---------
  391. - Fix --tls-version-min and --tls-version-max for OpenSSL 1.1+
  392. - Fix lots of compiler warnings (format string, type casts, ...)
  393. - Fix --redirect-gateway route installation on Windows systems that have
  394. multiple interfaces into the same network (e.g. Wifi and wired LAN).
  395. - Fix IPv6 interface route cleanup on Windows
  396. - reload HTTP proxy credentials when moving to the next connection profile
  397. - Fix build with LibreSSL (multiple times)
  398. - Remove non-useful warning on pushed tun-ipv6 option.
  399. - fix building with MSVC due to incompatible C constructs
  400. - autoconf: Fix engine checks for openssl 1.1
  401. - lz4: Rebase compat-lz4 against upstream v1.7.5
  402. - lz4: Fix broken builds when pkg-config is not present but system library is
  403. - Fix '--bind ipv6only'
  404. - Allow learning iroutes with network made up of all 0s
  405. Version 2.4.4
  406. =============
  407. This is primarily a maintenance release, with further improved OpenSSL 1.1
  408. integration, several minor bug fixes and other minor improvements.
  409. Bug fixes
  410. ---------
  411. - Fix issues when a pushed cipher via the Negotiable Crypto Parameters (NCP) is
  412. rejected by the remote side
  413. - Ignore ``--keysize`` when NCP have resulted in a changed cipher.
  414. - Configurations using ``--auth-nocache`` and the management interface to provide
  415. user credentials (like NetworkManager on Linux) on client side with servers
  416. implementing authentication tokens (for example, using ``--auth-gen-token``)
  417. will now behave correctly and not query the user for an, to them, unknown
  418. authentication token on renegotiations of the tunnel.
  419. - Fix bug causing invalid or corrupt SOCKS port number when changing the
  420. proxy via the management interface.
  421. - The man page should now have proper escaping of hyphens/minus characters
  422. and have seen some minor corrections.
  423. User-visible Changes
  424. --------------------
  425. - Linux servers with systemd which uses the ``openvpn-server@.service`` unit
  426. file for server configurations will now utilize the automatic restart feature
  427. in systemd. If the OpenVPN server process dies unexpectedly, systemd will
  428. ensure the OpenVPN configuration will be restarted without any user interaction.
  429. Deprecated features
  430. -------------------
  431. - ``--no-replay`` is deprecated and will be removed in OpenVPN 2.5.
  432. - ``--keysize`` is deprecated in OpenVPN 2.4 and will be removed in v2.6
  433. Security
  434. --------
  435. - CVE-2017-12166: Fix bounds check for configurations using ``--key-method 1``.
  436. Before this fix, it could allow an attacker to send a malformed packet to
  437. trigger a stack overflow. This is considered to be a low risk issue, as
  438. ``--key-method 2`` has been the default since OpenVPN 2.0 (released on
  439. 2005-04-17). This option is already deprecated in v2.4 and will be
  440. completely removed in v2.5.
  441. Version 2.4.3
  442. =============
  443. New features
  444. ------------
  445. - Support building with OpenSSL 1.1 now (in addition to older versions)
  446. - On Win10, set low interface metric for TAP adapter when block-outside-dns
  447. is in use, to make Windows prefer the TAP adapter for DNS queries
  448. (avoiding large delays)
  449. Security
  450. --------
  451. - CVE-2017-7522: Fix ``--x509-track`` post-authentication remote DoS
  452. A client could crash a v2.4+ mbedtls server, if that server uses the
  453. ``--x509-track`` option and the client has a correct, signed and unrevoked
  454. certificate that contains an embedded NUL in the certificate subject.
  455. Discovered and reported to the OpenVPN security team by Guido Vranken.
  456. - CVE-2017-7521: Fix post-authentication remote-triggerable memory leaks
  457. A client could cause a server to leak a few bytes each time it connects to the
  458. server. That can eventuall cause the server to run out of memory, and thereby
  459. causing the server process to terminate. Discovered and reported to the
  460. OpenVPN security team by Guido Vranken. (OpenSSL builds only.)
  461. - CVE-2017-7521: Fix a potential post-authentication remote code execution
  462. attack on servers that use the ``--x509-username-field`` option with an X.509
  463. extension field (option argument prefixed with ``ext:``). A client that can
  464. cause a server to run out-of-memory (see above) might be able to cause the
  465. server to double free, which in turn might lead to remote code execution.
  466. Discovered and reported to the OpenVPN security team by Guido Vranken.
  467. (OpenSSL builds only.)
  468. - CVE-2017-7520: Pre-authentication remote crash/information disclosure for
  469. clients. If clients use a HTTP proxy with NTLM authentication (i.e.
  470. ``--http-proxy <server> <port> [<authfile>|'auto'|'auto-nct'] ntlm2``),
  471. a man-in-the-middle attacker between the client and the proxy can cause
  472. the client to crash or disclose at most 96 bytes of stack memory. The
  473. disclosed stack memory is likely to contain the proxy password. If the
  474. proxy password is not reused, this is unlikely to compromise the security
  475. of the OpenVPN tunnel itself. Clients who do not use the ``--http-proxy``
  476. option with ntlm2 authentication are not affected.
  477. - CVE-2017-7508: Fix remotely-triggerable ASSERT() on malformed IPv6 packet.
  478. This can be used to remotely shutdown an openvpn server or client, if
  479. IPv6 and ``--mssfix`` are enabled and the IPv6 networks used inside the VPN
  480. are known.
  481. - Fix null-pointer dereference when talking to a malicious http proxy
  482. that returns a malformed Proxy-Authenticate: headers for digest auth.
  483. - Fix overflow check for long ``--tls-cipher`` option
  484. - Windows: Pass correct buffer size to ``GetModuleFileNameW()``
  485. (OSTIF/Quarkslabs audit, finding 5.6)
  486. User-visible Changes
  487. --------------------
  488. - ``--verify-hash`` can now take an optional flag which changes the hashing
  489. algorithm. It can be either SHA1 or SHA256. The default if not provided is
  490. SHA1 to preserve backwards compatibility with existing configurations.
  491. - Restrict the supported ``--x509-username-field`` extension fields to subjectAltName
  492. and issuerAltName. Other extensions probably didn't work anyway, and would
  493. cause OpenVPN to crash when a client connects.
  494. Bugfixes
  495. --------
  496. - Fix fingerprint calculation in mbed TLS builds. This means that mbed TLS users
  497. of OpenVPN 2.4.0, v2.4.1 and v2.4.2 that rely on the values of the
  498. ``tls_digest_*`` env vars, or that use ``--verify-hash`` will have to change
  499. the fingerprint values they check against. The security impact of the
  500. incorrect calculation is very minimal; the last few bytes (max 4, typically
  501. 4) are not verified by the fingerprint. We expect no real-world impact,
  502. because users that used this feature before will notice that it has suddenly
  503. stopped working, and users that didn't will notice that connection setup
  504. fails if they specify correct fingerprints.
  505. - Fix edge case with NCP when the server sends an empty PUSH_REPLY message
  506. back, and the client would not initialize it's data channel crypto layer
  507. properly (trac #903)
  508. - Fix SIGSEGV on unaligned buffer access on OpenBSD/Sparc64
  509. - Fix TCP_NODELAY on OpenBSD
  510. - Remove erroneous limitation on max number of args for --plugin
  511. - Fix NCP behaviour on TLS reconnect (Server would not send a proper
  512. "cipher ..." message back to the client, leading to client and server
  513. using different ciphers) (trac #887)
  514. Version 2.4.2
  515. =============
  516. Bugfixes
  517. --------
  518. - Fix memory leak introduced in OpenVPN 2.4.1: if ``--remote-cert-tls`` is
  519. used, we leaked some memory on each TLS (re)negotiation.
  520. Security
  521. --------
  522. - Fix a pre-authentication denial-of-service attack on both clients and
  523. servers. By sending a too-large control packet, OpenVPN 2.4.0 or v2.4.1 can
  524. be forced to hit an ASSERT() and stop the process. If ``--tls-auth`` or
  525. ``--tls-crypt`` is used, only attackers that have the ``--tls-auth`` or
  526. ``--tls-crypt`` key can mount an attack.
  527. (OSTIF/Quarkslab audit finding 5.1, CVE-2017-7478)
  528. - Fix an authenticated remote DoS vulnerability that could be triggered by
  529. causing a packet id roll over. An attack is rather inefficient; a peer
  530. would need to get us to send at least about 196 GB of data.
  531. (OSTIF/Quarkslab audit finding 5.2, CVE-2017-7479)
  532. Version 2.4.1
  533. =============
  534. - ``--remote-cert-ku`` now only requires the certificate to have at least the
  535. bits set of one of the values in the supplied list, instead of requiring an
  536. exact match to one of the values in the list.
  537. - ``--remote-cert-tls`` now only requires that a keyUsage is present in the
  538. certificate, and leaves the verification of the value up to the crypto
  539. library, which has more information (i.e. the key exchange method in use)
  540. to verify that the keyUsage is correct.
  541. - ``--ns-cert-type`` is deprecated. Use ``--remote-cert-tls`` instead.
  542. The nsCertType x509 extension is very old, and barely used.
  543. ``--remote-cert-tls`` uses the far more common keyUsage and extendedKeyUsage
  544. extension instead. Make sure your certificates carry these to be able to
  545. use ``--remote-cert-tls``.