8000 SECURITY: gws, codex, zellij, xh, weathr, yazi, zola, gurk, zizmor, nushell: lock rustls-webpki 0.103.16 (CVE-2026-111943) by bryan-minimal · Pull Request #955 · gominimal/pkgs · GitHub
[go: up one dir, main page]

Skip to content

SECURITY: gws, codex, zellij, xh, weathr, yazi, zola, gurk, zizmor, nushell: lock rustls-webpki 0.103.16 (CVE-2026-111943) - #955

Merged
bryan-minimal merged 1 commit into
mainfrom
security/cve-2026-111943-rustls-webpki-system-roots
Oct 21, 2026
Merged

bryan-minimal merged 1 commit into
mainfrom
security/cve-2026-111943-rustls-webpki-system-roots

Conversation

@bryan-minimal
Copy link
Copy Markdown
Member

What

CVE-2026-111943. The private keys of eight eMudhra intermediate CAs are recoverable from their public certificates (Mozilla bug 2083449).

These ten verify TLS against the system store: rustls-platform-verifier / rustls-native-certs. The ca-certificates rebuild (#948) fixes the roots they see at runtime. But each one compiles in rustls-webpki older than 0.103.16 (RUSTSEC-2026-0382), so it lacks the new DISTRUSTED_SPKIS block on the 8 intermediates. A chain through a compromised intermediate still validates wherever a trusted path to it exists.

Companion to #953, which covers the packages that bundle roots by default and uses the same mechanism.

package version rustls-webpki also moved
gws 0.22.5 0.103.10 → .16
codex 0.155.0 0.103.13 → .16 webpki-roots + webpki-root-certs 1.0.5 → 1.0.10; aws-lc-rs 1.16.2 → 1.18.2, aws-lc-sys 0.39 → 0.46; see note
zellij 0.45.1 0.103.13 → .16 aws-lc-rs 1.16.2 → 1.18.2, aws-lc-sys 0.39 → 0.46, pkg-config 0.3.25 → 0.3.34
xh 0.26.2 0.103.13 → .16 webpki-root-certs 1.0.9 → 1.0.10; aws-lc-rs 1.17.3 → 1.18.2, aws-lc-sys 0.43 → 0.46
weathr 1.4.0 0.103.9 → .16 webpki-root-certs 1.0.6 → 1.0.10; aws-lc-rs 1.15.4 → 1.18.2, aws-lc-sys 0.37.1 → 0.46 (+ pkg-config 0.3.34)
yazi 26.9.1 0.103.15 → .16 webpki-root-certs 1.0.9 → 1.0.10
zola 0.23.6 0.103.15 → .16 webpki-root-certs 1.0.9 → 1.0.10
gurk 0.10.2 0.103.15 → .16 webpki-root-certs 1.0.9 → 1.0.10
zizmor 1.30.1 0.103.13 → .16 webpki-root-certs 1.0.5 → 1.0.10; aws-lc-rs 1.17.0 → 1.18.2, aws-lc-sys 0.41 → 0.46 (+ pkg-config 0.3.34)
nushell 0.115.1 0.103.13 → .16 webpki-roots 1.0.7, webpki-root-certs 1.0.6 → 1.0.10; aws-lc-rs 1.16.2 → 1.18.2, aws-lc-sys 0.39 → 0.46

Why aws-lc moves: rustls-webpki 0.103.16 requires aws-lc-rs ^1.18 when its aws-lc-rs feature is on, and these locks have rustls's default aws-lc provider. For those I ran cargo update -p aws-lc-rs -p aws-lc-sys -p rustls-webpki@<old>, adding -p pkg-config for zellij, whose curl-sys held pkg-config at 0.3.25. Nothing else re-resolved. The other locks are hand edits: the version and checksum lines plus the "name version" back-references.

codex note: upstream's codex-rs/Cargo.lock at rust-v0.155.0 lists every workspace member as 0.0.0, while the tagged Cargo.toml says 0.155.0. So that lock was never --locked-clean; our current unlocked build rewrote it in the sandbox. This patch carries those ~150 path-member 0.0.0 → 0.155.0 lines too, which is why it is long. Its registry changes are only the four crates in the table.

No upstream release fixes this yet. rustls-webpki 0.103.16 was published 2026-10-20 08:58 UTC.

How

The mechanism is the same as #953:

  1. packages/<p>/cve-2026-111943-webpki-lock.patch is applied by name with patch -Np1. patch is added as a build dep. codex applies it after cd codex-rs. zola and nushell apply it before their getrandom shim.
  2. A fail-closed grep exits 1 unless rustls-webpki 0.103.16 is locked and no rustls-webpki 0.103.0–15 or webpki-roots/webpki-root-certs 1.0.0–9 remains.
  3. cargo build --locked. yazi already used --locked.

A version bump that keeps the patch fails at patch. Drop the patch on the first upstream release that locks 0.103.16, or regenerate it if that release is still unfixed.

Verified, and how

  • Sources: every source was fetched from its build.ncl url + sha256, and the sha256 matched.
  • Patches apply: each patch applies with patch -Np1 to the pristine lock, and the result is byte-identical to the edited lock.
  • Lock is consistent: cargo metadata --locked succeeds on every patched tree. I ran only resolves, never a compile, from outside the downloaded tree.
  • Fail-closed check: the exact snippet passes on each patched lock and exits 1 on each pristine lock.
  • The fix reaches the shipped binary: cargo tree -e normal --target x86_64-unknown-linux-gnu -i rustls-webpki puts rustls-webpki in the Linux normal-dependency graph of all ten.
    • In xh, weathr, yazi, zola, gurk, zizmor and nushell it comes through both rustls and rustls-platform-verifier.
    • codex also pulls webpki-roots through hyper-rustls, rama-tls-rustls and sqlx-core. nushell pulls it through nu-command (feature-gated) → ureq.
  • Blast radius: MINIMAL_SCIENCE_MODE=1 mip dump --packages --arch amd64, diffed against main, changes exactly these 10 spec hashes and nothing downstream.
  • Formatting: nickel format leaves every build.ncl unchanged, and sh -n passes.

Unverified

Not in this PR

atuin, typst and maki use native-tls / OpenSSL, with no rustls-webpki in their locks, so the system ca-certificates fix covers them. maki builds a vendored openssl-src (300.6.1+3.6.3); whether its compiled-in OPENSSLDIR finds our system bundle is a separate question.

🤖 Generated with Claude Code

…ushell: lock rustls-webpki 0.103.16 (CVE-2026-111943)

These verify TLS against the system store (fixed at runtime by the
ca-certificates update), but compile in rustls-webpki < 0.103.16, which
lacks the distrust list for the eight compromised eMudhra intermediates
(RUSTSEC-2026-0382). Where a webpki-roots / webpki-root-certs is also in
the lock it moves to 1.0.10 (RUSTSEC-2026-0383).

Same mechanism as the bundled-roots PR: a committed Cargo.lock patch
applied by name with `patch -Np1`, a fail-closed version check, and
`cargo build --locked`. Seven of the ten also move aws-lc-rs to 1.18.2 /
aws-lc-sys to 0.46.0, which rustls-webpki 0.103.16 requires when its
aws-lc-rs feature is on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
bryan-minimal requested a review from a team as a code owner October 20, 2026 22:57
@coderabbitai
coderabbitai Bot commented Oct 20, 2026
Copy link
Copy Markdown
Contributor

Warning

Review limit reached

  • Run on-demand review

This review includes 30 billable files and costs up to $7.50.

  • Ask an admin to make reviews automatic

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Or wait 16 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available. Your 35 included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: gominimal/pkgs/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 50247f31-06b9-47de-b052-d7bb9f5d3558
📥 Commits

Reviewing files that changed from the base of the PR and between 24009b6 and 5794317.

📒 Files selected for processing: 30
  • packages/codex/build.ncl
  • packages/codex/build.sh
  • packages/codex/cve-2026-111943-webpki-lock.patch
  • packages/gurk/build.ncl
  • packages/gurk/build.sh
  • packages/gurk/cve-2026-111943-webpki-lock.patch
  • packages/gws/build.ncl
  • packages/gws/build.sh
  • packages/gws/cve-2026-111943-webpki-lock.patch
  • pack 8000 ages/nushell/build.ncl
  • packages/nushell/build.sh
  • packages/nushell/cve-2026-111943-webpki-lock.patch
  • packages/weathr/build.ncl
  • packages/weathr/build.sh
  • packages/weathr/cve-2026-111943-webpki-lock.patch
  • packages/xh/build.ncl
  • packages/xh/build.sh
  • packages/xh/cve-2026-111943-webpki-lock.patch
  • packages/yazi/build.ncl
  • packages/yazi/build.sh
  • packages/yazi/cve-2026-111943-webpki-lock.patch
  • packages/zellij/build.ncl
  • packages/zellij/build.sh
  • packages/zellij/cve-2026-111943-webpki-lock.patch
  • packages/zizmor/build.ncl
  • packages/zizmor/build.sh
  • packages/zizmor/cve-2026-111943-webpki-lock.patch
  • packages/zola/build.ncl
  • packages/zola/build.sh
  • packages/zola/cve-2026-111943-webpki-lock.patch
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@bryan-minimal
bryan-minimal added this pull request to the merge queue Oct 21, 2026
@bryan-minimal
bryan-minimal removed this pull request from the merge queue due to a manual request Oct 21, 2026
@bryan-minimal
bryan-minimal added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit 65393ff Oct 21, 2026
11 checks passed
@bryan-minimal
bryan-minimal deleted the security/cve-2026-111943-rustls-webpki-system-roots branch October 21, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

0