ruvnet / ruvnet/RuVector

deps: quick-xml DoS advisories (RUSTSEC-2026-0195/-0194) unfixable by version bump — alternative profiling-dependency options

Open
#680 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
4.5k
Forks
603
Avg merge
23h 32m
Merged PRs (30d)
59

Description

Tracking follow-up from a security-dependency audit of the workspace (a branch with the fixable bump — crossbeam-epoch RUSTSEC-2026-0204 — plus documented ignores is ready and will arrive as a PR).

The advisories: RUSTSEC-2026-0195 / RUSTSEC-2026-0194 (quick-xml 0.26.0, DoS-class, severity 7.5) flag on cargo audit.

Why a version bump can't fix it today (verified by live dependency resolution, not just lockfile reading):

quick-xml 0.26.0  <-  inferno 0.11.21  <-  pprof 0.13  <-  ruvector-bench (optional, behind the `profiling` feature)
  • pprof 0.15.0 (its newest release) still requires inferno = "^0.11"
  • inferno 0.11.21 (its newest 0.11 patch) still requires quick-xml = "^0.26"

So the vulnerable pin is upstream of this repo on every current release. Current quick-xml releases are unaffected; the chain just can't reach them yet.

Mitigating context: the exposure is dev-tooling only — pprof is optional and only enabled via ruvector-bench's profiling feature, so no default or production build ships the vulnerable code path.

Alternatives worth considering (any one of these clears the advisory rather than ignoring it):

  1. Drop in-process flamegraph rendering: use pprof's protobuf output feature instead of flamegraph, and render externally (go tool pprof, speedscope). Removes inferno → quick-xml entirely; keeps criterion integration.
  2. External profiler workflow: samply or cargo flamegraph as documented dev tools outside the dependency graph — zero workspace deps, same artifact.
  3. Upstream nudge: an issue on inferno asking for a quick-xml major bump would fix the whole ecosystem's chain; pprof would follow.
  4. Status quo + documented ignore (what the audit branch does meanwhile): keeps cargo audit/cargo deny green with an explicit rationale entry rather than a silent red.

Happy to send the PR for option 1 or 2 if either fits how you actually use the profiling feature.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the dependency chain with cargo audit and checking the profiling feature in ruvector-bench: pprof 0.13, inferno 0.11.21, and quick-xml 0.26.0. Compare the proposed protobuf/external-profiler options and the documented-ignore fallback; done means one chosen approach clears the advisory or records an explicit rationale while preserving the intended profiling workflow.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
performance, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.