GeezerVison is showing github.com — deps: upgrade openssl sources to openssl-3.5.4 · nodejs/node@ddbc1aa
File treeExpand file treeCollapse file tree Open diff view settings Some content is hiddenLarge Commits have some content hidden by default. Use the searchbox below for content that may be hidden. Dismiss bannerExpand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/CHANGES.md +69Lines changed: 69 additions & 0 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -28,6 +28,72 @@ OpenSSL Releases | 28 | 28 | OpenSSL 3.5 | 29 | 29 | ----------- | 30 | 30 |
| | 31 | +### Changes between 3.5.3 and 3.5.4 [30 Sep 2025] | | 32 | + | | 33 | + * Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap | | 34 | + | | 35 | + Issue summary: An application trying to decrypt CMS messages encrypted using | | 36 | + password based encryption can trigger an out-of-bounds read and write. | | 37 | + | | 38 | + Impact summary: This out-of-bounds read may trigger a crash which leads to | | 39 | + Denial of Service for an application. The out-of-bounds write can cause | | 40 | + a memory corruption which can have various consequences including | | 41 | + a Denial of Service or Execution of attacker-supplied code. | | 42 | + | | 43 | + The issue was reported by Stanislav Fort (Aisle Research). | | 44 | + | | 45 | + ([CVE-2025-9230]) | | 46 | + | | 47 | + *Viktor Dukhovni* | | 48 | + | | 49 | + * Fix Timing side-channel in SM2 algorithm on 64 bit ARM | | 50 | + | | 51 | + Issue summary: A timing side-channel which could potentially allow remote | | 52 | + recovery of the private key exists in the SM2 algorithm implementation on | | 53 | + 64 bit ARM platforms. | | 54 | + | | 55 | + Impact summary: A timing side-channel in SM2 signature computations on | | 56 | + 64 bit ARM platforms could allow recovering the private key by an attacker. | | 57 | + | | 58 | + The issue was reported by Stanislav Fort (Aisle Research). | | 59 | + | | 60 | + ([CVE-2025-9231]) | | 61 | + | | 62 | + *Stanislav Fort and Tomáš Mráz* | | 63 | + | | 64 | + * Fix Out-of-bounds read in HTTP client no_proxy handling | | 65 | + | | 66 | + Issue summary: An application using the OpenSSL HTTP client API functions | | 67 | + may trigger an out-of-bounds read if the "no_proxy" environment variable is | | 68 | + set and the host portion of the authority component of the HTTP URL is an | | 69 | + IPv6 address. | | 70 | + | | 71 | + Impact summary: An out-of-bounds read can trigger a crash which leads to | | 72 | + Denial of Service for an application. | | 73 | + | | 74 | + The issue was reported by Stanislav Fort (Aisle Research). | | 75 | + | | 76 | + ([CVE-2025-9232]) | | 77 | + | | 78 | + *Stanislav Fort* | | 79 | + | | 80 | + * The FIPS provider no longer performs a PCT on key import for ECX keys | | 81 | + (that was introduced in 3.5.2), following the latest update | | 82 | + on that requirement in FIPS 140-3 IG 10.3.A additional comment 1. | | 83 | + | | 84 | + *Eugene Syromiatnikov* | | 85 | + | | 86 | + * Fixed the length of the ASN.1 sequence for the SM3 digests of RSA-encrypted | | 87 | + signatures. | | 88 | + | | 89 | + *Xiao Lou Dong Feng* | | 90 | + | | 91 | + * Reverted the synthesised `OPENSSL_VERSION_NUMBER` change for the release | | 92 | + builds, as it broke some exiting applications that relied on the previous | | 93 | + 3.x semantics, as documented in `OpenSSL_version(3)`. | | 94 | + | | 95 | + *Richard Levitte* | | 96 | + | 31 | 97 | ### Changes between 3.5.2 and 3.5.3 [16 Sep 2025] | 32 | 98 |
| 33 | 99 | * Avoided a potential race condition introduced in 3.5.1, where | @@ -21284,6 +21350,9 @@ ndif | 21284 | 21350 |
| 21285 | 21351 | <!-- Links --> | 21286 | 21352 |
| | 21353 | +[CVE-2025-9232]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9232 | | 21354 | +[CVE-2025-9231]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9231 | | 21355 | +[CVE-2025-9230]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9230 | 21287 | 21356 | [CVE-2025-4575]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-4575 | 21288 | 21357 | [CVE-2024-13176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-13176 | 21289 | 21358 | [CVE-2024-9143]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-9143 | |
Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/NEWS.md +35-5Lines changed: 35 additions & 5 deletions - Display the source diff
- Display the rich diff
| Original file line number | Diff line number | Diff line change |
|---|
@@ -23,19 +23,46 @@ OpenSSL Releases | 23 | 23 | OpenSSL 3.5 | 24 | 24 | ----------- | 25 | 25 |
| | 26 | +### Major changes between OpenSSL 3.5.3 and OpenSSL 3.5.4 [30 Sep 2025] | | 27 | + | | 28 | +OpenSSL 3.5.4 is a security patch release. The most severe CVE fixed in this | | 29 | +release is Moderate. | | 30 | + | | 31 | +This release incorporates the following bug fixes and mitigations: | | 32 | + | | 33 | + * Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap. | | 34 | + ([CVE-2025-9230]) | | 35 | + | | 36 | + * Fix Timing side-channel in SM2 algorithm on 64 bit ARM. | | 37 | + ([CVE-2025-9231]) | | 38 | + | | 39 | + * Fix Out-of-bounds read in HTTP client no_proxy handling. | | 40 | + ([CVE-2025-9232]) | | 41 | + | | 42 | + * Reverted the synthesised `OPENSSL_VERSION_NUMBER` change for the release | | 43 | + builds, as it broke some exiting applications that relied on the previous | | 44 | + 3.x semantics, as documented in `OpenSSL_version(3)`. | | 45 | + | 26 | 46 | ### Major changes between OpenSSL 3.5.2 and OpenSSL 3.5.3 [16 Sep 2025] | 27 | 47 |
| 28 | | - * Added FIPS 140-3 PCT on DH key generation. | | 48 | +OpenSSL 3.5.3 is a bug fix release. | | 49 | + | | 50 | +This release incorporates the following bug fixes and mitigations: | 29 | 51 |
| 30 | | - *Nikola Pajkovsky* | | 52 | + * Added FIPS 140-3 PCT on DH key generation. | 31 | 53 |
| 32 | 54 | * Fixed the synthesised `OPENSSL_VERSION_NUMBER`. | 33 | 55 |
| 34 | | - *Richard Levitte* | | 56 | + * Removed PCT on key import in the FIPS provider as it is not required by | | 57 | + the standard. | 35 | 58 |
| 36 | 59 | ### Major changes between OpenSSL 3.5.1 and OpenSSL 3.5.2 [5 Aug 2025] | 37 | 60 |
| 38 | | - * none | | 61 | +OpenSSL 3.5.2 is a bug fix release. | | 62 | + | | 63 | +This release incorporates the following bug fixes and mitigations: | | 64 | + | | 65 | + * The FIPS provider now performs a PCT on key import for RSA, EC and ECX. | 39 | 66 |
| 40 | 67 | ### Major changes between OpenSSL 3.5.0 and OpenSSL 3.5.1 [1 Jul 2025] | 41 | 68 |
| @@ -45,7 +72,7 @@ release is Low. | 45 | 72 | This release incorporates the following bug fixes and mitigations: | 46 | 73 |
| 47 | 74 | * Fix x509 application adds trusted use instead of rejected use. | 48 | | - ([CVE-2025-4575]) | | 75 | + ([CVE-2025-4575]) | 49 | 76 |
| 50 | 77 | ### Major changes between OpenSSL 3.4 and OpenSSL 3.5.0 [8 Apr 2025] | 51 | 78 |
| @@ -1913,6 +1940,9 @@ OpenSSL 0.9.x | 1913 | 1940 | * Support for various new platforms | 1914 | 1941 |
| 1915 | 1942 | <!-- Links --> | | 1943 | +[CVE-2025-9232]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9232 | | 1944 | +[CVE-2025-9231]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9231 | | 1945 | +[CVE-2025-9230]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-9230 | 1916 | 1946 | [CVE-2025-4575]: https://www.openssl.org/news/vulnerabilities.html#CVE-2025-4575 | 1917 | 1947 | [CVE-2024-13176]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-13176 | 1918 | 1948 | [CVE-2024-9143]: https://www.openssl.org/news/vulnerabilities.html#CVE-2024-9143 | |
Collapse file Copy file name to clipboard +2-2Lines changed: 2 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 1 | 1 | MAJOR=3 | 2 | 2 | MINOR=5 | 3 | | -PATCH=3 | | 3 | +PATCH=4 | 4 | 4 | PRE_RELEASE_TAG= | 5 | 5 | BUILD_METADATA= | 6 | | -RELEASE_DATE="16 Sep 2025" | | 6 | +RELEASE_DATE="30 Sep 2025" | 7 | 7 | SHLIB_VERSION=3 |
Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/apps/storeutl.c +12-4Lines changed: 12 additions & 4 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -331,14 +331,22 @@ int storeutl_main(int argc, char *argv[]) | 331 | 331 | static int indent_printf(int indent, BIO *bio, const char *format, ...) | 332 | 332 | { | 333 | 333 | va_list args; | 334 | | - int ret; | | 334 | + int ret, vret; | | 335 | + | | 336 | + ret = BIO_printf(bio, "%*s", indent, ""); | | 337 | + if (ret < 0) | | 338 | + return ret; | 335 | 339 |
| 336 | 340 | va_start(args, format); | | 341 | + vret = BIO_vprintf(bio, format, args); | | 342 | + va_end(args); | 337 | 343 |
| 338 | | - ret = BIO_printf(bio, "%*s", indent, "") + BIO_vprintf(bio, format, args); | | 344 | + if (vret < 0) | | 345 | + return vret; | | 346 | + if (vret > INT_MAX - ret) | | 347 | + return INT_MAX; | 339 | 348 |
| 340 | | - va_end(args); | 341 | | - return ret; | | 349 | + return ret + vret; | 342 | 350 | } | 343 | 351 |
| 344 | 352 | static int process(const char *uri, const UI_METHOD *uimeth, PW_CB_DATA *uidata, | |
Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/crypto/bio/bss_file.c +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -287,7 +287,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr) | 287 | 287 | if (fp == NULL) { | 288 | 288 | ERR_raise_data(ERR_LIB_SYS, get_last_sys_error(), | 289 | 289 | "calling fopen(%s, %s)", | 290 | | - ptr, p); | | 290 | + (const char *)ptr, p); | 291 | 291 | ERR_raise(ERR_LIB_BIO, ERR_R_SYS_LIB); | 292 | 292 | ret = 0; | 293 | 293 | break; | |
Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/crypto/cms/cms_pwri.c +1-1Lines changed: 1 addition & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -242,7 +242,7 @@ static int kek_unwrap_key(unsigned char *out, size_t *outlen, | 242 | 242 | /* Check byte failure */ | 243 | 243 | goto err; | 244 | 244 | } | 245 | | - if (inlen < (size_t)(tmp[0] - 4)) { | | 245 | + if (inlen < 4 + (size_t)tmp[0]) { | 246 | 246 | /* Invalid length value */ | 247 | 247 | goto err; | 248 | 248 | } | |
Collapse file Copy file name to clipboardExpand all lines: deps/openssl/openssl/crypto/ec/ecp_sm2p256.c +4-99Lines changed: 4 additions & 99 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 1 | 1 | /* | 2 | | - * Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. | | 2 | + * Copyright 2023-2025 The OpenSSL Project Authors. All Rights Reserved. | 3 | 3 | * | 4 | 4 | * Licensed under the Apache License 2.0 (the "License"). You may not use | 5 | 5 | * this file except in compliance with the License. You can obtain a copy | @@ -56,10 +56,6 @@ ALIGN32 static const BN_ULONG def_p[P256_LIMBS] = { | 56 | 56 | 0xffffffffffffffff, 0xffffffff00000000, | 57 | 57 | 0xffffffffffffffff, 0xfffffffeffffffff | 58 | 58 | }; | 59 | | -ALIGN32 static const BN_ULONG def_ord[P256_LIMBS] = { | 60 | | - 0x53bbf40939d54123, 0x7203df6b21c6052b, | 61 | | - 0xffffffffffffffff, 0xfffffffeffffffff | 62 | | -}; | 63 | 59 |
| 64 | 60 | ALIGN32 static const BN_ULONG ONE[P256_LIMBS] = {1, 0, 0, 0}; | 65 | 61 |
| @@ -177,13 +173,6 @@ static ossl_inline void ecp_sm2p256_mod_inverse(BN_ULONG* out, | 177 | 173 | BN_MOD_INV(out, in, ecp_sm2p256_div_by_2, ecp_sm2p256_sub, def_p); | 178 | 174 | } | 179 | 175 |
| 180 | | -/* Modular inverse mod order |out| = |in|^(-1) % |ord|. */ | 181 | | -static ossl_inline void ecp_sm2p256_mod_ord_inverse(BN_ULONG* out, | 182 | | - const BN_ULONG* in) { | 183 | | - BN_MOD_INV(out, in, ecp_sm2p256_div_by_2_mod_ord, ecp_sm2p256_sub_mod_ord, | 184 | | - def_ord); | 185 | | -} | 186 | | - | 187 | 176 | /* Point double: R <- P + P */ | 188 | 177 | static void ecp_sm2p256_point_double(P256_POINT *R, const P256_POINT *P) | 189 | 178 | { | @@ -454,52 +443,6 @@ static int ecp_sm2p256_is_affine_G(const EC_POINT *generator) | 454 | 443 | } | 455 | 444 | #endif | 456 | 445 |
| 457 | | -/* | 458 | | - * Convert Jacobian coordinate point into affine coordinate (x,y) | 459 | | - */ | 460 | | -static int ecp_sm2p256_get_affine(const EC_GROUP *group, | 461 | | - const EC_POINT *point, | 462 | | - BIGNUM *x, BIGNUM *y, BN_CTX *ctx) | 463 | | -{ | 464 | | - ALIGN32 BN_ULONG z_inv2[P256_LIMBS] = {0}; | 465 | | - ALIGN32 BN_ULONG z_inv3[P256_LIMBS] = {0}; | 466 | | - ALIGN32 BN_ULONG x_aff[P256_LIMBS] = {0}; | 467 | | - ALIGN32 BN_ULONG y_aff[P256_LIMBS] = {0}; | 468 | | - ALIGN32 BN_ULONG point_x[P256_LIMBS] = {0}; | 469 | | - ALIGN32 BN_ULONG point_y[P256_LIMBS] = {0}; | 470 | | - ALIGN32 BN_ULONG point_z[P256_LIMBS] = {0}; | 471 | | - | 472 | | - if (EC_POINT_is_at_infinity(group, point)) { | 473 | | - ECerr(ERR_LIB_EC, EC_R_POINT_AT_INFINITY); | 474 | | - return 0; | 475 | | - } | 476 | | - | 477 | | - if (ecp_sm2p256_bignum_field_elem(point_x, point->X) <= 0 | 478 | | - || ecp_sm2p256_bignum_field_elem(point_y, point->Y) <= 0 | 479 | | - || ecp_sm2p256_bignum_field_elem(point_z, point->Z) <= 0) { | 480 | | - ECerr(ERR_LIB_EC, EC_R_COORDINATES_OUT_OF_RANGE); | 481 | | - return 0; | 482 | | - } | 483 | | - | 484 | | - ecp_sm2p256_mod_inverse(z_inv3, point_z); | 485 | | - ecp_sm2p256_sqr(z_inv2, z_inv3); | 486 | | - | 487 | | - if (x != NULL) { | 488 | | - ecp_sm2p256_mul(x_aff, point_x, z_inv2); | 489 | | - if (!bn_set_words(x, x_aff, P256_LIMBS)) | 490 | | - return 0; | 491 | | - } | 492 | | - | 493 | | - if (y != NULL) { | 494 | | - ecp_sm2p256_mul(z_inv3, z_inv3, z_inv2); | 495 | | - ecp_sm2p256_mul(y_aff, point_y, z_inv3); | 496 | | - if (!bn_set_words(y, y_aff, P256_LIMBS)) | 497 | | - return 0; | 498 | | - } | 499 | | - | 500 | | - return 1; | 501 | | -} | 502 | | - | 503 | 446 | /* r = sum(scalar[i]*point[i]) */ | 504 | 447 | static int ecp_sm2p256_windowed_mul(const EC_GROUP *group, | 505 | 448 | P256_POINT *r, | @@ -689,44 +632,6 @@ static int ecp_sm2p256_field_sqr(const EC_GROUP *group, BIGNUM *r, | 689 | 632 | return 1; | 690 | 633 | } | 691 | 634 |
| 692 | | -static int ecp_sm2p256_inv_mod_ord(const EC_GROUP *group, BIGNUM *r, | 693 | | - const BIGNUM *x, BN_CTX *ctx) | 694 | | -{ | 695 | | - int ret = 0; | 696 | | - ALIGN32 BN_ULONG t[P256_LIMBS] = {0}; | 697 | | - ALIGN32 BN_ULONG out[P256_LIMBS] = {0}; | 698 | | - | 699 | | - if (bn_wexpand(r, P256_LIMBS) == NULL) { | 700 | | - ECerr(ERR_LIB_EC, ERR_R_BN_LIB); | 701 | | - goto err; | 702 | | - } | 703 | | - | 704 | | - if ((BN_num_bits(x) > 256) || BN_is_negative(x)) { | 705 | | - BIGNUM *tmp; | 706 | | - | 707 | | - if ((tmp = BN_CTX_get(ctx)) == NULL | 708 | | - || !BN_nnmod(tmp, x, group->order, ctx)) { | 709 | | - ECerr(ERR_LIB_EC, ERR_R_BN_LIB); | 710 | | - goto err; | 711 | | - } | 712 | | - x = tmp; | 713 | | - } | 714 | | - | 715 | | - if (!ecp_sm2p256_bignum_field_elem(t, x)) { | 716 | | - ECerr(ERR_LIB_EC, EC_R_COORDINATES_OUT_OF_RANGE); | 717 | | - goto err; | 718 | | - } | 719 | | - | 720 | | - ecp_sm2p256_mod_ord_inverse(out, t); | 721 | | - | 722 | | - if (!bn_set_words(r, out, P256_LIMBS)) | 723 | | - goto err; | 724 | | - | 725 | | - ret = 1; | 726 | | -err: | 727 | | - return ret; | 728 | | -} | 729 | | - | 730 | 635 | const EC_METHOD *EC_GFp_sm2p256_method(void) | 731 | 636 | { | 732 | 637 | static const EC_METHOD ret = { | @@ -747,7 +652,7 @@ const EC_METHOD *EC_GFp_sm2p256_method(void) | 747 | 652 | ossl_ec_GFp_simple_point_copy, | 748 | 653 | ossl_ec_GFp_simple_point_set_to_infinity, | 749 | 654 | ossl_ec_GFp_simple_point_set_affine_coordinates, | 750 | | - ecp_sm2p256_get_affine, | | 655 | + ossl_ec_GFp_simple_point_get_affine_coordinates, | 751 | 656 | 0, 0, 0, | 752 | 657 | ossl_ec_GFp_simple_add, | 753 | 658 | ossl_ec_GFp_simple_dbl, | @@ -763,7 +668,7 @@ const EC_METHOD *EC_GFp_sm2p256_method(void) | 763 | 668 | ecp_sm2p256_field_mul, | 764 | 669 | ecp_sm2p256_field_sqr, | 765 | 670 | 0 /* field_div */, | 766 | | - 0 /* field_inv */, | | 671 | + ossl_ec_GFp_simple_field_inv, | 767 | 672 | 0 /* field_encode */, | 768 | 673 | 0 /* field_decode */, | 769 | 674 | 0 /* field_set_to_one */, | @@ -779,7 +684,7 @@ const EC_METHOD *EC_GFp_sm2p256_method(void) | 779 | 684 | ossl_ecdsa_simple_sign_setup, | 780 | 685 | ossl_ecdsa_simple_sign_sig, | 781 | 686 | ossl_ecdsa_simple_verify_sig, | 782 | | - ecp_sm2p256_inv_mod_ord, | | 687 | + 0, /* use constant‑time fallback for inverse mod order */ | 783 | 688 | 0, /* blind_coordinates */ | 784 | 689 | 0, /* ladder_pre */ | 785 | 690 | 0, /* ladder_step */ | |
|