L. C. Hsieh created SPARK-60591:
-----------------------------------

             Summary: Ignore RUSTSEC-2026-0387 (crypto-bigint) in cargo audit 
and track it until a fix is reachable
                 Key: SPARK-60591
                 URL: https://issues.apache.org/jira/browse/SPARK-60591
             Project: Spark
          Issue Type: Sub-task
          Components: Connect
    Affects Versions: connect-gateway-0.1.0
            Reporter: L. C. Hsieh
            Assignee: L. C. Hsieh


`cargo audit` reports RUSTSEC-2026-0387 against crypto-bigint 0.5.5:
"Multiple timing variability issues in operations intended to be
constant-time" (published 2026-10-23). The fix is in crypto-bigint 0.7.6, which
the current dependency graph cannot use. It is the scheduled audit run's only
remaining failure once SPARK-60590 lands.

How it reaches the gateway: jsonwebtoken's rust_crypto provider (selected in
SPARK-59552) uses p256 / p384 for ES256 / ES384, which go through ecdsa 0.16
and elliptic-curve 0.13 to crypto-bigint 0.5. jsonwebtoken 11 (#39) resolves
the same versions, so upgrading it does not help.

The gateway's exposure is low, for the same reason as RUSTSEC-2023-0071 (rsa,
SPARK-60369). Timing variability in supposedly constant-time arithmetic matters
when the operands are secret, i.e. during private-key operations. The gateway
only verifies JWT signatures with public keys: production code uses
DecodingKey (from_ec_pem, from_ec_components, and the RSA/Ed25519/HMAC
equivalents), and every EncodingKey or signing use is inside #[cfg(test)].
Verification works only on public values, so there is nothing secret to leak.

Plan:
  1. Add RUSTSEC-2026-0387 to the ignore list in .cargo/audit.toml, with this
     reasoning and a pointer to this issue, so the scheduled audit can gate on
     everything else.
  2. Keep this issue open (do not resolve it when the change for step 1 is
     merged) until one of the conditions below holds.

Close this, removing the ignore, when either:
  - jsonwebtoken (or whatever provides ES256/ES384 verification) moves onto a
    crypto-bigint release that contains the fix; or
  - the gateway is changed to perform EC private-key operations in production
    code, in which case the analysis above no longer holds and this needs
    revisiting immediately.

A longer-term option that removes both this advisory and RUSTSEC-2023-0071:
switching jsonwebtoken to its aws_lc_rs provider drops the RustCrypto rsa and
elliptic-curve stacks. It brings a C build dependency (aws-lc needs cmake) and
new licenses to review, which SPARK-59552 deliberately avoided, so it is not
proposed here.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to