git: 073184da6c96 - main - security/openssl: Security update for CVE-2023-0465 & 0466
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 29 Mar 2023 18:33:40 UTC
The branch main has been updated by brnrd: URL: https://cgit.FreeBSD.org/ports/commit/?id=073184da6c96ee7a5d77d4853426074a25b3dea8 commit 073184da6c96ee7a5d77d4853426074a25b3dea8 Author: Bernard Spil <brnrd@FreeBSD.org> AuthorDate: 2023-03-29 18:32:57 +0000 Commit: Bernard Spil <brnrd@FreeBSD.org> CommitDate: 2023-03-29 18:32:57 +0000 security/openssl: Security update for CVE-2023-0465 & 0466 Security: 425b9538-ce5f-11ed-ade3-d4c9ef517024 --- security/openssl31/Makefile | 2 +- security/openssl31/files/patch-CVE-2023-0464 | 75 ++++++++++++++++ security/openssl31/files/patch-CVE-2023-0465 | 126 +++++++++++++++++++++++++++ security/openssl31/files/patch-CVE-2023-0466 | 91 +++++++++++++++++++ 4 files changed, 293 insertions(+), 1 deletion(-) diff --git a/security/openssl31/Makefile b/security/openssl31/Makefile index 08c970f50f76..041bc222b9b3 100644 --- a/security/openssl31/Makefile +++ b/security/openssl31/Makefile @@ -1,6 +1,6 @@ PORTNAME= openssl DISTVERSION= 3.1.0 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= security devel MASTER_SITES= https://www.openssl.org/source/ \ ftp://ftp.cert.dfn.de/pub/tools/net/openssl/source/ diff --git a/security/openssl31/files/patch-CVE-2023-0464 b/security/openssl31/files/patch-CVE-2023-0464 index 08918b990a6a..42c2da901f03 100644 --- a/security/openssl31/files/patch-CVE-2023-0464 +++ b/security/openssl31/files/patch-CVE-2023-0464 @@ -1,3 +1,78 @@ +From 28b69c9b4cf451655fe5aa5904294512fa4706c7 Mon Sep 17 00:00:00 2001 +From: Matt Caswell <matt@openssl.org> +Date: Tue, 14 Mar 2023 12:59:14 +0000 +Subject: [PATCH] Prepare for 3.1.1 + +Reviewed-by: Tomas Mraz <tomas@openssl.org> +Release: yes +--- + CHANGES.md | 4 ++++ + NEWS.md | 4 ++++ + VERSION.dat | 6 +++--- + 3 files changed, 11 insertions(+), 3 deletions(-) + +diff --git a/CHANGES.md b/CHANGES.md +index 762f42e2c449..950390780ba1 100644 +--- CHANGES.md.orig ++++ CHANGES.md +@@ -22,6 +22,10 @@ OpenSSL Releases + OpenSSL 3.1 + ----------- + ++### Changes between 3.1.0 and 3.1.1 [xx XXX xxxx] ++ ++ * none yet ++ + ### Changes between 3.0 and 3.1.0 [14 Mar 2023] + + * Add FIPS provider configuration option to enforce the +diff --git a/NEWS.md b/NEWS.md +index 7846919675d5..c243c5e6818a 100644 +--- NEWS.md.orig ++++ NEWS.md +@@ -19,6 +19,10 @@ OpenSSL Releases + OpenSSL 3.1 + ----------- + ++### Major changes between OpenSSL 3.1.0 and OpenSSL 3.1.1 [under development] ++ ++ * none ++ + ### Major changes between OpenSSL 3.0 and OpenSSL 3.1.0 [14 Mar 2023] + + * SSL 3, TLS 1.0, TLS 1.1, and DTLS 1.0 only work at security level 0. +From b15797a81a76fd62eedf3ffda91dcf5162b51184 Mon Sep 17 00:00:00 2001 +From: Pauli <pauli@openssl.org> +Date: Wed, 15 Mar 2023 14:13:22 +1100 +Subject: [PATCH] changes: note about policy tree size limits and circumvention + +Reviewed-by: Tomas Mraz <tomas@openssl.org> +Reviewed-by: Shane Lontis <shane.lontis@oracle.com> +(Merged from https://github.com/openssl/openssl/pull/20570) +--- + CHANGES.md | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/CHANGES.md b/CHANGES.md +index 950390780ba1..99cabb3057fb 100644 +--- CHANGES.md.orig ++++ CHANGES.md +@@ -24,7 +24,14 @@ OpenSSL 3.1 + + ### Changes between 3.1.0 and 3.1.1 [xx XXX xxxx] + +- * none yet ++ * Limited the number of nodes created in a policy tree to mitigate ++ against CVE-2023-0464. The default limit is set to 1000 nodes, which ++ should be sufficient for most installations. If required, the limit ++ can be adjusted by setting the OPENSSL_POLICY_TREE_NODES_MAX build ++ time define to a desired maximum number of nodes or zero to allow ++ unlimited growth. ++ ++ *Paul Dale* + + ### Changes between 3.0 and 3.1.0 [14 Mar 2023] + From 2017771e2db3e2b96f89bbe8766c3209f6a99545 Mon Sep 17 00:00:00 2001 From: Pauli <pauli@openssl.org> Date: Wed, 8 Mar 2023 15:28:20 +1100 diff --git a/security/openssl31/files/patch-CVE-2023-0465 b/security/openssl31/files/patch-CVE-2023-0465 new file mode 100644 index 000000000000..3873133819b7 --- /dev/null +++ b/security/openssl31/files/patch-CVE-2023-0465 @@ -0,0 +1,126 @@ +From 07d8baf3367cbbf81877510e5102e6193da4bfe7 Mon Sep 17 00:00:00 2001 +From: Matt Caswell <matt@openssl.org> +Date: Thu, 23 Mar 2023 15:31:25 +0000 +Subject: [PATCH] Updated CHANGES.md and NEWS.md for CVE-2023-0465 + +Also updated the entries for CVE-2023-0464 + +Related-to: CVE-2023-0465 + +Reviewed-by: Hugo Landau <hlandau@openssl.org> +Reviewed-by: Tomas Mraz <tomas@openssl.org> +(Merged from https://github.com/openssl/openssl/pull/20586) +--- + CHANGES.md | 12 ++++++++++++ + NEWS.md | 6 +++++- + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/CHANGES.md b/CHANGES.md +index 99cabb3057fb..511886d213f9 100644 +--- CHANGES.md.orig ++++ CHANGES.md +@@ -24,12 +24,22 @@ OpenSSL 3.1 + + ### Changes between 3.1.0 and 3.1.1 [xx XXX xxxx] + ++ * Fixed an issue where invalid certificate policies in leaf certificates are ++ silently ignored by OpenSSL and other certificate policy checks are skipped ++ for that certificate. A malicious CA could use this to deliberately assert ++ invalid certificate policies in order to circumvent policy checking on the ++ certificate altogether. ++ ([CVE-2023-0465]) ++ ++ *Matt Caswell* ++ + * Limited the number of nodes created in a policy tree to mitigate + against CVE-2023-0464. The default limit is set to 1000 nodes, which + should be sufficient for most installations. If required, the limit + can be adjusted by setting the OPENSSL_POLICY_TREE_NODES_MAX build + time define to a desired maximum number of nodes or zero to allow + unlimited growth. ++ ([CVE-2023-0464]) + + *Paul Dale* + +@@ -19689,6 +19699,8 @@ ndif + + <!-- Links --> + ++[CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 ++[CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 + [CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 + [CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286 + [CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217 +diff --git a/NEWS.md b/NEWS.md +index c243c5e6818a..23f918f604ea 100644 +--- NEWS.md.orig ++++ NEWS.md +@@ -21,7 +21,9 @@ OpenSSL 3.1 + + ### Major changes between OpenSSL 3.1.0 and OpenSSL 3.1.1 [under development] + +- * none ++ * Fixed handling of invalid certificate policies in leaf certificates ++ ([CVE-2023-0465]) ++ * Limited the number of nodes created in a policy tree ([CVE-2023-0464]) + + ### Major changes between OpenSSL 3.0 and OpenSSL 3.1.0 [14 Mar 2023] + +@@ -1446,6 +1448,8 @@ OpenSSL 0.9.x + * Support for various new platforms + + <!-- Links --> ++[CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 ++[CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 + [CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 + [CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286 + [CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217 +From facfb1ab745646e97a1920977ae4a9965ea61d5c Mon Sep 17 00:00:00 2001 +From: Matt Caswell <matt@openssl.org> +Date: Tue, 7 Mar 2023 16:52:55 +0000 +Subject: [PATCH] Ensure that EXFLAG_INVALID_POLICY is checked even in leaf + certs + +Even though we check the leaf cert to confirm it is valid, we +later ignored the invalid flag and did not notice that the leaf +cert was bad. + +Fixes: CVE-2023-0465 + +Reviewed-by: Hugo Landau <hlandau@openssl.org> +Reviewed-by: Tomas Mraz <tomas@openssl.org> +(Merged from https://github.com/openssl/openssl/pull/20586) +--- + crypto/x509/x509_vfy.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c +index 9384f1da9bad..a0282c3ef121 100644 +--- crypto/x509/x509_vfy.c.orig ++++ crypto/x509/x509_vfy.c +@@ -1654,15 +1654,23 @@ static int check_policy(X509_STORE_CTX *ctx) + goto memerr; + /* Invalid or inconsistent extensions */ + if (ret == X509_PCY_TREE_INVALID) { +- int i; ++ int i, cbcalled = 0; + + /* Locate certificates with bad extensions and notify callback. */ +- for (i = 1; i < sk_X509_num(ctx->chain); i++) { ++ for (i = 0; i < sk_X509_num(ctx->chain); i++) { + X509 *x = sk_X509_value(ctx->chain, i); + ++ if ((x->ex_flags & EXFLAG_INVALID_POLICY) != 0) ++ cbcalled = 1; + CB_FAIL_IF((x->ex_flags & EXFLAG_INVALID_POLICY) != 0, + ctx, x, i, X509_V_ERR_INVALID_POLICY_EXTENSION); + } ++ if (!cbcalled) { ++ /* Should not be able to get here */ ++ ERR_raise(ERR_LIB_X509, ERR_R_INTERNAL_ERROR); ++ return 0; ++ } ++ /* The callback ignored the error so we return success */ + return 1; + } + if (ret == X509_PCY_TREE_FAILURE) { diff --git a/security/openssl31/files/patch-CVE-2023-0466 b/security/openssl31/files/patch-CVE-2023-0466 new file mode 100644 index 000000000000..c115bacd1089 --- /dev/null +++ b/security/openssl31/files/patch-CVE-2023-0466 @@ -0,0 +1,91 @@ +From fc814a30fc4f0bc54fcea7d9a7462f5457aab061 Mon Sep 17 00:00:00 2001 +From: Tomas Mraz <tomas@openssl.org> +Date: Tue, 21 Mar 2023 16:15:47 +0100 +Subject: [PATCH] Fix documentation of X509_VERIFY_PARAM_add0_policy() + +The function was incorrectly documented as enabling policy checking. + +Fixes: CVE-2023-0466 + +Reviewed-by: Paul Dale <pauli@openssl.org> +Reviewed-by: Matt Caswell <matt@openssl.org> +(Merged from https://github.com/openssl/openssl/pull/20562) +--- + CHANGES.md | 8 ++++++++ + NEWS.md | 2 ++ + doc/man3/X509_VERIFY_PARAM_set_flags.pod | 9 +++++++-- + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/CHANGES.md b/CHANGES.md +index 511886d213f9..dc701f0388de 100644 +--- CHANGES.md.orig ++++ CHANGES.md +@@ -24,6 +24,13 @@ OpenSSL 3.1 + + ### Changes between 3.1.0 and 3.1.1 [xx XXX xxxx] + ++ * Corrected documentation of X509_VERIFY_PARAM_add0_policy() to mention ++ that it does not enable policy checking. Thanks to David Benjamin for ++ discovering this issue. ++ ([CVE-2023-0466]) ++ ++ *Tomáš Mráz* ++ + * Fixed an issue where invalid certificate policies in leaf certificates are + silently ignored by OpenSSL and other certificate policy checks are skipped + for that certificate. A malicious CA could use this to deliberately assert +@@ -19699,6 +19706,7 @@ ndif + + <!-- Links --> + ++[CVE-2023-0466]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0466 + [CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 + [CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 + [CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 +diff --git a/NEWS.md b/NEWS.md +index 23f918f604ea..9477662c822d 100644 +--- NEWS.md.orig ++++ NEWS.md +@@ -21,6 +21,7 @@ OpenSSL 3.1 + + ### Major changes between OpenSSL 3.1.0 and OpenSSL 3.1.1 [under development] + ++ * Fixed documentation of X509_VERIFY_PARAM_add0_policy() ([CVE-2023-0466]) + * Fixed handling of invalid certificate policies in leaf certificates + ([CVE-2023-0465]) + * Limited the number of nodes created in a policy tree ([CVE-2023-0464]) +@@ -1448,6 +1449,7 @@ OpenSSL 0.9.x + * Support for various new platforms + + <!-- Links --> ++[CVE-2023-0466]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0466 + [CVE-2023-0465]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0465 + [CVE-2023-0464]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0464 + [CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401 +diff --git a/doc/man3/X509_VERIFY_PARAM_set_flags.pod b/doc/man3/X509_VERIFY_PARAM_set_flags.pod +index 20aea99b5b3a..fcbbfc4c3067 100644 +--- doc/man3/X509_VERIFY_PARAM_set_flags.pod.orig ++++ doc/man3/X509_VERIFY_PARAM_set_flags.pod +@@ -98,8 +98,9 @@ B<trust>. + X509_VERIFY_PARAM_set_time() sets the verification time in B<param> to + B<t>. Normally the current time is used. + +-X509_VERIFY_PARAM_add0_policy() enables policy checking (it is disabled +-by default) and adds B<policy> to the acceptable policy set. ++X509_VERIFY_PARAM_add0_policy() adds B<policy> to the acceptable policy set. ++Contrary to preexisting documentation of this function it does not enable ++policy checking. + + X509_VERIFY_PARAM_set1_policies() enables policy checking (it is disabled + by default) and sets the acceptable policy set to B<policies>. Any existing +@@ -400,6 +401,10 @@ The X509_VERIFY_PARAM_get_hostflags() function was added in OpenSSL 1.1.0i. + The X509_VERIFY_PARAM_get0_host(), X509_VERIFY_PARAM_get0_email(), + and X509_VERIFY_PARAM_get1_ip_asc() functions were added in OpenSSL 3.0. + ++The function X509_VERIFY_PARAM_add0_policy() was historically documented as ++enabling policy checking however the implementation has never done this. ++The documentation was changed to align with the implementation. ++ + =head1 COPYRIGHT + + Copyright 2009-2023 The OpenSSL Project Authors. All Rights Reserved.