fix(deps): bump openssl/quinn-proto/rustls-webpki/russh/nanoid for disclosed CVEs - #709
Conversation
…r disclosed CVEs Advisory: - openssl 0.10.76 → 0.10.80 (GHSA-8c75-8mhr-p7r9, GHSA-ghm9-cr32-g9qj, GHSA-hppc-g8h3-xhp3, GHSA-pqf5-4pqq-29f5, GHSA-xp3w-r5p5-63rr, plus related moderates) - quinn-proto 0.11.14 → 0.11.15 (GHSA-4w2j-m93h-cj5j) - rustls-webpki 0.103.10 → 0.103.13 (GHSA-82j2-j2ch-gfr8) - russh 0.62.2 → 0.62.5 (GHSA-5xvq-cp9x-6p6r, GHSA-cqjc-rmpq-xprq, GHSA-g9hv-x236-4qp3, GHSA-m65r-rprj-r5rg) - nanoid 3.3.17 → 3.3.18 in sdk/typescript (GHSA-2v37-7h3g-55p8) Detected by osv-scanner. Lockfile-only changes.
There was a problem hiding this comment.
ℹ️ No critical issues — one minor suggestion inline.
Reviewed changes — reviewed the complete diff of commit fd810f26 against master (55b384b9) — both lockfiles — and verified the bump end-to-end: reproduced the exact Cargo.lock from master with the four stated cargo update -p … --precise commands under cargo 1.98.0 (byte-identical result), validated both locks against their manifests (cargo metadata --locked, live npm ci on npm 11.16.0), and cross-checked every pinned version against OSV and the linked advisories.
openssl0.10.76 → 0.10.80 (+ forcedopenssl-sys0.9.117,once_celldep dropped): OSV reports zero advisories at 0.10.80.quinn-proto0.11.14 → 0.11.15: GHSA-4w2j-m93h-cj5j (remote memory exhaustion, High) is patched exactly in 0.11.15.rustls-webpki0.103.10 → 0.103.13: zero advisories at 0.103.13.russh0.62.2 → 0.62.5 — direct dep ofarcbox-fleet-agent(^0.62.1, compatible); zero advisories at 0.62.5. The crypto-graph moves are forced fallout, verified against russh 0.62.5's own manifests:curve25519-dalek = "5",ed25519-dalek = "3",sha3 = "0.12.0"replace 0.62.2's=5.0.0-rc.1/=3.0.0-rc.1/"0.11.0"pins, addingsha3 0.12.0+sponge-cursorwhileml-kemkeepssha3 0.11.0.nanoid3.3.17 → 3.3.18 (transitive ofpostcss ^3.3.16): GHSA-2v37-7h3g-55p8 / CVE-2026-67213 (High) is patched exactly in 3.3.18; livenpm ciinstalls 3.3.18.
One note on the Cargo.lock shape, since it reads as alarming in a security diff: the socket2 0.6.4 → 0.5.10, windows-sys 0.61.2 → 0.60.2/0.52.0/0.48.0, windows-core 0.62.2 → 0.57.0, and getrandom 0.4.2 → 0.3.4 ref changes are produced by cargo itself, not hand-edited — those consumers use range requirements (hyper-util declares ">=0.5.9, <0.7", tempfile ">=0.3.0, <0.5" / ">=0.52, <0.62"), and the precise updates unify them onto versions already pinned in the lock by narrower-requirement consumers. Verified: none of the downgraded versions is yanked, none carries an advisory, and the result still passes cargo metadata --locked.
openai-compatible/@cf/zai-org/glm-5.3-flash | 𝕏
| "@connectrpc/connect": "^2.1.2", | ||
| "@connectrpc/connect-node": "^2.1.2" | ||
| "@connectrpc/connect-node": "^2.1.2", | ||
| "nanoid": "3.3.18" |
There was a problem hiding this comment.
nanoid is not a direct SDK dependency — it's postcss's transitive dev-toolchain dep. npm update nanoid from master's lock lands the same 3.3.18 fix as a two-line diff, while this install-style update fabricates a direct production dependency (dropping "dev": true) and strips all 51 libc platform constraints from the lock. Worth redoing the npm side with npm update nanoid.
Technical details
# Redo the npm-side bump with `npm update nanoid`
## Affected sites
- `sdk/typescript/package-lock.json:15` — root package gains `"nanoid": "3.3.18"` while `package.json` declares no such dependency; `node_modules/nanoid` loses `"dev": true`; 51 optional platform packages lose their `"libc"` constraints.
## Evidence
- `npm update nanoid` (npm 11.16.0, from master's lock) bumps `node_modules/nanoid` to 3.3.18, keeps `"dev": true`, and touches nothing else — verified locally.
- This PR's lock matches an install-style update (`npm install nanoid@3.3.18 --package-lock-only`) except the libc strip: 51 of 52 structural diffs vs that reproduction are libc-only. It was not produced by the stated `npm update nanoid`.
- Harmless today: `npm ci` succeeds and installs nanoid 3.3.18; `package.json` (unchanged in this PR) governs the published SDK.
## Required outcome
- Lock delta for the nanoid fix limited to the `node_modules/nanoid` entry; no root-dependency addition, no libc churn.
## Suggested approach
- From master's `package-lock.json`: `npm update nanoid` (postcss requires `^3.3.16`, so 3.3.18 resolves cleanly). Use `overrides` in `package.json` only if a hard pin on the transitive nanoid is actually wanted.
Automated dependency bump to address disclosed CVEs.
Rust (
Cargo.lock)opensslquinn-protorustls-webpkirusshTypeScript SDK (
sdk/typescript/package-lock.json)nanoid(via postcss)Verification
osv-scanner scan source --recursive --no-ignore --format=json .cargo update -p … --precise …/npm update nanoidDetected by osv-scanner. No code changes outside the lockfiles.