GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

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

@vkalintiris vkalintiris commented Nov 11, 2026 •
edited by cubic-dev-ai Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

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.

View guided diff Turn on auto-fix

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
vkalintiris added 5 commits November 11, 2026 09:39
@vkalintiris
build(deps): bump rustls-webpki, webpki-roots and webpki-root-certs i…
c71ffaf
…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
@vkalintiris
build(deps): bump Rust crates with RUSTSEC fixes in /src/crates
efc870c
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
@vkalintiris
build(deps): bump lru to 0.19 in /src/crates
32d6887
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
@vkalintiris
build(deps): bump ruzstd to 0.9.1 in /src/crates
35bc4e0
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
@vkalintiris
build(deps): bump opendal to 0.59 in /src/crates
86e8243
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

coderabbitai Bot commented Nov 11, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

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:

  • Trigger review
  • 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

  • X
  • Mastodon
  • Reddit
  • LinkedIn
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cubic-dev-ai[bot]
cubic-dev-ai Bot reviewed Nov 11, 2026
View reviewed changes

@cubic-dev-ai cubic-dev-ai Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

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.

All reactions
Comment thread src/crates/Cargo.toml Resolved

Uh oh!

There was an error while loading. Please reload this page.

@vkalintiris
rust: drop the stale aws-lc pin comment from src/crates/Cargo.toml
bd6884a
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
@sonarqubecloud

sonarqubecloud Bot commented Nov 11, 2026

Copy link
Copy Markdown

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarQube Cloud

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@vkalintiris vkalintiris self-assigned this Nov 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@cubic-dev-ai cubic-dev-ai[bot] cubic-dev-ai[bot] left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@vkalintiris vkalintiris

Labels

None yet

Projects

None yet

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.

1 participant

@vkalintiris
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.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.