GeezerVison is showing github.com — [v2.12] rust: clear RustSec advisories in src/crates, including the eMudhra distrust by vkalintiris · Pull Request #24688 · netdata/netdata
Conversation
vkalintiris
commented
Nov 11, 2026
•
edited by cubic-dev-ai
Bot
Loading
Uh oh!
There was an error while loading. Please reload this page.
Clear every RustSec advisory in src/crates on the v2.12 release branch, starting with the eMudhra/emSign distrusted intermediates, so the next patch release ships them. Part of #24662; the master side is #24686.
Previously: v2.12.3 locks rustls-webpki 0.103.13, so otel-plugin and netflow-plugin accept TLS chains through the compromised eMudhra intermediates, and cargo audit on the branch reports 24 vulnerabilities plus unsound and yanked crates. The master fixes (#24393 and the #24686 lockfile commits) do not cherry-pick: the v2.12 lockfile has drifted and every attempt conflicts. Now: the same fixes, rebuilt on v2.12 and pinned to the versions master already uses.
- eMudhra/emSign (first commit, cherry-picks on its own):
rustls-webpki 0.103.16 (RUSTSEC-2026-0382) blocklists the compromised intermediate keys; webpki-roots 1.0.10 (RUSTSEC-2026-0381) and webpki-root-certs 1.0.12 (RUSTSEC-2026-0383) cover the bundled roots, which are not shipped on Linux. rustls-webpki 0.103.16 requires aws-lc-rs 1.18, so aws-lc-rs 1.18.1 and aws-lc-sys 0.45.0 come along; master already uses both.
- Other lockfile-only fixes: rustls 0.23.46, h2 0.4.19, quinn-proto 0.11.18, chacha20 0.10.2 (0.10.1 is yanked), ctutils 0.4.8, pulldown-cmark 0.13.6, ruzstd 0.9.1, zstd 0.13.4 with zstd-safe 7.4.0 and zstd-sys 2.1.2, tokio 1.54.1, event-listener 5.4.2, lru 0.18.4.
- Manifest bumps (same as master): lru 0.16 → 0.19 (unsound RUSTSEC-2026-0253); ruzstd 0.8 → 0.9.1 for journal-core's zstd decoder (RUSTSEC-2026-0344); opendal 0.57 → 0.59 for quick-xml 0.42 (RUSTSEC-2026-0194, -0195), with the opendal and reqsign crates pinned to master's versions. The only source change is dropping
.finish() in a file-lifecycle test. That test file is not rustfmt-formatted on v2.12; the commit changes one line and leaves the rest as is.
- Validation:
v2.12 has no Rust CI, so everything ran locally on Rust 1.91. cargo test --workspace (excluding netflow-plugin and netipc) passes after the first, second and last commit (106 suites, 1757 tests), and otel-plugin and netflow-plugin build. A reqwest client built from this lockfile rejects the disclosure's test host dv-g3b-emudhra.we-have-a-problem.com with CertDistrusted and verifies a normal site. ruzstd 0.9.1 decoded every zstd object in 266 local system journal files (31,102 objects, no failures). cargo deny check advisories (unsound checked for all crates, yanked denied) and cargo audit --deny warnings pass, ignoring only the four vetted unmaintained advisories (bincode, fxhash, paste, unsafe-libyaml).
- Release: the series applies cleanly on top of the 2.12.4 release PR (Patch release 2.12.4 #24679), and so does the first commit alone.
Summary by cubic
Clears every RustSec advisory in src/crates on the v2.12 branch, starting with the eMudhra/emSign distrust, so the next patch release rejects TLS chains through the compromised intermediates and cargo audit passes. The master fixes don't cherry-pick because the v2.12 lockfile has drifted, so this rebuilds them on the branch, pinned to master's versions.
rustls-webpki 0.103.16 blocklists the compromised eMudhra/emSign keys; webpki-roots and webpki-root-certs follow, and aws-lc-rs/aws-lc-sys bump to satisfy the new requirement. The stale Cargo.toml comment pinning the old aws-lc versions is removed.
- Lockfile-only fixes cover
rustls, h2, quinn-proto, chacha20, ctutils, pulldown-cmark, ruzstd, zstd, tokio, event-listener, and lru.
- Manifest bumps:
lru 0.16 → 0.19 (unsound), ruzstd 0.8 → 0.9.1 (unbounded decompression), opendal 0.57 → 0.59 (quick-xml 0.42); the only source change drops .finish() in a file-lifecycle recovery test.
Validation
v2.12 has no Rust CI, so all testing ran locally on Rust 1.91: cargo test --workspace passes (106 suites, 1757 tests), and a reqwest client built from this lockfile rejects the disclosure's test host with CertDistrusted while verifying normal sites.
cargo audit --deny warnings and cargo deny check advisories pass, ignoring only four vetted unmaintained advisories.
- The series applies cleanly on top of the 2.12.4 release PR.
Written for commit bd6884a. Summary will update on new commits.

Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
…n /src/crates
Rejects TLS chains through the distrusted eMudhra/emSign intermediates
on the v2.12 branch:
- rustls-webpki 0.103.13 -> 0.103.16 (RUSTSEC-2026-0382): blocklists
the compromised intermediate keys; this is the fix for the shipped
otel-plugin and netflow-plugin.
- webpki-roots 1.0.8 -> 1.0.10 (RUSTSEC-2026-0381) and
webpki-root-certs 1.0.8 -> 1.0.12 (RUSTSEC-2026-0383): bundled root
updates for crates that are not shipped on Linux.
rustls-webpki 0.103.16 requires aws-lc-rs 1.18, so aws-lc-rs moves
1.17.0 -> 1.18.1 and aws-lc-sys 0.41.0 -> 0.45.0, the versions master
already uses. A reqwest client built from this lockfile rejects the
disclosure test host with CertDistrusted and still verifies normal
sites.
Refs #24662
Semver-compatible lockfile updates on the v2.12 branch, each to the
version master already uses:
- rustls 0.23.42 -> 0.23.46 (RUSTSEC-2026-0285, -0346, -0348, -0349)
- h2 0.4.15 -> 0.4.19 (RUSTSEC-2026-0258)
- quinn-proto 0.11.16 -> 0.11.18 (RUSTSEC-2026-0338..0342; locked but
not built)
- chacha20 0.10.1 -> 0.10.2 (0.10.1 is yanked; locked but not built)
- ctutils 0.4.2 -> 0.4.8 (RUSTSEC-2026-0385)
- pulldown-cmark 0.13.4 -> 0.13.6 (RUSTSEC-2026-0414, -0433)
- ruzstd 0.9.0 -> 0.9.1 (RUSTSEC-2026-0344)
- zstd 0.13.3 -> 0.13.4, zstd-safe 7.2.4 -> 7.4.0, zstd-sys 2.0.16 ->
2.1.2 (RUSTSEC-2026-0391, -0398, -0403, -0410, and the unsound
RUSTSEC-2026-0395..0406 notices)
- tokio 1.53.1 -> 1.54.1 (unsound RUSTSEC-2026-0386)
- event-listener 5.4.1 -> 5.4.2 (unsound RUSTSEC-2026-0221)
- lru 0.18.1 -> 0.18.4 (unsound RUSTSEC-2026-0253)
Refs #24662
lru 0.16.4 is affected by RUSTSEC-2026-0253 (use-after-free when a
panic unwinds through LruCache::pop); the fix landed in 0.18.2. The
0.17-0.19 releases change no API that journal-engine or
netflow-plugin use. Same change as master's lru bump.
Refs #24662
ruzstd 0.8.3 is affected by RUSTSEC-2026-0344: a crafted zstd frame
can expand one block to gigabytes and exhaust memory. journal-core
uses ruzstd to decompress journal data objects, which may come from
untrusted files. 0.9.1 bounds per-block output; the requirement names
0.9.1 so the vulnerable 0.9.0 cannot be selected. The decoder API that
journal-core uses is unchanged, and ruzstd 0.8.3 drops out of the
lockfile. Same change as master's ruzstd bump.
Refs #24662
opendal 0.57 pins quick-xml 0.39, which is affected by
RUSTSEC-2026-0194 (quadratic duplicate-attribute check) and
RUSTSEC-2026-0195 (unbounded namespace allocation in NsReader). The
S3 service parses XML responses with it. opendal 0.59 moves to
quick-xml 0.42.
The opendal and reqsign crates are pinned to the versions master
already uses. The only source change is in a test: Operator::new now
returns a finished operator (opendal 0.58). opendal's error display is
unchanged, so the redaction of remote-storage errors still applies.
HTTP 429 responses are now retried as temporary errors.
file-lifecycle/src/recovery/tests.rs is not rustfmt-formatted on
v2.12; this commit changes one line of it and leaves the rest as is.
Refs #24662
coderabbitai
Bot
commented
Nov 11, 2026
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
Important
Review skipped
Auto reviews are disabled on base/target branches other than the default branch.
Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.
Run configuration
-
- Source mode: Auto
- Repository: Unavailable
- Branch: Unavailable
- File: No configuration file from this repository applied
- Commit: Unavailable
- Layers: defaults
- Review profile: CHILL
- Plan: Advanced
- Run ID:
5f9ebbf0-4bda-4414-af9e-fa0c59452861
You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.
Use the checkbox below for a quick retry:
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Share
-
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
cubic-dev-ai
Bot
left a comment
•
edited
Loading
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1 issue found across 3 files
Confidence score: 4/5
- The pin comment in
src/crates/Cargo.toml no longer matches the versions in Cargo.lock, which could make the dependency pin unclear. Update it to 1.18.1 and 0.45.0, and record that the RPM hardened-linker build was re-checked.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="src/crates/Cargo.toml">
<violation number="1" location="src/crates/Cargo.toml:260">
P2: This pin comment is now stale: Cargo.lock resolves `aws-lc-rs` 1.18.1 and `aws-lc-sys` 0.45.0, not 1.17.0 / 0.41.0. Update the comment to the new versions and record that the RPM hardened-linker build was re-checked for them, since the warning exists for that failure mode.</violation>
</file>
Architecture diagram
sequenceDiagram
participant Dev as Developer (local)
participant Cargo as Cargo Build System
participant Lock as Cargo.lock
participant Registry as crates.io Registry
participant Audit as cargo audit / deny
participant Runtime as Netdata Rust Crates
participant Webpki as rustls-webpki
participant TLSPeer as TLS Peer (eMudhra)
Note over Dev,Audit: Dependency Resolution & Build Flow
Dev->>Cargo: Run cargo build/test
Cargo->>Lock: Read locked versions
Lock-->>Cargo: Return pinned versions
Cargo->>Registry: Fetch crates (rustls-webpki, aws-lc-rs, etc.)
Registry-->>Cargo: Download crates
Cargo->>Cargo: Compile with resolved deps
Note over Cargo,Audit: Version Resolution Changes
alt Manifest bump (lru, ruzstd, opendal)
Cargo->>Registry: Resolve lru 0.19, ruzstd 0.9.1, opendal 0.59
Registry-->>Cargo: Provide updated crates
end
Note over Audit,Webpki: Security Validation Flow
Dev->>Audit: Run cargo audit --deny warnings
Audit->>Lock: Scan advisory database
Lock-->>Audit: Report dependency versions
Audit-->>Dev: Pass (no known advisories)
Note over Runtime,TLSPeer: TLS Chain Verification (runtime)
Runtime->>Webpki: Verify TLS certificate chain
Webpki->>Webpki: Check against distrusted key list
alt Chain includes eMudhra intermediate
Webpki-->>Runtime: CertDistrusted error
Runtime-->>TLSPeer: Reject TLS connection
else Legitimate chain
Webpki-->>Runtime: Certificate valid
Runtime-->>TLSPeer: Establish TLS connection
end
Loading
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The comment said Cargo.lock holds aws-lc-rs 1.17.0 / aws-lc-sys 0.41.0
because aws-lc-sys 0.42.0's build script broke RPM-family package
builds. The rustls-webpki update on this branch moves them to
1.18.1 / 0.45.0, the versions master has used since #24161, whose
package builds verified 0.45.0; this branch's RPM package builds pass
with them as well. Same removal as #24161 on master.
Refs #24662
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.
|