Skip to content

Fix remaining Dependabot alerts: hickory-proto (#62), rand (#54), lru (#44) - #2112

Open
erubboli wants to merge 7 commits into
masterfrom
fix/remaining-security-advisories
Open

erubboli wants to merge 7 commits into
masterfrom
fix/remaining-security-advisories

Conversation

@erubboli

Copy link
Copy Markdown
Member

Stacked on #2111 (which carries the rustls/chacha20 and tokio-postgres/postgres-protocol lockfile fixes needed for cargo-deny/cargo-vet to pass).

Fixes the three remaining open Dependabot alerts, each requiring a code migration rather than a lockfile bump:

#62 (medium) — hickory-proto: O(n²) name compression CPU exhaustion (RUSTSEC-2026-0119)

Patched only in 0.26.1+. Migrates dns-server from hickory-client/server 0.24 → hickory-proto/server 0.26.3:

  • hickory-client no longer exists in the 0.26 family; its rr types moved to hickory-proto
  • the Authority trait was replaced by ZoneHandler (search/lookup signatures changed, LookupControlFlow returns, is_axfr_allowedaxfr_policy, InMemoryAuthorityInMemoryZoneHandler, ServerFutureServer)
  • dynamic DNS updates remain rejected (the ZoneHandler::update default responds NotImplemented, now documented)
  • all 26 dns-server tests pass unchanged in their assertions

#54 (low) — rand 0.7.3 unsoundness (RUSTSEC-2026-0097)

rand 0.7.3 was pulled by probabilistic-collections 0.7.0, which is abandoned (last release 2020) and has no patched 0.7.x. Replaced with an in-house bloom filter in utils (same wrapper API: randomized SipHash-1-3 keys via siphasher, optimal m/k sizing, Kirsch-Mitzenmacher-style indexing). Removes probabilistic-collections and rand 0.7 from the tree entirely. Added unit tests (no false negatives, false-positive-rate bounds, clear, randomized keys).

#44 (low) — lru 0.12.5 Stacked Borrows violation (RUSTSEC-2026-0002)

Patched only in lru 0.16.3, but every upstream iced release (up to 0.14/master) still pins lru 0.12 via the glyphon text stack (iced master replaced it with unreleased cryoglyph). Created mintlayer/iced-glyphon — a fork of iced_glyphon 0.6.0 whose only change is the lru 0.12.1 → 0.16.3 dependency bump (verified compile-compatible, no source changes) — consumed via [patch.crates-io] with a pinned rev. Drop the patch once iced ships a fixed release.

Supply-chain

  • refreshed imports.lock, added policy.iced_glyphon (audit-as-crates-io = true) and exemptions for the newly introduced versions (hickory 0.26 family, lru 0.16.4, jni 0.22 stack, etc.); 7 initially-added exemptions turned out to be unnecessary after the imports refresh and were pruned

Verification

  • full ./do_checks.sh (fmt, cargo-deny, cargo-vet, clippy, codecheck, wasm-doc) green locally under the CI toolchain (1.92.0)
  • cargo test -p utils -p dns-server -p p2p: 42 + 26 + 314 tests pass
  • node-gui compiles against the patched iced_glyphon
  • two rounds of local AI code review (open-code-review CLI, glm-5.3-flash) run on the diff before pushing; all findings addressed

- Add exemption for chacha20 0.10.2 (published via trusted publishing,
  so no publisher identity exists for trust entries to cover)
- Refresh imports.lock: rustls 0.23.45 / rustls-webpki 0.103.15
  publisher records and upstream vendor audit updates
- dns-server: migrate hickory-client/server 0.24 -> hickory-proto/server
  0.26.3. hickory-client no longer exists in the 0.26 family, its types
  moved to hickory-proto; the Authority trait was replaced by ZoneHandler
  (fixes RUSTSEC-2026-0119, Dependabot #62)
- utils: replace the abandoned probabilistic-collections crate (last
  release 2020) with an in-house bloom filter implementation, removing
  the vulnerable rand 0.7 from the dependency tree (fixes
  RUSTSEC-2026-0097, Dependabot #54)
- node-gui: consume a patched iced_glyphon fork with lru upgraded to
  0.16.3 via [patch.crates-io] (fixes RUSTSEC-2026-0002, Dependabot #44);
  no upstream iced release carries the fix yet
- Propagate the hickory server termination error instead of logging it
- Document that dynamic DNS updates stay rejected (ZoneHandler default)
- Remove the per-insert allocation in the bloom filter hot path
- Import TSigResponseContext instead of an inline path
- Refresh imports.lock and prune 7 exemptions that vendor audits now cover
- Reword the bloom filter FPP guarantee (approximately, not at most)
- Fix the misleading 'round down' comment (round() rounds to nearest)
- Make the dynamic DNS update comment accurate (NotImplemented is a
  stricter rejection than the old indirect rejection)
- Restore alphabetical ordering of utils dependencies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants