Back to Intelligence

Fedora 44 rust-webpki-roots 1.0.11 Update: eMudhra Intermediate CA Compromise — Detection and Remediation Guide

SA
Security Arsenal Team
November 1, 2026
9 min read

When a certificate authority gets compromised, the blast radius is not limited to one vendor or one platform — it ripples through every root store, every TLS-validating application, and every system that implicitly trusts that CA's intermediates. That is exactly the situation Fedora 44 users are addressing with the latest rust-webpki-roots / webpki-root-certs 1.0.11 update, which ships a follow-up fix for the eMudhra Intermediate CA compromise.

This matters because webpki-roots is not some obscure package — it is the Mozilla root certificate bundle repackaged for the Rust webpki TLS validation library. Any Rust-based application, agent, CLI tool, or service on your Fedora 44 systems that validates TLS through rustls/webpki is consulting this root store to decide which certificates to trust. If a compromised intermediate remains in the chain of trust, an attacker holding fraudulently issued certificates can perform man-in-the-middle interception, impersonate legitimate services, and defeat the very mechanism your applications rely on to establish secure channels.

If you run Fedora 44 — on developer workstations, build systems, container base images, or infrastructure servers — this is a patch-now item.

Technical Analysis

What Happened

eMudhra, a certificate authority whose roots are (or were) trusted via the Mozilla root program, suffered a compromise of an intermediate CA. A compromised intermediate is particularly dangerous: intermediates are the workhorse certificates that actually sign end-entity TLS certificates, and they typically carry fewer usage restrictions than roots. An attacker in control of a compromised intermediate can mint valid-looking certificates for arbitrary domains — certificates that pass standard chain-of-trust validation on any system still trusting that intermediate.

The upstream webpki-root-certs project (which mirrors Mozilla's curated root store for Rust's webpki verifier) released version 1.0.11 containing a follow-up fix that removes or distrusts the compromised eMudhra intermediate. Fedora 44's rust-webpki-roots package has been rebased to this version so that Rust-based TLS consumers on the distribution inherit the corrected trust decisions.

Affected Products and Platforms

  • Fedora 44 systems with the rust-webpki-roots package installed (pre-1.0.11 versions)
  • Any application statically or dynamically consuming the Rust webpki/rustls root store from this package
  • Container images and CI/CD build environments based on Fedora 44 that embed the older root bundle
  • Downstream tooling that vendors or rebundles webpki-roots independently (audit your dependency trees — cargo-vendored copies will not be fixed by an OS-level update)

