On Tue, Mar 15, 2022 at 12:38 AM Dimitri Papadopoulos
<dimitri.papadopou...@cea.fr> wrote:
>
> Hi,
>
> It definitely looks like an Ubuntu bug. I can reproduce this issue when
> building against the OpenSSL library that ships with Ubuntu 20.04:
>
> $ ./configure \
>         --prefix=/my/path/openconnect \
>         --with-vpnc-script=/my/src/vpnc-scripts/vpnc-script \
>         --with-openssl
> $
> $ make check
> [...]
> FAIL: bad_dtls_test
>
> <snip>
>
> This failure disappears after building against a vanilla OpenSSL 1.1.1f:
>
> $ ./configure \
>         --prefix=/my/path/openconnect \
>         --with-vpnc-script=/my/src/vpnc-scripts/vpnc-script \
>         --with-openssl=/my/src/openssl-1.1.1f
> $
> $ make check
> [...]
> PASS: bad_dtls_test

Great find, Dimitri! Thank you.

Per https://packages.ubuntu.com/focal-updates/libssl-dev, this package
seems to come straight from Debian with no Ubuntu modifications. A
glance at the debian/patches/ directory from
http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.11.debian.tar.xz
suggests that there are a pretty stupendously large number of patches
applied against the upstream OpenSSL 1.1.1f. ☹

This patch suggests that the "OpenSSL security level" could be the
culprit: if the "OpenSSL security level is set to >=2, then vanilla
OpenSSL 1.1.1f will allow old/bad/Cisco DTLS, but Debian/Ubuntu
OpenSSL 1.1.1f will *not* allow it:

tls1.2-min-seclevel2.patch-Description: TLS versions below 1.2 are not
permitted as security level 2.
tls1.2-min-seclevel2.patch-
tls1.2-min-seclevel2.patch-Index: openssl-1.1.1d/ssl/ssl_cert.c
tls1.2-min-seclevel2.patch-===================================================================
tls1.2-min-seclevel2.patch---- openssl-1.1.1d.orig/ssl/ssl_cert.c
tls1.2-min-seclevel2.patch-+++ openssl-1.1.1d/ssl/ssl_cert.c
tls1.2-min-seclevel2.patch-@@ -956,18 +956,12 @@ static int
ssl_security_default_callback
tls1.2-min-seclevel2.patch-         }
tls1.2-min-seclevel2.patch-     case SSL_SECOP_VERSION:
tls1.2-min-seclevel2.patch:         if (!SSL_IS_DTLS(s)) {
tls1.2-min-seclevel2.patch--            /* SSLv3 not allowed at level 2 */
tls1.2-min-seclevel2.patch--            if (nid <= SSL3_VERSION && level >= 2)
tls1.2-min-seclevel2.patch--                return 0;
tls1.2-min-seclevel2.patch--            /* TLS v1.1 and above only for
level 3 */
tls1.2-min-seclevel2.patch--            if (nid <= TLS1_VERSION && level >= 3)
tls1.2-min-seclevel2.patch--                return 0;
tls1.2-min-seclevel2.patch--            /* TLS v1.2 only for level 4
and above */
tls1.2-min-seclevel2.patch--            if (nid <= TLS1_1_VERSION && level >= 4)
tls1.2-min-seclevel2.patch-+            /* TLS v1.2 only for level 2
and above */
tls1.2-min-seclevel2.patch-+            if (nid <= TLS1_1_VERSION && level >= 2)
tls1.2-min-seclevel2.patch-                 return 0;
tls1.2-min-seclevel2.patch-         } else {
tls1.2-min-seclevel2.patch:-            /* DTLS v1.2 only for level 4
and above */
tls1.2-min-seclevel2.patch:-            if (DTLS_VERSION_LT(nid,
DTLS1_2_VERSION) && level >= 4)
tls1.2-min-seclevel2.patch:+            /* DTLS v1.2 only for level 2
and above */
tls1.2-min-seclevel2.patch:+            if (DTLS_VERSION_LT(nid,
DTLS1_2_VERSION) && level >= 2)
tls1.2-min-seclevel2.patch-                 return 0;
tls1.2-min-seclevel2.patch-         }
tls1.2-min-seclevel2.patch-         break;

Since https://gitlab.com/openconnect/openconnect/-/merge_requests/158,
the `--allow-obsolete-crypto` flag is supposed to set the OpenSSL
security level to ZERO. Does adding this flag make the test pass when
using the Ubuntu-distributed libraries?

We decided in 
https://gitlab.com/openconnect/openconnect/-/issues/211#note_492787698
that *unconditionally* setting the OpenSSL security level to ZERO was
not a good idea. If Debian-based distros are now preventing
old/bad/Cisco DTLS from working, then we're definitely going to have
to update our docs to reflect this. And maybe rethink the decision not
to unconditionally set to zero.

Dan

_______________________________________________
openconnect-devel mailing list
openconnect-devel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/openconnect-devel

Reply via email to