[
https://issues.apache.org/jira/browse/SPARK-60115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
L. C. Hsieh resolved SPARK-60115.
---------------------------------
Fix Version/s: connect-gateway-0.1.0
Resolution: Fixed
Issue resolved by pull request 48
[https://github.com/apache/spark-connect-gateway/pull/48]
> 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
> Assignee: L. C. Hsieh
> Priority: Major
> Labels: pull-request-available
> Fix For: connect-gateway-0.1.0
>
>
> `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]