How the Attack Works (Defender's Perspective)

The threat model for a compromised intermediate CA is well understood and has been exercised in the wild repeatedly across the industry:

  1. Attacker controls the compromised intermediate's signing capability. They issue an end-entity certificate for a target domain — e.g., your internal SSO portal, an update server, or a SaaS API endpoint.
  2. Attacker positions for interception. This requires a network position (rogue Wi-Fi, compromised router, DNS hijack, BGP manipulation, or a malicious proxy) — the certificate alone is not sufficient, but it removes the final safety net.
  3. Victim's TLS client validates the chain. Because the fraudulent certificate chains to the compromised eMudhra intermediate, which the victim's root store still trusts, validation succeeds. No warnings. No errors.
  4. Traffic is decrypted or impersonated. Credentials, session tokens, and sensitive data are exposed; software updates can be trojanized at the delivery layer.

The critical point: this attack is silent at the endpoint. Standard TLS validation is the control that fails, which is why root-store hygiene is a security control, not just a maintenance task.

Exploitation Status

There is no CVE assigned in the Fedora advisory, and I will not invent one — CA compromise events are tracked through root program incident processes (Mozilla's CA Certificate module, CCADB) rather than the CVE system. What matters operationally: the compromise is confirmed, the upstream fix is released (1.0.11), and Fedora 44 has shipped the update. This is a known-attacker-capability scenario, not a theoretical one. Treat any unpatched system as capable of silently trusting attacker-controlled certificates.

Detection & Response

Detection for CA compromise is fundamentally about finding certificates in your environment that chain to the distrusted CA. If you have TLS inspection, Zeek/Suricata x509 logging, or endpoint certificate telemetry, you can hunt for eMudhra-issued certificates observed on the wire or in endpoint stores. Below are detection and hunting artifacts tuned for that purpose. A note of practitioner honesty: these hunts depend on you having certificate metadata telemetry — if you do not log x509 data today, that visibility gap is itself a finding worth remediating.

Sigma Rules

YAML
---
title: eMudhra-Issued Certificate Observed in TLS Traffic
id: 3f8a2b71-6c4d-4e5a-9b1f-2d7c8e9a0b3c
status: experimental
description: Detects TLS connections where the server certificate issuer or subject references eMudhra, indicating use of a certificate chaining to the compromised intermediate CA. Requires x509/TLS log telemetry (e.g., Zeek x509.log, Suricata TLS, or TLS inspection logs).
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-rust-webpki-roots
  - https://attack.mitre.org/techniques/T1557/002/
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.collection
  - attack.t1557.002
  - attack.t1040
logsource:
  category: network_connection
  product: zeek
detection:
  selection_issuer:
    Issuer|contains:
      - 'eMudhra'
      - 'emudhra'
      - 'e-Mudhra'
  selection_subject:
    Subject|contains:
      - 'eMudhra'
      - 'emudhra'
      - 'e-Mudhra'
  condition: 1 of selection_*
falsepositives:
  - Legacy eMudhra-issued certificates still in service pending reissuance by a trusted CA
level: high
---
title: Outdated rust-webpki-roots Package Present on Fedora 44
id: 8c1d4e62-9f3a-4b7c-8d2e-5a6b1c9f0e4d
status: experimental
description: Detects execution of dnf/rpm queries revealing a rust-webpki-roots package version older than 1.0.11 on Fedora systems, indicating an unpatched TLS root store vulnerable to trusting the compromised eMudhra intermediate.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-rust-webpki-roots
author: Security Arsenal
date: 2026/04/06
tags:
  - attack.discovery
logsource:
  category: process_creation
  product: linux
detection:
  selection_rpm:
    Image|endswith:
      - '/rpm'
      - '/dnf'
      - '/dnf5'
    CommandLine|contains:
      - 'webpki-roots'
  filter_patched:
    CommandLine|contains:
      - '1.0.11'
      - '1.0.12'
  condition: selection_rpm and not filter_patched
falsepositives:
  - Administrators verifying package versions during normal patching
level: medium

KQL — Microsoft Sentinel / Defender

KQL — Microsoft Sentinel / Defender
// Hunt for TLS sessions presenting certificates issued by eMudhra.
// Assumes Zeek/Suricata/TLS-inspection logs ingested via CommonSecurityLog (CEF)
// or Syslog. Adjust field names to match your connector's mapping.
union isfuzzy=true
    (CommonSecurityLog
    | where TimeGenerated > ago(14d)
    | where AdditionalExtensions has_any ("eMudhra", "emudhra", "e-Mudhra")
       or Message has_any ("eMudhra", "emudhra", "e-Mudhra")
    | project TimeGenerated, SourceIP, DestinationIP, DestinationHostName,
              Message, AdditionalExtensions, DeviceName),
    (Syslog
    | where TimeGenerated > ago(14d)
    | where SyslogMessage has_any ("eMudhra", "emudhra", "e-Mudhra")
       and SyslogMessage has_any ("issuer", "certificate", "x509", "tls")
    | project TimeGenerated, HostIP, HostName, ProcessName, SyslogMessage)
| sort by TimeGenerated desc

Velociraptor VQL

VQL — Velociraptor
-- Hunt Fedora/RHEL-family endpoints for an outdated rust-webpki-roots package
-- and enumerate any eMudhra references in system certificate bundles.
SELECT Fqdn,
       OS,
       rpm_query(Name="rust-webpki-roots") AS WebPKIRootsVersion,
       rpm_query(Name="webpki-root-certs") AS WebPKIRootCertsVersion,
       grep(path="/etc/pki/tls/certs/ca-bundle.crt",
            pattern="eMudhra") AS SystemBundleEMudhra,
       grep(path="/etc/ssl/certs/ca-certificates.crt",
            pattern="eMudhra") AS AltBundleEMudhra
FROM clients()

If your Velociraptor deployment does not have an rpm_query plugin available, substitute a shell exec approach using execve() with rpm -q rust-webpki-roots and parse the output — the goal is fleet-wide verification of package version against the 1.0.11 floor.

Remediation Script

Bash / Shell
#!/bin/bash
# Fedora 44 rust-webpki-roots / webpki-root-certs remediation and verification
# Run as root or via sudo. Exit non-zero on failure for CI/orchestration use.

set -euo pipefail

REQUIRED_VERSION="1.0.11"

echo "[*] Checking current rust-webpki-roots version..."
CURRENT=$(rpm -q --queryformat '%{VERSION}' rust-webpki-roots 2>/dev/null || echo "not-installed")

echo "    Installed: ${CURRENT}"

if [ "$CURRENT" = "not-installed" ]; then
    echo "[!] rust-webpki-roots not installed via RPM. Check for cargo-vendored copies:"
    find / -name "webpki-roots*" -path "*registry*" 2>/dev/null | head -20 || true
else
    if rpmdev-vercmp "$CURRENT" "$REQUIRED_VERSION" 2>/dev/null | grep -q '^-1' || \
       [ "$CURRENT" != "$REQUIRED_VERSION" ]; then
        echo "[!] Version below ${REQUIRED_VERSION} or mismatch — updating..."
        dnf update -y rust-webpki-roots webpki-root-certs 2>/dev/null || \
        dnf5 update -y rust-webpki-roots webpki-root-certs
        echo "[+] Post-update version: $(rpm -q --queryformat '%{VERSION}' rust-webpki-roots)"
    else
        echo "[+] Already at ${REQUIRED_VERSION} or later."
    fi
fi

echo "[*] Auditing cargo-vendored webpki-roots copies (OS update will NOT fix these)..."
if command -v cargo >/dev/null 2>&1; then
    grep -rl "webpki-roots" ~/.cargo/registry/src/ 2>/dev/null | \
        grep "Cargo.toml" | xargs grep -H '^version' 2>/dev/null | \
        grep -v "1\.0\.1[1-9]" | grep -v "1\.[1-9]" || echo "    No vulnerable vendored copies found."
fi

echo "[*] Checking system CA bundles for residual eMudhra trust..."
for bundle in /etc/pki/tls/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt; do
    if [ -f "$bundle" ] && grep -qi "emudhra" "$bundle"; then
        echo "[!] WARNING: eMudhra reference found in ${bundle} — review system trust store."
    fi
done

echo "[+] Verification complete."

Remediation

  1. Apply the Fedora update immediately. Update rust-webpki-roots / webpki-root-certs to 1.0.11 on all Fedora 44 systems: sudo dnf update rust-webpki-roots webpki-root-certs (or dnf5). Reboot or restart dependent Rust-based services afterward — many load the root store at process start and will keep trusting the compromised intermediate until restarted.
  2. Do not forget vendored copies. This is the trap that catches mature organizations: the OS package update does nothing for Rust binaries built with cargo that vendored webpki-roots at compile time. Identify affected binaries (cargo audit, SBOM review, or strings/grep on release binaries for the version string), rebuild against webpki-root-certs >= 1.0.11, and redeploy. Container images based on Fedora 44 must be rebuilt from the patched base.
  3. Audit your broader trust stores. Verify the compromised eMudhra intermediate has also been distrusted in your system OpenSSL bundles, Java keystores (cacerts), NSS databases (used by Chromium/Firefox-based tools), and any embedded trust stores in agents (EDR, monitoring, backup). Root-store fragmentation across the stack is where these compromises live on after patching.
  4. Rotate what the compromise may have exposed. If your hunt finds evidence that eMudhra-issued (or fraudulently issued lookalike) certificates were presented to your users or services during the compromise window, treat potentially intercepted sessions as exposed: force credential and session-token rotation for affected services, and review authentication logs for anomalies.
  5. Replace legitimately issued eMudhra certificates. Any of your own infrastructure certificates chaining to eMudhra must be reissued by a currently trusted CA and redeployed before browsers and clients distrust them and your services start failing validation.
  6. Close the telemetry gap. If the Sigma and KQL hunts above returned nothing because you have no x509/TLS certificate logging, fix that. Zeek's x509.log or TLS-inspection metadata forwarded to your SIEM is the only reliable way to detect a future CA compromise event at the point of exploitation rather than at the point of a vendor advisory.

Reference: Fedora rust-webpki-roots Advisory (LinuxSecurity)

Related Resources

Security Arsenal Incident Response Services AlertMonitor Platform Book a SOC Assessment incident-response Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.

Fedora 44 rust-webpki-roots 1.0.11 Update: eMudhra Intermediate CA Compromise — Detection and Remediation Guide | Security Arsenal | Security Arsenal