fix(security): clear the last vulnerable lru by widening the usb-forensic caret - #21
Merged
Conversation
…nsic caret
Completes RUSTSEC-2026-0002 for this repo. lru is now 0.16.4 and 0.18.2 — both
at or above the >= 0.16.3 patch line — and the vulnerable 0.12.5 is gone from
the graph.
It took four upstream releases to get here, because the trap was a chain of OUR
OWN crates each declaring a caret one notch below the maintained line:
issen-usb ^0.2 -> usb-forensic ^0.9 -> disk-forensic ^0.3 -> ewf ^0.12 -> lru
Every link was fixed and PUBLISHED first (winevt-carver 0.1.3, ext4fs-core
0.2.8, usb-forensic 0.3.1, plus ewf 0.4.9 earlier), because a fix on a
dependency's main is not a fix for its consumers. This commit is the last link:
issen-usb's own `usb-forensic = "0.2"`.
Two consequences of moving to usb-forensic 0.3.1 had to be resolved, and both
are the same defect in different crates — a requirement looser than the API the
crate actually uses:
usb-forensic 0.3.1 declares peripheral-core "0.8" but uses
peripheral_core::shellbag, added in 0.8.2
peripheral-core 0.8.2 uses forensicnomicon_core::usb_vendors, which is
newer than the 1.4.0 this lock had resolved
Neither breaks in its own repo, where the lockfile happens to hold a new enough
version. They break in a consumer that unifies on an older patch that still
satisfies the caret. The lock now pins peripheral-core 0.8.2 and
forensicnomicon-core 1.5.1; tightening those declared minimums upstream is
follow-up work, since the manifests are still under-specified.
ratatui is also moved 0.29 -> 0.30 here, which drops its own lru dependency
(ratatui 0.29 required lru ^0.12 and 0.30 requires none).
Verified: 219 test suites pass, fmt and clippy clean under
--workspace --all-targets --all-features, `cargo deny check` passes all four
sections, `cargo vet --locked` succeeds with zero self-certified audits.
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Completes RUSTSEC-2026-0002 for this repo. lru is now 0.16.4 and 0.18.2 — both
at or above the >= 0.16.3 patch line — and the vulnerable 0.12.5 is gone from
the graph.
It took four upstream releases to get here, because the trap was a chain of OUR
OWN crates each declaring a caret one notch below the maintained line:
Every link was fixed and PUBLISHED first (winevt-carver 0.1.3, ext4fs-core
0.2.8, usb-forensic 0.3.1, plus ewf 0.4.9 earlier), because a fix on a
dependency's main is not a fix for its consumers. This commit is the last link:
issen-usb's own
usb-forensic = "0.2".Two consequences of moving to usb-forensic 0.3.1 had to be resolved, and both
are the same defect in different crates — a requirement looser than the API the
crate actually uses:
Neither breaks in its own repo, where the lockfile happens to hold a new enough
version. They break in a consumer that unifies on an older patch that still
satisfies the caret. The lock now pins peripheral-core 0.8.2 and
forensicnomicon-core 1.5.1; tightening those declared minimums upstream is
follow-up work, since the manifests are still under-specified.
ratatui is also moved 0.29 -> 0.30 here, which drops its own lru dependency
(ratatui 0.29 required lru ^0.12 and 0.30 requires none).
Verified: 219 test suites pass, fmt and clippy clean under
--workspace --all-targets --all-features,
cargo deny checkpasses all foursections,
cargo vet --lockedsucceeds with zero self-certified audits.