Accepting request 1144625 from security:tls
- Add migration script to move old files (bsc#1219562) /etc/ssl/engines.d/* -> /etc/ssl/engines1.1.d.rpmsave /etc/ssl/engdef.d/* -> /etc/ssl/engdef1.1.d.rpmsave They will be later restored by openssl-1_1 package to engines1.1.d and engdef1.1.d - Security fix: [bsc#1219243, CVE-2024-0727] * Add NULL checks where ContentInfo data can be NULL * Add openssl-CVE-2024-0727.patch OBS-URL: https://build.opensuse.org/request/show/1144625 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/openssl-3?expand=0&rev=20
This commit is contained in:
commit
5ddfcb3ad7
@ -1,3 +1,19 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 5 16:29:26 UTC 2024 - Otto Hollmann <otto.hollmann@suse.com>
|
||||||
|
|
||||||
|
- Add migration script to move old files (bsc#1219562)
|
||||||
|
/etc/ssl/engines.d/* -> /etc/ssl/engines1.1.d.rpmsave
|
||||||
|
/etc/ssl/engdef.d/* -> /etc/ssl/engdef1.1.d.rpmsave
|
||||||
|
They will be later restored by openssl-1_1 package
|
||||||
|
to engines1.1.d and engdef1.1.d
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 30 14:15:25 UTC 2024 - Otto Hollmann <otto.hollmann@suse.com>
|
||||||
|
|
||||||
|
- Security fix: [bsc#1219243, CVE-2024-0727]
|
||||||
|
* Add NULL checks where ContentInfo data can be NULL
|
||||||
|
* Add openssl-CVE-2024-0727.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jan 29 15:17:22 UTC 2024 - Pedro Monreal <pmonreal@suse.com>
|
Mon Jan 29 15:17:22 UTC 2024 - Pedro Monreal <pmonreal@suse.com>
|
||||||
|
|
||||||
|
@ -81,6 +81,8 @@ Patch24: openssl-FIPS-embed-hmac.patch
|
|||||||
Patch25: openssl-CVE-2023-6237.patch
|
Patch25: openssl-CVE-2023-6237.patch
|
||||||
# PATCH-FIX-SUSE bsc#1194187, bsc#1207472, bsc#1218933 - Add engines section in openssl.cnf
|
# PATCH-FIX-SUSE bsc#1194187, bsc#1207472, bsc#1218933 - Add engines section in openssl.cnf
|
||||||
Patch26: openssl-3-use-include-directive.patch
|
Patch26: openssl-3-use-include-directive.patch
|
||||||
|
# PATCH-FIX-UPSTREAM: bsc#1219243 CVE-2024-0727: denial of service via null dereference
|
||||||
|
Patch27: openssl-CVE-2024-0727.patch
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: pkgconfig(zlib)
|
BuildRequires: pkgconfig(zlib)
|
||||||
Requires: libopenssl3 = %{version}-%{release}
|
Requires: libopenssl3 = %{version}-%{release}
|
||||||
@ -314,6 +316,19 @@ if [ "$1" -gt 1 ] ; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
%pre
|
||||||
|
# Migrate old engines.d to engines1.1.d.rpmsave
|
||||||
|
if [ ! -L %{ssletcdir}/engines.d ] && [ -d %{ssletcdir}/engines.d ]; then
|
||||||
|
mkdir %{ssletcdir}/engines1.1.d.rpmsave ||:
|
||||||
|
mv %{ssletcdir}/engines.d %{ssletcdir}/engines1.1.d.rpmsave ||:
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Migrate old engdef.d to engdef1.1.d.rpmsave
|
||||||
|
if [ ! -L %{ssletcdir}/engdef.d ] && [ -d %{ssletcdir}/engdef.d ]; then
|
||||||
|
mkdir %{ssletcdir}/engdef1.1.d.rpmsave ||:
|
||||||
|
mv %{ssletcdir}/engdef.d %{ssletcdir}/engdef1.1.d.rpmsave ||:
|
||||||
|
fi
|
||||||
|
|
||||||
%post -n libopenssl3 -p /sbin/ldconfig
|
%post -n libopenssl3 -p /sbin/ldconfig
|
||||||
%postun -n libopenssl3 -p /sbin/ldconfig
|
%postun -n libopenssl3 -p /sbin/ldconfig
|
||||||
|
|
||||||
|
120
openssl-CVE-2024-0727.patch
Normal file
120
openssl-CVE-2024-0727.patch
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
From 09df4395b5071217b76dc7d3d2e630eb8c5a79c2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Matt Caswell <matt@openssl.org>
|
||||||
|
Date: Fri, 19 Jan 2024 11:28:58 +0000
|
||||||
|
Subject: [PATCH] Add NULL checks where ContentInfo data can be NULL
|
||||||
|
|
||||||
|
PKCS12 structures contain PKCS7 ContentInfo fields. These fields are
|
||||||
|
optional and can be NULL even if the "type" is a valid value. OpenSSL
|
||||||
|
was not properly accounting for this and a NULL dereference can occur
|
||||||
|
causing a crash.
|
||||||
|
|
||||||
|
CVE-2024-0727
|
||||||
|
|
||||||
|
Reviewed-by: Tomas Mraz <tomas@openssl.org>
|
||||||
|
Reviewed-by: Hugo Landau <hlandau@openssl.org>
|
||||||
|
Reviewed-by: Neil Horman <nhorman@openssl.org>
|
||||||
|
(Merged from https://github.com/openssl/openssl/pull/23362)
|
||||||
|
|
||||||
|
(cherry picked from commit d135eeab8a5dbf72b3da5240bab9ddb7678dbd2c)
|
||||||
|
---
|
||||||
|
crypto/pkcs12/p12_add.c | 18 ++++++++++++++++++
|
||||||
|
crypto/pkcs12/p12_mutl.c | 5 +++++
|
||||||
|
crypto/pkcs12/p12_npas.c | 5 +++--
|
||||||
|
crypto/pkcs7/pk7_mime.c | 7 +++++--
|
||||||
|
4 files changed, 31 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/crypto/pkcs12/p12_add.c b/crypto/pkcs12/p12_add.c
|
||||||
|
index 6fd4184af5a52..80ce31b3bca66 100644
|
||||||
|
--- a/crypto/pkcs12/p12_add.c
|
||||||
|
+++ b/crypto/pkcs12/p12_add.c
|
||||||
|
@@ -78,6 +78,12 @@ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7data(PKCS7 *p7)
|
||||||
|
ERR_raise(ERR_LIB_PKCS12, PKCS12_R_CONTENT_TYPE_NOT_DATA);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (p7->d.data == NULL) {
|
||||||
|
+ ERR_raise(ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return ASN1_item_unpack(p7->d.data, ASN1_ITEM_rptr(PKCS12_SAFEBAGS));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -150,6 +156,12 @@ STACK_OF(PKCS12_SAFEBAG) *PKCS12_unpack_p7encdata(PKCS7 *p7, const char *pass,
|
||||||
|
{
|
||||||
|
if (!PKCS7_type_is_encrypted(p7))
|
||||||
|
return NULL;
|
||||||
|
+
|
||||||
|
+ if (p7->d.encrypted == NULL) {
|
||||||
|
+ ERR_raise(ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return PKCS12_item_decrypt_d2i_ex(p7->d.encrypted->enc_data->algorithm,
|
||||||
|
ASN1_ITEM_rptr(PKCS12_SAFEBAGS),
|
||||||
|
pass, passlen,
|
||||||
|
@@ -188,6 +200,12 @@ STACK_OF(PKCS7) *PKCS12_unpack_authsafes(const PKCS12 *p12)
|
||||||
|
ERR_raise(ERR_LIB_PKCS12, PKCS12_R_CONTENT_TYPE_NOT_DATA);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (p12->authsafes->d.data == NULL) {
|
||||||
|
+ ERR_raise(ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
p7s = ASN1_item_unpack(p12->authsafes->d.data,
|
||||||
|
ASN1_ITEM_rptr(PKCS12_AUTHSAFES));
|
||||||
|
if (p7s != NULL) {
|
||||||
|
diff --git a/crypto/pkcs12/p12_mutl.c b/crypto/pkcs12/p12_mutl.c
|
||||||
|
index 67a885a45f89e..68ff54d0e90ee 100644
|
||||||
|
--- a/crypto/pkcs12/p12_mutl.c
|
||||||
|
+++ b/crypto/pkcs12/p12_mutl.c
|
||||||
|
@@ -98,6 +98,11 @@ static int pkcs12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (p12->authsafes->d.data == NULL) {
|
||||||
|
+ ERR_raise(ERR_LIB_PKCS12, PKCS12_R_DECODE_ERROR);
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
salt = p12->mac->salt->data;
|
||||||
|
saltlen = p12->mac->salt->length;
|
||||||
|
if (p12->mac->iter == NULL)
|
||||||
|
diff --git a/crypto/pkcs12/p12_npas.c b/crypto/pkcs12/p12_npas.c
|
||||||
|
index 62230bc6187ff..1e5b5495991a4 100644
|
||||||
|
--- a/crypto/pkcs12/p12_npas.c
|
||||||
|
+++ b/crypto/pkcs12/p12_npas.c
|
||||||
|
@@ -77,8 +77,9 @@ static int newpass_p12(PKCS12 *p12, const char *oldpass, const char *newpass)
|
||||||
|
bags = PKCS12_unpack_p7data(p7);
|
||||||
|
} else if (bagnid == NID_pkcs7_encrypted) {
|
||||||
|
bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);
|
||||||
|
- if (!alg_get(p7->d.encrypted->enc_data->algorithm,
|
||||||
|
- &pbe_nid, &pbe_iter, &pbe_saltlen))
|
||||||
|
+ if (p7->d.encrypted == NULL
|
||||||
|
+ || !alg_get(p7->d.encrypted->enc_data->algorithm,
|
||||||
|
+ &pbe_nid, &pbe_iter, &pbe_saltlen))
|
||||||
|
goto err;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
diff --git a/crypto/pkcs7/pk7_mime.c b/crypto/pkcs7/pk7_mime.c
|
||||||
|
index 49a0da5f819c4..8228315eeaa3a 100644
|
||||||
|
--- a/crypto/pkcs7/pk7_mime.c
|
||||||
|
+++ b/crypto/pkcs7/pk7_mime.c
|
||||||
|
@@ -33,10 +33,13 @@ int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
|
||||||
|
int ctype_nid = OBJ_obj2nid(p7->type);
|
||||||
|
const PKCS7_CTX *ctx = ossl_pkcs7_get0_ctx(p7);
|
||||||
|
|
||||||
|
- if (ctype_nid == NID_pkcs7_signed)
|
||||||
|
+ if (ctype_nid == NID_pkcs7_signed) {
|
||||||
|
+ if (p7->d.sign == NULL)
|
||||||
|
+ return 0;
|
||||||
|
mdalgs = p7->d.sign->md_algs;
|
||||||
|
- else
|
||||||
|
+ } else {
|
||||||
|
mdalgs = NULL;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
flags ^= SMIME_OLDMIME;
|
||||||
|
|
@ -25,7 +25,7 @@ Index: openssl-3.1.4/apps/fipsinstall.c
|
|||||||
EVP_MAC *mac = NULL;
|
EVP_MAC *mac = NULL;
|
||||||
CONF *conf = NULL;
|
CONF *conf = NULL;
|
||||||
|
|
||||||
+ BIO_printf(bio_err, "This command is not enabled in the Red Hat Enterprise Linux OpenSSL build, please consult Red Hat documentation to learn how to enable FIPS mode\n");
|
+ BIO_printf(bio_err, "This command is not enabled in SUSE/openSUSE OpenSSL build, please see 'man 8 fips-mode-setup' to learn how to enable FIPS mode\n");
|
||||||
+ return 1;
|
+ return 1;
|
||||||
+
|
+
|
||||||
if ((opts = sk_OPENSSL_STRING_new_null()) == NULL)
|
if ((opts = sk_OPENSSL_STRING_new_null()) == NULL)
|
||||||
@ -309,8 +309,8 @@ Index: openssl-3.1.4/doc/man1/openssl-fipsinstall.pod.in
|
|||||||
-L<OSSL_PROVIDER-FIPS(7)>,
|
-L<OSSL_PROVIDER-FIPS(7)>,
|
||||||
-L<EVP_MAC(3)>
|
-L<EVP_MAC(3)>
|
||||||
+This command is disabled.
|
+This command is disabled.
|
||||||
+Please consult Red Hat Enterprise Linux documentation to learn how to correctly
|
+Please consult the SUSE/openSUSE documentation to learn how to correctly
|
||||||
+enable FIPS mode on Red Hat Enterprise
|
+enable FIPS mode.
|
||||||
|
|
||||||
=head1 COPYRIGHT
|
=head1 COPYRIGHT
|
||||||
|
|
||||||
@ -449,10 +449,10 @@ Index: openssl-3.1.4/doc/man5/fips_config.pod
|
|||||||
-
|
-
|
||||||
-L<config(5)>
|
-L<config(5)>
|
||||||
-L<openssl-fipsinstall(1)>
|
-L<openssl-fipsinstall(1)>
|
||||||
+This command is disabled in Red Hat Enterprise Linux. The FIPS provider is
|
+This command is disabled in SUSE/openSUSE. The FIPS provider is
|
||||||
+automatically loaded when the system is booted in FIPS mode, or when the
|
+automatically loaded when the system is booted in FIPS mode, or when the
|
||||||
+environment variable B<OPENSSL_FORCE_FIPS_MODE> is set. See the documentation
|
+environment variable B<OPENSSL_FORCE_FIPS_MODE> is set.
|
||||||
+for more information.
|
+See the documentation for more information.
|
||||||
|
|
||||||
=head1 HISTORY
|
=head1 HISTORY
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user