Skip to content

[v0.54.0-rh] fix(tls): reject distrusted emSign intermediate SPKIs in rustls-webpki (LOG-10499) - #323

Open
jcantrill wants to merge 1 commit into
ViaQ:v0.54.0-rhfrom
jcantrill:log10499-54
Open

jcantrill wants to merge 1 commit into
ViaQ:v0.54.0-rhfrom
jcantrill:log10499-54

Conversation

@jcantrill

@jcantrill jcantrill commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

Summary

Fixes bz#2561996 / LOG-10499, LOG-10500, LOG-10506 (openshift-logging-6.6): rustls-webpki below 0.103.16 accepts certificate paths containing the distrusted emSign intermediate public keys (their private keys are publicly known) whenever the configured trust anchors allow such paths.

Two changes:

  1. Cargo.lock: bump the rustls 0.23 line's copy rustls-webpki 0.103.10 → 0.103.16 (the upstream fixed release; forces aws-lc-rs 1.19.0 / aws-lc-sys 0.47.0, which 0.103.16 requires). This covers the GCP sink OAuth token fetch path (google-cloud-auth → reqwest 0.12 rustls-only → rustls 0.23).
  2. patch/rustls-webpki-0.102: fork of 0.102.8 carrying the upstream 0.103.16 distrusted-SPKI rejection backported (8 emSign SPKI blobs + two checks in build_chain_inner + Error::CertDistrusted), following the existing patch/openssl and patch/hyper convention. This covers the tonic 0.11 OTLP gRPC TLS path (rustls 0.22 → rustls-webpki 0.102.8). The 0.101/0.102 lines have no upstream fixed release.

Residual risk (documented, accepted)

The 0.101.7 copy (vector-api-client websockets for vector top/tap, rustls 0.21) remains on an unfixed line. It is admin tooling connecting to the local API, not part of the collector data path. Full remediation requires consolidating on rustls 0.23. The pending ca-certificates errata for CVE-2026-114406 (removes the emSign root from the system trust store) also removes the trust anchor this flaw needs.

Verification

  • Forked crate: cargo test --features "alloc std ring" --lib — 64/64 pass, including the backported distrusted_spki regression test; also compiles with the aws_lc_rs feature
  • Full cargo check --no-default-features --features ocp-logging passes in the builder container environment (host lacks openssl-devel)
  • cargo tree -i rustls-webpki confirms 0.102.8 resolves to the patched path crate; 0.103.16 from the registry

Companion PR to the v0.47.0-rh backport of the same fix.

🤖 Generated with Claude Code

…i (LOG-10499)

Backport the upstream rustls-webpki 0.103.16 distrusted-SPKI rejection
(bz#2561996) into a forked 0.102.8 crate under patch/, and bump the
0.103-line copy to the fixed 0.103.16 release.

rustls-webpki versions below 0.103.16 accept certificate paths containing
the distrusted emSign intermediate public keys (their private keys are
publicly known) whenever the configured trust anchors allow such paths.
In the ocp-logging build the crate is reachable through:
- google-cloud-auth / reqwest 0.12 (GCP sink OAuth token fetch, rustls
  0.23 -> rustls-webpki 0.103.x, fixed by the lockfile bump to 0.103.16)
- tonic 0.11 (OTLP gRPC TLS, rustls 0.22 -> rustls-webpki 0.102.8, fixed
  by the forked crate; the 0.101/0.102 lines have no upstream fixed
  release)

The residual 0.101.7 copy (vector-api-client websockets for vector
top/tap, rustls 0.21) remains on an unfixed line; it is admin tooling
that connects to the local API and is not part of the collector data
path. Full remediation of that copy requires consolidating on
rustls 0.23.

Fixes: LOG-10499, LOG-10500, LOG-10506 (and LOG-10502 via v0.47.0-rh)

Co-Authored-By: Claude Code <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 30, 2026

Copy link
Copy Markdown

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: Organization UI
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 2efab546-0de1-49f8-8d1a-870dd079a066

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

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

@openshift-ci

openshift-ci Bot commented Oct 30, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jcantrill

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jcantrill

Copy link
Copy Markdown
Member Author

/hold

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant