Package: release.debian.org Severity: normal Tags: bookworm User: release.debian....@packages.debian.org Usertags: pu X-Debbugs-Cc: Debian Python Team <team+pyt...@tracker.debian.org>, secur...@debian.org
* CVE-2023-49083: NULL dereference when loading PKCS7 certificates (Closes: #1057108) * CVE-2024-26130: NULL dereference when PKCS#12 key and cert don't match (Closes: #1064778)
diffstat for python-cryptography-38.0.4 python-cryptography-38.0.4 changelog | 10 + patches/0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch | 48 +++++++ patches/0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch | 63 ++++++++++ patches/series | 2 4 files changed, 123 insertions(+) diff -Nru python-cryptography-38.0.4/debian/changelog python-cryptography-38.0.4/debian/changelog --- python-cryptography-38.0.4/debian/changelog 2023-02-28 07:36:13.000000000 +0200 +++ python-cryptography-38.0.4/debian/changelog 2024-10-16 19:53:04.000000000 +0300 @@ -1,3 +1,13 @@ +python-cryptography (38.0.4-3+deb12u1) bookworm; urgency=medium + + * Non-maintainer upload. + * CVE-2023-49083: NULL dereference when loading PKCS7 certificates + (Closes: #1057108) + * CVE-2024-26130: NULL dereference when PKCS#12 key and cert don't match + (Closes: #1064778) + + -- Adrian Bunk <b...@debian.org> Wed, 16 Oct 2024 19:53:04 +0300 + python-cryptography (38.0.4-3) unstable; urgency=medium [ Salvatore Bonaccorso ] diff -Nru python-cryptography-38.0.4/debian/patches/0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch python-cryptography-38.0.4/debian/patches/0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch --- python-cryptography-38.0.4/debian/patches/0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch 1970-01-01 02:00:00.000000000 +0200 +++ python-cryptography-38.0.4/debian/patches/0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch 2024-10-16 19:53:04.000000000 +0300 @@ -0,0 +1,48 @@ +From 8378c1ff784a9601966b88f1c5587d50120038c3 Mon Sep 17 00:00:00 2001 +From: Alex Gaynor <alex.gay...@gmail.com> +Date: Mon, 27 Nov 2023 14:35:35 -0500 +Subject: Fixed crash when loading a PKCS#7 bundle with no certificates (#9926) + +--- + src/cryptography/hazmat/backends/openssl/backend.py | 5 ++++- + tests/hazmat/primitives/test_pkcs7.py | 6 ++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py +index f8776b732..45a644cf6 100644 +--- a/src/cryptography/hazmat/backends/openssl/backend.py ++++ b/src/cryptography/hazmat/backends/openssl/backend.py +@@ -2454,9 +2454,12 @@ class Backend: + _Reasons.UNSUPPORTED_SERIALIZATION, + ) + ++ certs: list[x509.Certificate] = [] ++ if p7.d.sign == self._ffi.NULL: ++ return certs ++ + sk_x509 = p7.d.sign.cert + num = self._lib.sk_X509_num(sk_x509) +- certs = [] + for i in range(num): + x509 = self._lib.sk_X509_value(sk_x509, i) + self.openssl_assert(x509 != self._ffi.NULL) +diff --git a/tests/hazmat/primitives/test_pkcs7.py b/tests/hazmat/primitives/test_pkcs7.py +index 138bc0f3b..559e1f274 100644 +--- a/tests/hazmat/primitives/test_pkcs7.py ++++ b/tests/hazmat/primitives/test_pkcs7.py +@@ -89,6 +89,12 @@ class TestPKCS7Loading: + mode="rb", + ) + ++ def test_load_pkcs7_empty_certificates(self, backend): ++ der = b"\x30\x0B\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x07\x02" ++ ++ certificates = pkcs7.load_der_pkcs7_certificates(der) ++ assert certificates == [] ++ + + # We have no public verification API and won't be adding one until we get + # some requirements from users so this function exists to give us basic +-- +2.30.2 + diff -Nru python-cryptography-38.0.4/debian/patches/0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch python-cryptography-38.0.4/debian/patches/0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch --- python-cryptography-38.0.4/debian/patches/0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch 1970-01-01 02:00:00.000000000 +0200 +++ python-cryptography-38.0.4/debian/patches/0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch 2024-10-16 19:53:04.000000000 +0300 @@ -0,0 +1,63 @@ +From 5cf016c3ae8b4e60f564e6cac67d43e243034345 Mon Sep 17 00:00:00 2001 +From: Alex Gaynor <alex.gay...@gmail.com> +Date: Mon, 19 Feb 2024 12:09:10 -0500 +Subject: Fixes #10422 -- don't crash when a PKCS#12 key and cert don't match + (#10423) (#10425) + +--- + .../hazmat/backends/openssl/backend.py | 9 +++++++++ + tests/hazmat/primitives/test_pkcs12.py | 18 ++++++++++++++++++ + 2 files changed, 27 insertions(+) + +diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py +index 45a644cf6..0ae987bd3 100644 +--- a/src/cryptography/hazmat/backends/openssl/backend.py ++++ b/src/cryptography/hazmat/backends/openssl/backend.py +@@ -2378,6 +2378,15 @@ class Backend: + mac_iter, + 0, + ) ++ if p12 == self._ffi.NULL: ++ errors = self._consume_errors() ++ raise ValueError( ++ ( ++ "Failed to create PKCS12 (does the key match the " ++ "certificate?)" ++ ), ++ errors, ++ ) + + if ( + self._lib.Cryptography_HAS_PKCS12_SET_MAC +diff --git a/tests/hazmat/primitives/test_pkcs12.py b/tests/hazmat/primitives/test_pkcs12.py +index c9ef57e66..3de92f82a 100644 +--- a/tests/hazmat/primitives/test_pkcs12.py ++++ b/tests/hazmat/primitives/test_pkcs12.py +@@ -682,6 +682,24 @@ class TestPKCS12Creation: + b"name", cakey, cacert, [], algorithm + ) + ++ @pytest.mark.supported( ++ only_if=lambda backend: backend._lib.Cryptography_HAS_PKCS12_SET_MAC, ++ skip_message="Requires OpenSSL with PKCS12_set_mac", ++ ) ++ def test_set_mac_key_certificate_mismatch(self, backend): ++ cacert, _ = _load_ca(backend) ++ key = ec.generate_private_key(ec.SECP256R1()) ++ encryption = ( ++ serialization.PrivateFormat.PKCS12.encryption_builder() ++ .hmac_hash(hashes.SHA256()) ++ .build(b"password") ++ ) ++ ++ with pytest.raises(ValueError): ++ serialize_key_and_certificates( ++ b"name", key, cacert, [], encryption ++ ) ++ + + @pytest.mark.skip_fips( + reason="PKCS12 unsupported in FIPS mode. So much bad crypto in it." +-- +2.30.2 + diff -Nru python-cryptography-38.0.4/debian/patches/series python-cryptography-38.0.4/debian/patches/series --- python-cryptography-38.0.4/debian/patches/series 2023-02-28 07:36:13.000000000 +0200 +++ python-cryptography-38.0.4/debian/patches/series 2024-10-16 19:53:04.000000000 +0300 @@ -6,3 +6,5 @@ ease-chrono-dependency-from-0.4.22-to-0.4.patch drop-cffi-dep.patch Don-t-allow-update_into-to-mutate-immutable-objects-.patch +0001-Fixed-crash-when-loading-a-PKCS-7-bundle-with-no-cer.patch +0002-Fixes-10422-don-t-crash-when-a-PKCS-12-key-and-cert-.patch