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

             Summary: Pin the transitive h2 dependency to 0.4.16 to pick up 
RUSTSEC-2026-0258
                 Key: SPARK-60115
                 URL: https://issues.apache.org/jira/browse/SPARK-60115
             Project: Spark
          Issue Type: Sub-task
          Components: Connect
    Affects Versions: connect-gateway-0.1.0
            Reporter: L. C. Hsieh


 `cargo audit` against the current main (131c830) reports three advisories. This
  addresses the one that is both server-side and has a fix available:

    RUSTSEC-2026-0258 -- h2 unbounded empty DATA frames
    https://github.com/hyperium/hyper/security/advisories/GHSA-q83h-524g-xf6h
    affected: h2 0.4.15, patched: >= 0.4.16

  Why this one matters here: `h2` reaches the gateway through
  `hyper` -> `tonic` 0.14.6, and the tonic server is the gateway's own
  client-facing listener on :15003. A peer that can open a connection and send
  unbounded empty DATA frames is the threat model of an internet- or
  cluster-facing gRPC proxy, not a hypothetical.

  `h2` is not a direct dependency -- it appears nowhere in `Cargo.toml` -- so 
this
  is a lockfile-only change:

      cargo update -p h2 --precise 0.4.16

  Only the `h2` entry moves; the other 89 resolved dependencies are unchanged, 
and
  no `Cargo.toml` edit is needed or made.

  ### Scope: what this does not fix

  The other two advisories are deliberately left out of this change.

    RUSTSEC-2026-0285 -- rustls 0.23.43, TLS 1.3 handshake messages incorrectly
    accepted across encryption level boundaries. Patched in 0.23.45, already
    proposed by dependabot in #47, so it belongs there rather than here. Worth
    noting the gateway's exposure is limited: it does not terminate TLS (no
    `ServerConfig` / `TlsAcceptor` / `ServerTlsConfig` anywhere under `crates/`,
    and :15003 is plaintext), and pulls `rustls` only on client paths --
    `kube-client` for the K8s API, `reqwest` for OIDC JWKS, and
    `opentelemetry-otlp`'s `tls-ring`.

    RUSTSEC-2023-0071 -- rsa 0.9.10, Marvin Attack timing sidechannel. No 
patched
    version exists, so there is nothing to bump to. It arrives via
    `jsonwebtoken`'s RSA backend under the `rust_crypto` provider selected in
    SPARK-59552, and needs a decision (accept the risk, or change backend) 
rather
    than a version bump. Possibly worth resolving alongside #39.

  ### A limitation of this fix

  A `--precise` pin on a transitive dependency is not durable: the next
  `cargo update`, or a dependabot bump of `hyper` or `tonic`, can re-resolve 
`h2`
  and silently drop back below 0.4.16.

  The durable fix is running `cargo audit` in CI, which is not wired up today --
  all three advisories above reached `main` unnoticed and were found only by
  running it by hand. That is worth its own change.

  ### How was this patch tested?

  Resolution verified before committing:

      $ cargo update -p h2 --precise 0.4.16 --dry-run
          Updating h2 v0.4.15 -> v0.4.16

  Full workspace on the pinned 1.99.0 toolchain: `cargo clippy --workspace
  --all-targets -- -D warnings` clean, `cargo fmt --all --check` clean, and
  `cargo test --workspace` at 204 passed / 0 failed, matching the baseline on
  main. `cargo audit` then reports RUSTSEC-2026-0258 resolved, with the rustls
  and rsa advisories remaining as described above.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to