Dependency Risk & Advisory Tracking Plan¶
Status: living document. Owner: BenoStreamDB core.
Companion config: audit.toml (cargo-audit), deny.toml (cargo-deny).
This document is the tracking plan for advisories we have reviewed and
accepted. It exists so the allow-lists in audit.toml / deny.toml cannot
silently go stale: every ignored advisory has a named owner, a reachability
assessment, a migration path, and a review date.
Policy¶
cargo auditandcargo denyrun in CI (.github/workflows/). A new advisory fails the build unless it is added here and to both allow-lists.Every ignored advisory must have an entry below with: ID, crate + version, dependency chain, reachability, migration path, and next review.
Review cadence: every release, and at least monthly. Re-run
cargo tree -i <crate>to confirm the chain still holds.Prefer removal over acceptance. If the crate is a direct dependency, the default is to replace it; acceptance is for transitive deps we cannot remove without forking an upstream.
“Unmaintained” ≠ “vulnerable”. RUSTSEC flags unmaintained crates so we can plan a migration; it is a maintenance risk, not an exploit.
Accepted advisories¶
RUSTSEC-2025-0141 — bincode is unmaintained¶
Field |
Value |
|---|---|
Crate / version |
|
Kind |
Unmaintained (not a vulnerability) |
Chain |
Direct dependency of |
Reachability |
Runtime, but only for HNSW point-vector dump/load. The bytes are our own index sidecars (reconstructible from the data), not untrusted input. |
Migration path |
Replace with a maintained serializer ( |
Status |
Accepted, tracked. |
Next review |
Each release; re-check for a maintained fork or a DataFusion/Arrow-provided serializer. |
RUSTSEC-2026-0346 / RUSTSEC-2026-0349 — rustls 0.21.12 (EOL)¶
Field |
Value |
|---|---|
Crate / version |
|
Kind |
Vulnerability (low practical impact in this configuration) |
Chain |
Transitive: |
Reachability |
Only the AWS SDK’s legacy HTTPS client. Both advisories require, respectively, a custom |
Fix status |
|
Migration path |
Track |
Status |
Accepted, tracked. |
Next review |
Each release; re-run |
RUSTSEC-2026-0382 — distrusted emSign intermediates (webpki-roots, rustls-webpki)¶
Field |
Value |
|---|---|
Crate / version |
|
Kind |
Vulnerability (certificate path validation) |
Chain |
|
Reachability |
Only legacy TLS clients of upstream crates: the AWS SDK’s rustls-0.21 client and |
Fix status |
|
Migration path |
Track |
Status |
Accepted, tracked. |
Next review |
Each release; re-run |
RUSTSEC-2024-0436 — paste is unmaintained¶
Field |
Value |
|---|---|
Crate / version |
|
Kind |
Unmaintained (not a vulnerability) |
Chain |
Transitive via |
Reachability |
Compile-time only — |
Migration path |
None available to us: it is pulled in by DataFusion. Track DataFusion releases for a move to |
Status |
Accepted, tracked. |
Next review |
Each DataFusion bump; re-run |
Other allow-listed advisories¶
The remaining entries in audit.toml / deny.toml are reviewed transitive
advisories with no reachable runtime surface in the production paths (proc-macro
only, unreachable code path, or accepted upstream). They are re-reviewed on the
same cadence. Notable ones:
ID |
Crate |
Why accepted |
|---|---|---|
RUSTSEC-2026-0258 |
|
Unbounded empty DATA frames (DoS). Deployment is assumed behind a mitigating reverse proxy. |
RUSTSEC-2026-0195 / -0194 |
|
Only reachable in the offline |
RUSTSEC-2023-0071 |
|
Marvin attack; not on a production path. |
RUSTSEC-2026-0176 / -0177 |
|
Python-binding edge cases; tracked for the next pyo3 bump. |
How to add a new accepted advisory¶
Run
cargo auditandcargo tree -i <crate>to get the ID and chain.Add the ID to
audit.tomlanddeny.tomlwith a one-line reason.Add a full entry to this document (copy the table above).
Set a next-review date and note the migration path.
If the crate is a direct dependency, open a tracking issue to replace it.