Go to file
Arne Schwabe a7f80d402f Refuse clients if username or password is longer than USER_PASS_LEN
When OpenVPN is compiled without PKCS11 support USER_PASS_LEN is 128
bytes. If we encounter a username larger than this length, we would
only read the 2 bytes length header of the username/password.  We did
then also NOT skip the username or password field meaning that we would
continue reading the rest of the packet at the wrong offset and get
garbage results like not having peerinfo and then rejecting a client
because of no common cipher or missing data v2 support.

This will tell the client that username/password is too regardless
of whether password/username authentication is used.  This way we
do not leak if username/password authentication is active.

To reproduce this issue have the server compiled with a USER_PASS_LEN
set to 128 (e.g. without pkcs11 or manually adjusting the define) and
have the client with a larger USER_PASS_LEN to actually be able to
send the larger password. The server must also be set to use only
certificate authentication while the client must use certificates
and auth-user-pass because otherwise the user/pass verification will
reject the empty credentials.

Using the openvpn3 test client with overlong username/password also
works.

Change-Id: I60f02c919767eb8f1b95253689a8233f5f68621d
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20241028135505.28651-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg29675.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
2024-10-28 15:24:20 +01:00
.github GHA: Simplify macOS builds 2024-10-16 11:22:40 +02:00
contrib Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
debug build: standard directory layout 2012-03-22 22:07:08 +01:00
dev-tools Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
distro Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
doc Introduce DRIVER_AFUNIX backend for use with lwipovpn 2024-09-24 13:46:10 +02:00
include Windows: enforce 'block-local' with WFP filters 2024-06-05 19:22:43 +02:00
m4 configure: update old copy of pkg.m4 2024-05-06 18:24:23 +02:00
sample sample/sample-plugins/defer/multi-auth.c: handle strdup errors 2024-09-09 09:21:14 +02:00
src Refuse clients if username or password is longer than USER_PASS_LEN 2024-10-28 15:24:20 +01:00
tests t_server_null: use wait instead of marker files 2024-10-26 11:50:18 +02:00
.git-blame-ignore-revs uncrustify: add sp_after_comma=add 2022-05-22 13:10:22 +02:00
.gitattributes cleanup: add .gitattributes to control eol style explicitly 2012-04-26 20:54:26 +02:00
.gitignore Add t_server_null test suite 2024-06-18 22:41:51 +02:00
.mailmap Update .mailmap to unify and clean up odd names and e-mail addresses 2016-10-18 13:46:04 +02:00
.svncommitters Added mapping files from SVN commit ID to more descriptive commit IDs. 2010-10-21 11:31:26 +02:00
AUTHORS This is the start of the BETA21 branch. 2005-09-26 05:28:27 +00:00
ChangeLog Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
Changes.rst Introduce DRIVER_AFUNIX backend for use with lwipovpn 2024-09-24 13:46:10 +02:00
CMakeLists.txt Fix check for CMake not detecting struct cmsg 2024-09-25 18:35:44 +02:00
CMakePresets.json CMake: Add complete MinGW and MSVC build 2023-06-27 18:07:03 +02:00
compat.m4 Remove checks for uint* types that are part of C99 2021-04-07 08:30:34 +02:00
config.h.cmake.in Remove check for anonymous unions from configure and cmake config 2024-09-12 16:59:43 +02:00
configure.ac configure: Review use of standard AC macros 2024-09-18 22:50:08 +02:00
CONTRIBUTING.rst Add git pre-commit hook script to uncrustify 2022-04-22 09:25:55 +02:00
COPYING Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
COPYRIGHT.GPL copyright: Update GPLv2 license texts 2017-06-16 10:38:03 +02:00
forked-test-driver forked-test-driver: Show test output always 2024-04-02 17:20:48 +02:00
INSTALL Remove OpenSSL 1.0.2 support 2024-05-14 16:38:36 +02:00
ltrc.inc cmake: symlink whole build dir not just .json file 2024-01-17 15:01:54 +01:00
Makefile.am configure: Allow to detect git checkout if .git is not a directory 2024-09-06 22:07:18 +02:00
NEWS This is the start of the BETA21 branch. 2005-09-26 05:28:27 +00:00
PORTS Update Copyright statements to 2024 2024-03-18 18:46:26 +01:00
README README.cmake.md: Add new documentation for CMake buildsystem 2023-07-07 19:07:10 +02:00
README.cmake.md README.cmake.md: Document minimum required CMake version for --preset 2024-02-01 20:26:45 +01:00
README.dco.md README.cmake.md: Add new documentation for CMake buildsystem 2023-07-07 19:07:10 +02:00
README.ec Implement tls-groups option to specify eliptic curves/groups 2020-07-21 22:33:58 +02:00
README.mbedtls Remove license warning from README.mbedtls 2024-03-15 09:16:54 +01:00
README.wolfssl README.wolfssl Update 2021-03-19 15:19:31 +01:00
renovate.json GHA: Configure Renovate 2024-09-08 13:57:11 +02:00
version.m4 Change version.m4 to 2.7_git 2022-12-01 16:33:25 +01:00

OpenVPN -- A Secure tunneling daemon

Copyright (C) 2002-2022 OpenVPN Inc. This program is free software;
you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
as published by the Free Software Foundation.

*************************************************************************

To get the latest release of OpenVPN, go to:

	https://openvpn.net/community-downloads/

To Build and Install,

	tar -zxf openvpn-<version>.tar.gz
	cd openvpn-<version>
	./configure
	make
	make install

or see the file INSTALL for more info.

For information on how to build OpenVPN on/for Windows with MinGW
or MSVC see README.cmake.md.

*************************************************************************

For detailed information on OpenVPN, including examples, see the man page
  http://openvpn.net/man.html

For a sample VPN configuration, see
  http://openvpn.net/howto.html

To report an issue, see
  https://github.com/OpenVPN/openvpn/issues/new
  (Note: We recently switched to GitHub for reporting new issues,
   old issues can be found at:
   https://community.openvpn.net/openvpn/report)

For a description of OpenVPN's underlying protocol,
  see the file ssl.h included in the source distribution.

*************************************************************************

Other Files & Directories:

* configure.ac -- script to rebuild our configure
  script and makefile.

* sample/sample-scripts/verify-cn

  A sample perl script which can be used with OpenVPN's
  --tls-verify option to provide a customized authentication
  test on embedded X509 certificate fields.

* sample/sample-keys/

  Sample RSA keys and certificates.  DON'T USE THESE FILES
  FOR ANYTHING OTHER THAN TESTING BECAUSE THEY ARE TOTALLY INSECURE.

* sample/sample-config-files/

  A collection of OpenVPN config files and scripts from
  the HOWTO at http://openvpn.net/howto.html

*************************************************************************

Note that easy-rsa and tap-windows are now maintained in their own subprojects.
Their source code is available here:

  https://github.com/OpenVPN/easy-rsa
  https://github.com/OpenVPN/tap-windows6

Community-provided Windows installers (MSI) and Debian packages are built from

  https://github.com/OpenVPN/openvpn-build

See the INSTALL file for usage information.