Repository navigation
chore(deps): bump quinn-proto, h2, rkyv and crossbeam-epoch past RustSec advisories - #718
Conversation
…am-epoch to 0.9.21 to pick up RustSec fixes. quinn-proto 0.11.14, behind libp2p-quic, let any QUIC peer exhaust memory through unbounded out-of-order stream reassembly (RUSTSEC-2026-0185) and pending connection-ID retirements (RUSTSEC-2026-0339). Lockfile only, through make update so the publish-age cooldown applies; rustls waits for rustls-webpki 0.103.16 to clear it.
🤖 Kimi Code ReviewI'll review this PR diff focusing on the relevant changes. This appears to be primarily a dependency update in Critical Issues1.
|
| Severity | Issue | Location |
|---|---|---|
| 🔴 High | syn downgrade 2→1 and introduction of 3.x |
Lines 1487, 6253 |
| 🔴 High | rand 0.9→0.10 major bump |
Line 5815 |
| 🟡 Medium | getrandom version split 0.3/0.4 |
Lines 2870-2889 |
| 🟡 Medium | rkyv with syn 3.x for derived serialization |
Lines 6234-6253 |
| 🟢 Low | socket2 downgrade |
Lines 3267, 5839 |
The Cargo.lock changes suggest this was a broad cargo update rather than targeted updates. For consensus-critical code, prefer targeted updates with explicit changelog review.
Automated review by Kimi (Moonshot AI) · kimi-k2.6 · custom prompt
🤖 Claude Code ReviewReview of PR 718: lockfile-only security bump The change looks good. It takes the right fixes and keeps to the stated scope. I only read the diff and did not build or run What I checked
Notes (non-blocking)
The PR documents what it leaves out and why: Verdict: approve, subject to the QUIC smoke test and the cooldown check from the notes. Automated review by Claude (Anthropic) · sonnet · custom prompt |
🤖 Codex Code ReviewI only see a
No blocking correctness bug is evident from the diff alone, but I would leave one concise review note:
If you want, I can also do a second pass by tracing where Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
…past RustSec advisories, and drop libp2p's unused transports (lambdaclass#751) ## 🗒️ Description / Motivation `cargo audit` against `main` reports 14 advisories in the root lockfile and 11 in `tooling/event-monitor`'s. This PR is the follow-up lambdaclass#718 announced: the `rustls` set has cleared the 14-day publish-age cooldown, and so have fixes for `quick-xml`, `zstd-sys` and `ruint`. It also stops compiling libp2p's DNS, mDNS, websocket, relay, kad and upnp transports, which the swarm never builds from, so `hickory-dns` leaves the build graph instead of waiting on a fork rebase. ## What Changed Lockfiles, via `make update UPDATE_ARGS="-p ..."` so the cooldown is applied: | Crate | From → to | Advisories fixed | Reachable here? | |---|---|---|---| | `rustls` (both lockfiles) | 0.23.40 → 0.23.46 | 0285 (TLS 1.3 handshake messages accepted across encryption levels), 0346, 0348, 0349 | **Yes**: libp2p-quic/libp2p-tls on every QUIC peer, plus `reqwest` | | `quick-xml` via `inferno` 0.12.6 → 0.12.8 | 0.39.4 → 0.41.0 | 0194, 0195 (CVSS 7.5) | No: only `inferno`'s flamegraph SVG under `jemalloc_pprof` | | `zstd-sys` | 2.0.16 → 2.1.2 | 0410 | No: wasm allocator shim | | `ruint` | 1.18.0 → 1.20.1 | 0220 | Reached through leanVM's `xmss` → `ethereum_ssz`; adds `ark-ff` 0.6 to the lock as an inactive optional dep | | `quinn-proto` (event-monitor only) | 0.11.16 → 0.11.19 | 0185, 0338, 0339, 0340, 0342 | Same set lambdaclass#718 fixed on the root lockfile | `rustls-webpki`, `rustls-pki-types`, `webpki-roots` and `aws-lc-rs`/`aws-lc-sys` move to the newest version the cooldown allows, which is what lets `rustls` reach 0.23.46. `crates/net/p2p/Cargo.toml`: `libp2p` goes from `features = ["full"]` to the eleven features the swarm is built from (`ed25519`, `gossipsub`, `identify`, `macros`, `noise`, `quic`, `request-response`, `secp256k1`, `tcp`, `tokio`, `yamux`). That removes ~40 crates from the lock: the unsound `rand` 0.7 family, `webpki-roots` 0.26, `soketto`, `sysinfo`, `libp2p-{autonat,dcutr,floodsub,kad,ping,plaintext,pnet,relay,rendezvous,uds,websocket,...}`. ## Correctness / Behavior Guarantees - No Rust source touched. Every lockfile bump is semver-compatible; `make cooldown-check` passes on both manifests. - The libp2p feature list is derived from the `libp2p::` modules the p2p crate imports and the `SwarmBuilder` calls in `build_swarm` (`with_tcp`, `with_quic`, `with_behaviour`); `cargo check` and the p2p tests confirm nothing else was in use. - `hickory-proto` and `libp2p-{dns,mdns,metrics,upnp}` still appear in `Cargo.lock`, so `cargo audit` keeps reporting RUSTSEC-2026-0118/0119. That is cargo's lock resolver keeping optional deps that a weak feature (`libp2p-dns?/tokio`) names; `cargo tree -i hickory-proto` shows no dependent, and nothing links it. After this PR `cargo audit` reports 6 advisories on the root lockfile (down from 14) and 2 on event-monitor's (down from 11): `rustls-webpki`, `webpki-roots`/`webpki-root-certs` and `libz-sys` fixes still inside the cooldown (until 2026-11-03 and 2026-11-11), `crypto-bigint` (needs `k256` 0.14 upstream), and the lock-only `hickory-proto` entry described above. ## Tests Added / Run None added: no source touched. - `make cooldown-check` (resolver probe on both manifests): passes - `make lint`: clean - `cargo test -p ethlambda-p2p`: 362 passed - `make test`: 2868 passed, 0 failed - `cargo audit`: 14 → 6 (root), 11 → 2 (event-monitor) ## Related Issues / PRs - Follow-up to lambdaclass#718 - Next follow-up: `rustls-webpki` / `webpki-roots` / `webpki-root-certs` after 2026-11-03, `libz-sys` after 2026-11-11 ## ✅ Verification Checklist - [x] Ran `make fmt` — clean - [x] Ran `make lint` (clippy with `-D warnings`) — clean - [x] Ran `make test` (`test-consensus` plus `test-node`, at `release-fast`) — all passing
🗒️ Description / Motivation
cargo auditagainstmainreports 23 advisories. One of them can be triggered remotely by any peer:quinn-proto0.11.14, the QUIC implementation behind libp2p-quic, our primary transport, is open to remote memory exhaustion from unbounded out-of-order stream reassembly (RUSTSEC-2026-0185, CVSS 7.5) and to unbounded growth of pending connection-ID retirements (RUSTSEC-2026-0339). Both need no authentication.This PR takes every fix that already clears the 14-day publish-age cooldown and needs nothing but a lockfile change.
What Changed
Cargo.lockonly, viamake update UPDATE_ARGS="-p quinn-proto -p h2 -p rkyv -p crossbeam-epoch"(so the cooldown is applied):quinn-protoh2rkyv/rkyv_derivecrossbeam-epochfmt::Pointeron an invalid pointer)quinn-proto0.11.19 adds one new transitive dependency,rand_pcg0.10.2.Correctness / Behavior Guarantees
Cargo.toml.make cooldown-checkpasses.Deliberately left out
rustls(0285, 0346, 0348, 0349),rustls-webpki(0382),webpki-roots(0381)rustls(≥ 0.23.45) needsrustls-webpki0.103.16, published 2026-10-20, which is still inside the cooldown: the resolver stops atrustls0.23.43, which fixes none of them. A follow-up after 2026-11-03 picks all three up together.crypto-bigint0.5.5 (0387)elliptic-curve/k256major bump.ruint1.18.0 (0220)xmss→ethereum_ssz; the fix pulls inark-ff0.6, so it belongs with a leanVM bump.hickory-proto(0118, 0119),quick-xml(0194, 0195),zstd-sys(0410)full) but unused,quick-xmlonly servesinferno's SVG output underjemalloc_pprof, and thezstd-sysissue is wasm-only.After this PR
cargo auditreports 13 advisories, none of them inquinn-proto,h2,rkyvorcrossbeam-epoch.Tests Added / Run
None added: no source touched.
make cooldown-check: passesmake lint: cleanmake test: 2859 passed, 0 failedcargo audit: 23 → 13 advisoriesRelated Issues / PRs
rustls/rustls-webpki/webpki-rootsoncerustls-webpki0.103.16 clears the cooldown (2026-11-03).✅ Verification Checklist
make fmt— cleanmake lint(clippy with-D warnings) — cleanmake test(test-consensusplustest-node, atrelease-fast) — all passing