{
  "schemaVersion": "guard-threat-campaign/v1",
  "id": "HGTC-2026-BEB0B59F",
  "slug": "cve-2026-111943-emudhra-ca-key-compromise-go-certifi-node-java",
  "title": "eMudhra CA keys leaked: forged HTTPS certificates still pass in unpatched Go, Python, Node.js and Java (CVE-2026-111943)",
  "aliases": [
    "CVE-2026-111943",
    "GO-2026-6809",
    "GHSA-6q48-6c7w-9gw2",
    "eMudhra intermediate CA compromise",
    "emSign ECC Root CA - G3 distrust",
    "EM DV TLS CA - G3B",
    "Mozilla Bug 2083449",
    "we have a problem eMudhra"
  ],
  "summary": "eMudhra created eight intermediate CAs (EM DV, OV and EV TLS CA G3B and G3C, plus EM OV CS CA G3B and G3C) at an April 30, 2025 key ceremony with P-384 private keys below 256, so anyone can recover them from the public certificates. Sectigo cross-signed all eight under AAA Certificate Services. A researcher proved key control to the root programs on October 17, 2026. Chrome, Firefox, Apple and Microsoft blocked the intermediates through CRLSet, OneCRL and their own channels between October 17 and 20, eMudhra revoked them on October 18 and Sectigo revoked the cross-signs on October 19. Mozilla and Chrome are removing emSign ECC Root CA - G3. Clients outside the browser that skip revocation and Certificate Transparency, including Go, Python certifi, Node.js, Java cacerts, Linux ca-certificates and macOS /etc/ssl/cert.pem, accept forged certificates for any hostname until updated: Go 1.27.3/1.26.10 (CVE-2026-111943), certifi 2026.10.18+, Node.js 22.23.4/24.22.1/26.12.1, NSS 3.131.1 and distro ca-certificates updates.",
  "status": "published",
  "severity": "critical",
  "confidence": "high",
  "uncertainty": "No forged certificate from these keys has been observed in Certificate Transparency or reported in use, but several people recovered the keys independently and unlogged certificates would work against non-CT clients. eMudhra's root-cause investigation is ongoing. Java vendor and Bun updates were pending at time of writing.",
  "firstObservedAt": "2026-10-17T18:05:00Z",
  "lastObservedAt": "2026-10-21T15:59:56Z",
  "publishedAt": "2026-10-21T16:05:05.791Z",
  "reviewedAt": "2026-10-21T16:04:54.521Z",
  "expiresAt": "2026-10-21T15:59:56Z",
  "reviewer": "HOL Guard Security Publishing",
  "sources": [
    {
      "id": "mozilla-bug-2083449",
      "label": "Mozilla Bug 2083449: eMudhra private key compromise of intermediate certificates",
      "url": "https://bugzilla.mozilla.org/show_bug.cgi?id=2083449",
      "sourceType": "research",
      "observedAt": "2026-10-18T12:06:00Z"
    },
    {
      "id": "chrome-root-program-post",
      "label": "Chrome and Android security teams: protecting users from compromised eMudhra intermediate CA certificates",
      "url": "https://blog.google/security/protecting-chrome-and-android-users-from-compromised-emudhra-intermediate-ca-certificates/",
      "sourceType": "vendor_advisory",
      "observedAt": "2026-10-20T00:00:00Z"
    },
    {
      "id": "mozilla-security-blog",
      "label": "Mozilla Security Blog: protecting Firefox users following the compromise of eMudhra intermediate certificates",
      "url": "https://blog.mozilla.org/security/2026/10/20/protecting-firefox-users-following-the-compromise-of-emudhra-intermediate-certificates/",
      "sourceType": "vendor_advisory",
      "observedAt": "2026-10-20T00:00:00Z"
    },
    {
      "id": "mozilla-trust-store-notice",
      "label": "Mozilla notice to trust store operators (oss-security)",
      "url": "https://www.openwall.com/lists/oss-security/2026/10/20/1",
      "sourceType": "research",
      "observedAt": "2026-10-20T00:00:00Z"
    },
    {
      "id": "go-issue-82345",
      "label": "Go issue 82345: crypto/x509 mitigation for a specific Certificate Authority",
      "url": "https://go.dev/issue/82345",
      "sourceType": "maintainer_advisory",
      "observedAt": "2026-10-19T21:38:02Z"
    },
    {
      "id": "go-vuln-2026-6809",
      "label": "Go vulnerability GO-2026-6809 (CVE-2026-111943)",
      "url": "https://pkg.go.dev/vuln/GO-2026-6809",
      "sourceType": "vulnerability_database",
      "observedAt": "2026-10-21T15:59:56Z"
    },
    {
      "id": "go-release-announce",
      "label": "Go 1.27.3 and Go 1.26.10 security release announcement",
      "url": "https://www.openwall.com/lists/oss-security/2026/10/20/29",
      "sourceType": "maintainer_advisory",
      "observedAt": "2026-10-20T02:11:31Z"
    },
    {
      "id": "certifi-ghsa-6q48",
      "label": "certifi GHSA-6q48-6c7w-9gw2: removal of emSign root certificate",
      "url": "https://github.com/certifi/python-certifi/security/advisories/GHSA-6q48-6c7w-9gw2",
      "sourceType": "maintainer_advisory",
      "observedAt": "2026-10-20T00:00:00Z"
    },
    {
      "id": "nodejs-oct-2026-security",
      "label": "Node.js October 21, 2026 security releases",
      "url": "https://nodejs.org/en/blog/vulnerability/october-2026-security-releases",
      "sourceType": "maintainer_advisory",
      "observedAt": "2026-10-21T00:00:00Z"
    },
    {
      "id": "emudhra-statement",
      "label": "eMudhra statement on the certificate security incident",
      "url": "https://emudhra.com/en/post/certificate-security-incident",
      "sourceType": "vendor_advisory",
      "observedAt": "2026-10-21T15:59:56Z"
    },
    {
      "id": "disclosure-tracker",
      "label": "eMudhra intermediate CA compromise disclosure tracker and client test hosts",
      "url": "https://emudhra.we-have-a-problem.com/",
      "sourceType": "research",
      "observedAt": "2026-10-20T00:00:00Z"
    },
    {
      "id": "bellsoft-java-truststores",
      "label": "BellSoft: distrusting compromised eMudhra intermediates in Java",
      "url": "https://bell-sw.com/blog/distrusting-compromised-emudhra-intermediates-in-java/",
      "sourceType": "research",
      "observedAt": "2026-10-21T15:59:56Z"
    },
    {
      "id": "hol-blog-analysis",
      "label": "HOL operator write-up: eMudhra CA keys leaked (CVE-2026-111943)",
      "url": "https://hol.org/blog/cve-2026-111943-emudhra-ca-key-compromise-go-certifi-node-java",
      "sourceType": "other_primary",
      "observedAt": "2026-10-21T15:59:56Z"
    }
  ],
  "artifacts": [
    {
      "id": "go-stdlib-crypto-x509",
      "artifactClass": "package",
      "ecosystem": "go",
      "name": "stdlib (crypto/x509)",
      "version": "< 1.26.10, >= 1.27.0-0 < 1.27.3",
      "defanged": false
    },
    {
      "id": "python-certifi",
      "artifactClass": "package",
      "ecosystem": "pypi",
      "name": "certifi",
      "version": ">= 2019.03.09, < 2026.10.18",
      "defanged": false
    },
    {
      "id": "nodejs-runtime",
      "artifactClass": "package",
      "ecosystem": "generic",
      "name": "Node.js",
      "version": "< 22.23.4 (22.x), < 24.22.1 (24.x), < 26.12.1 (26.x)",
      "defanged": false
    },
    {
      "id": "mozilla-nss",
      "artifactClass": "package",
      "ecosystem": "generic",
      "name": "Mozilla NSS",
      "version": "< 3.131.1",
      "defanged": false
    }
  ],
  "indicators": [],
  "timeline": [
    {
      "id": "emudhra-key-ceremony-weak-p384-keys",
      "occurredAt": "2025-04-30T15:35:00Z",
      "eventType": "other",
      "summary": "eMudhra key ceremony creates 24 intermediates; the eight P-384 keys in the B and C series get private keys below 256.",
      "sourceIds": [
        "mozilla-bug-2083449",
        "emudhra-statement"
      ]
    },
    {
      "id": "sectigo-cross-signs-weak-intermediates",
      "occurredAt": "2025-05-14T00:00:00Z",
      "eventType": "other",
      "summary": "Sectigo cross-signs all eight intermediates under AAA Certificate Services.",
      "sourceIds": [
        "disclosure-tracker",
        "mozilla-bug-2083449"
      ]
    },
    {
      "id": "researcher-reports-key-control",
      "occurredAt": "2026-10-17T18:05:00Z",
      "eventType": "first_observed",
      "summary": "Researcher reports proof of private-key control for all eight intermediates to Apple, Chrome, Microsoft, Mozilla and eMudhra.",
      "sourceIds": [
        "mozilla-bug-2083449",
        "chrome-root-program-post"
      ]
    },
    {
      "id": "chrome-crlset-blocks-tls-keys",
      "occurredAt": "2026-10-17T19:45:00Z",
      "eventType": "vendor_action",
      "summary": "Chrome lands a CRLSet update blocking the six TLS intermediates by SPKI hash.",
      "sourceIds": [
        "chrome-root-program-post"
      ]
    },
    {
      "id": "mozilla-recovers-keys-independently",
      "occurredAt": "2026-10-17T21:48:00Z",
      "eventType": "other",
      "summary": "Mozilla independently recovers the private keys, confirming the key generation flaw.",
      "sourceIds": [
        "mozilla-bug-2083449"
      ]
    },
    {
      "id": "firefox-onecrl-block-complete",
      "occurredAt": "2026-10-17T22:59:00Z",
      "eventType": "vendor_action",
      "summary": "Firefox OneCRL block reaches all users with standard settings.",
      "sourceIds": [
        "mozilla-bug-2083449",
        "mozilla-security-blog"
      ]
    },
    {
      "id": "emudhra-revokes-eight-intermediates",
      "occurredAt": "2026-10-18T09:24:32Z",
      "eventType": "vendor_action",
      "summary": "eMudhra revokes all eight intermediates with reason caCompromise (09:24 to 09:39 UTC).",
      "sourceIds": [
        "mozilla-bug-2083449"
      ]
    },
    {
      "id": "certifi-2026-10-18-drops-emsign-ecc-g3",
      "occurredAt": "2026-10-18T16:21:06Z",
      "eventType": "registry_action",
      "summary": "certifi 2026.10.18 published to PyPI without emSign ECC Root CA - G3.",
      "sourceIds": [
        "certifi-ghsa-6q48"
      ]
    },
    {
      "id": "sectigo-revokes-cross-signs",
      "occurredAt": "2026-10-19T10:35:36Z",
      "eventType": "vendor_action",
      "summary": "Sectigo revokes the eight cross-signed certificates; Apple blocks the intermediates the same day.",
      "sourceIds": [
        "mozilla-bug-2083449",
        "disclosure-tracker"
      ]
    },
    {
      "id": "mozilla-notifies-trust-store-operators",
      "occurredAt": "2026-10-19T20:42:00Z",
      "eventType": "disclosure",
      "summary": "Mozilla notifies downstream trust store operators and recommends distrusting the affected roots where intermediates cannot be blocked.",
      "sourceIds": [
        "mozilla-trust-store-notice"
      ]
    },
    {
      "id": "go-1-27-3-and-1-26-10-released",
      "occurredAt": "2026-10-20T02:11:31Z",
      "eventType": "vendor_action",
      "summary": "Go 1.27.3 and 1.26.10 add a crypto/x509 denylist for the compromised keys (CVE-2026-111943).",
      "sourceIds": [
        "go-release-announce",
        "go-issue-82345",
        "go-vuln-2026-6809"
      ]
    },
    {
      "id": "public-disclosure-and-root-removal",
      "occurredAt": "2026-10-20T00:00:00Z",
      "eventType": "disclosure",
      "summary": "October 20 (date only): public disclosure; Mozilla and Chrome announce emergency removal of emSign ECC Root CA - G3, NSS 3.131.1 and Firefox 158.0.1 ship, Microsoft blocks the intermediates.",
      "sourceIds": [
        "mozilla-security-blog",
        "chrome-root-program-post",
        "disclosure-tracker"
      ]
    },
    {
      "id": "nodejs-security-release-blocks-keys",
      "occurredAt": "2026-10-21T10:38:20Z",
      "eventType": "vendor_action",
      "summary": "Node.js 22.23.4, 24.22.1 and 26.12.1 reject chains with the blocked keys and update roots to NSS 3.131.1.",
      "sourceIds": [
        "nodejs-oct-2026-security"
      ]
    },
    {
      "id": "hol-operator-writeup-published",
      "occurredAt": "2026-10-21T15:59:56Z",
      "eventType": "guard_update",
      "summary": "HOL publishes the operator write-up with per-runtime fix and check commands.",
      "sourceIds": [
        "hol-blog-analysis"
      ]
    }
  ],
  "coverage": [
    {
      "assertionId": "guard-tls-trust-store-validation",
      "relationship": "not_covered",
      "limitation": "HOL Guard does not inspect TLS trust stores or certificate chains; this campaign is guidance only."
    }
  ],
  "policies": [],
  "limitations": [
    "Up-to-date Chrome, Firefox, Safari and Edge users are protected and enforce Certificate Transparency.",
    "Certificates under eMudhra's RSA root emSign Root CA - G1 are not affected by this distrust.",
    "eMudhra's India DSC and eSign services are reported as unaffected.",
    "This is a CA key-generation failure, not a code bug in Go, OpenSSL or Python."
  ],
  "correctionHref": "/guard/security/campaigns/cve-2026-111943-emudhra-ca-key-compromise-go-certifi-node-java/corrections"
}
