<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3b2f7b7acc1d20cd016ede181b289d9363ea8692">https://github.com/macports/macports-ports/commit/3b2f7b7acc1d20cd016ede181b289d9363ea8692</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 3b2f7b7acc1 openssl3: Fix CVE-2024-13176
</span>3b2f7b7acc1 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 3b2f7b7acc1d20cd016ede181b289d9363ea8692
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Mon Jan 20 17:59:29 2025 +0100

<span style='display:block; white-space:pre;color:#404040;'>    openssl3: Fix CVE-2024-13176
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Fixes a small timing sidechannel in ECDSA that can in the worst case
</span><span style='display:block; white-space:pre;color:#404040;'>    lead to a private key compromise.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See https://openssl-library.org/news/secadv/20250120.txt for the
</span><span style='display:block; white-space:pre;color:#404040;'>    upstream advisory.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    CVE: CVE-2024-13176
</span>---
 devel/openssl3/Portfile                            |   5 +-
 .../77c608f4c8857e63e98e66444e2e761c9627916f.patch | 121 +++++++++++++++++++++
 2 files changed, 125 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/Portfile b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 800115e8287..9879fdce45f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,7 +14,7 @@ set major_v         3
</span> epoch               1
 github.setup        openssl openssl ${major_v}.4.0 openssl-
 name                openssl3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-revision            1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            2
</span> 
 github.tarball_from releases
 checksums           rmd160  d300c74dce877d7099bd59fa82d8f0691f13cc97 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,6 +98,9 @@ patchfiles-append   patch-use-timegm.diff
</span> # https://trac.macports.org/ticket/71760
 patchfiles-append   5549fcd4783cb6c2a7f07e74505a2eea4939e5b1.patch
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# CVE-2024-13176
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   77c608f4c8857e63e98e66444e2e761c9627916f.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {${os.platform} eq "darwin" && ${os.major} < 11} {
     # Having the stdlib set to libc++ on 10.6 causes a dependency on a
     # macports-clang compiler to be added, which would be a dep cycle.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/openssl3/files/77c608f4c8857e63e98e66444e2e761c9627916f.patch b/devel/openssl3/files/77c608f4c8857e63e98e66444e2e761c9627916f.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..be1967f6d00
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/openssl3/files/77c608f4c8857e63e98e66444e2e761c9627916f.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,121 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 77c608f4c8857e63e98e66444e2e761c9627916f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Tomas Mraz <tomas@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Wed, 15 Jan 2025 18:27:02 +0100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix timing side-channel in ECDSA signature computation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+There is a timing signal of around 300 nanoseconds when the top word of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the inverted ECDSA nonce value is zero. This can happen with significant
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+probability only for some of the supported elliptic curves. In particular
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+the NIST P-521 curve is affected. To be able to measure this leak, the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+attacker process must either be located in the same physical computer or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+must have a very fast network connection with low latency.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Attacks on ECDSA nonce are also known as Minerva attack.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Fixes CVE-2024-13176
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Tim Hudson <tjh@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Neil Horman <nhorman@openssl.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed-by: Paul Dale <ppzgs1@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(Merged from https://github.com/openssl/openssl/pull/26429)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(cherry picked from commit 63c40a66c5dc287485705d06122d3a6e74a6a203)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ crypto/bn/bn_exp.c  | 21 +++++++++++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ crypto/ec/ec_lib.c  |  7 ++++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ include/crypto/bn.h |  3 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 3 files changed, 22 insertions(+), 9 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/crypto/bn/bn_exp.c b/crypto/bn/bn_exp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b876edbfac36e..af52e2ced6914 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./crypto/bn/bn_exp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./crypto/bn/bn_exp.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -606,7 +606,7 @@ static int MOD_EXP_CTIME_COPY_FROM_PREBUF(BIGNUM *b, int top,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * out by Colin Percival,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * http://www.daemonology.net/hyperthreading-considered-harmful/)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               const BIGNUM *m, BN_CTX *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               BN_MONT_CTX *in_mont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -623,10 +623,6 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int t4 = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    bn_check_top(a);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    bn_check_top(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    bn_check_top(m);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!BN_is_odd(m)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ERR_raise(ERR_LIB_BN, BN_R_CALLED_WITH_EVEN_MODULUS);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1146,7 +1142,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             goto err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (!BN_from_montgomery(rr, &tmp, mont, ctx))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!bn_from_mont_fixed_top(rr, &tmp, mont, ctx))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         goto err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ret = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  err:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1160,6 +1156,19 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              const BIGNUM *m, BN_CTX *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              BN_MONT_CTX *in_mont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bn_check_top(a);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bn_check_top(p);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bn_check_top(m);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!bn_mod_exp_mont_fixed_top(rr, a, p, m, ctx, in_mont))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    bn_correct_top(rr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int BN_mod_exp_mont_word(BIGNUM *rr, BN_ULONG a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *in_mont)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/crypto/ec/ec_lib.c b/crypto/ec/ec_lib.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 284fc05951b92..d9a6510d55cce 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./crypto/ec/ec_lib.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./crypto/ec/ec_lib.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21,6 +21,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <openssl/opensslv.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <openssl/param_build.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "crypto/ec.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "crypto/bn.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "internal/nelem.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "ec_local.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1265,10 +1266,10 @@ static int ec_field_inverse_mod_ord(const EC_GROUP *group, BIGNUM *r,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (!BN_sub(e, group->order, e))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         goto err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /*-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     * Exponent e is public.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-     * No need for scatter-gather or BN_FLG_CONSTTIME.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * Although the exponent is public we want the result to be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     * fixed top.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (!BN_mod_exp_mont(r, x, e, group->order, ctx, group->mont_data))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!bn_mod_exp_mont_fixed_top(r, x, e, group->order, ctx, group->mont_data))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         goto err;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ret = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/include/crypto/bn.h b/include/crypto/bn.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 47d9b44f879f0..bdee28625ce60 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./include/crypto/bn.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./include/crypto/bn.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -73,6 +73,9 @@ int bn_set_words(BIGNUM *a, const BN_ULONG *words, int num_words);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int bn_mul_mont_fixed_top(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           BN_MONT_CTX *mont, BN_CTX *ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int bn_mod_exp_mont_fixed_top(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              const BIGNUM *m, BN_CTX *ctx,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              BN_MONT_CTX *in_mont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int bn_to_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          BN_CTX *ctx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int bn_from_mont_fixed_top(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
</span></pre><pre style='margin:0'>

</pre>