<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>emudhra.we-have-a-problem.com</title>
  <subtitle>Browse aymeric&#39;s, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.</subtitle>
  <id>https://aggr.aymericbeaumet.com/sources/emudhra.we-have-a-problem.com/</id>
  <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/sources/emudhra.we-have-a-problem.com/"/>
  <link rel="self" type="application/atom+xml" href="https://aggr.aymericbeaumet.com/sources/emudhra.we-have-a-problem.com/atom.xml"/>
  <updated>2026-10-20T13:58:33+00:00</updated>
  <author>
    <name>aymeric&#39;s</name>
  </author>
  <generator version="2.0.0" uri="https://github.com/aymericbeaumet/aggr">aggr</generator>
  <entry>
    <id>urn:aggr:item:3299c5f4dca0bca2b42342e8c786768c07775a08</id>
    <title type="text">EMudhra Intermediate CA Compromise</title>
    <link rel="alternate" type="text/html" href="https://aggr.aymericbeaumet.com/items/hnrss-org/2026-10-20-emudhra-intermediate-ca-compromise/"/>
    <link rel="via" type="text/html" href="https://emudhra.we-have-a-problem.com/"/>
    <published>2026-10-20T13:58:33+00:00</published>
    <updated>2026-10-20T13:58:33+00:00</updated>
    <author>
      <name>galadran</name>
    </author>
    <category term="news"/>
    <source>
      <title>Hacker News: Front Page</title>
    </source>
    <summary type="text">The private keys of eight eMudhra intermediate CA certificates have been compromised. They chain to roots trusted by the Mozilla, Microsoft, Apple and Chrome root programs and by many downstream trust stores. How do we know? To demonstrate…</summary>
    <content type="html">&lt;p&gt;The private keys of eight eMudhra intermediate CA certificates have been compromised. They chain to roots trusted by the Mozilla, Microsoft, Apple and Chrome root programs and by many downstream trust stores.&lt;/p&gt;
&lt;h2&gt;How do we know?&lt;/h2&gt;
&lt;p&gt;To demonstrate that the keys are compromised, the original reporter Wayne signed the following message with the private key of each of the eight intermediate CAs and reported it to the Root Program Teams on the 17th of October:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We have a problem here - Wayne&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://emudhra.we-have-a-problem.com/proof.zip&quot;&gt;proof.zip&lt;/a&gt; contains the message, and for each intermediate the certificate, its public key and a signature on the message. To verify with OpenSSL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;openssl x509 -in EM-DV-TLS-CA-G3B.crt.pem -noout -pubkey | diff - EM-DV-TLS-CA-G3B.pub.pem
openssl dgst -sha384 -verify EM-DV-TLS-CA-G3B.pub.pem -signature EM-DV-TLS-CA-G3B.sig message.txt
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What actions have been taken?&lt;/h2&gt;
&lt;p&gt;The root programs and many downstream trust stores have taken action to protect their users. The certificates have been blocked in Firefox and Chrome since the 17th of October, in Apple devices since the 19th and in Microsoft since the 20th.&lt;/p&gt;
&lt;p&gt;The issue was responsibly disclosed to downstream trust stores on the 19th of October. Many have already released updates or are in the process of releasing updates.&lt;/p&gt;
&lt;h2&gt;What are the consequences?&lt;/h2&gt;
&lt;p&gt;An attacker with the private key of any of the compromised intermediate CAs could impersonate any website or service.&lt;/p&gt;
&lt;p&gt;This has already been remediated by Mozilla, Microsoft, Apple, and Chrome for their users through their tools for distributing revocation information such as &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://blog.mozilla.org/security/2015/03/03/revoking-intermediate-certificates-introducing-onecrl/&quot;&gt;OneCRL&lt;/a&gt;, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://hacks.mozilla.org/2025/08/crlite-fast-private-and-comprehensive-certificate-revocation-checking-in-firefox/&quot;&gt;CRLite&lt;/a&gt; and &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://www.chromium.org/Home/chromium-security/crlsets/&quot;&gt;CRLSets&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The CA has also revoked the compromised intermediate certificates. However, many other clients do not consume revocation information and require software updates to ensure they no longer trust the compromised intermediates.&lt;/p&gt;
&lt;h2&gt;Does your client still trust the compromised intermediates?&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Intermediate CA&lt;/th&gt;
&lt;th&gt;Chains to&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;/table&gt;
&lt;p&gt;To check curl or other command-line clients, run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;curl https://dv-g3b-emudhra.we-have-a-problem.com/
curl https://dv-g3b-aaa-emudhra.we-have-a-problem.com/
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A certificate error means the client does not trust the compromised intermediates.&lt;/p&gt;
&lt;p&gt;To check a trust store offline, &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://emudhra.we-have-a-problem.com/chains.zip&quot;&gt;chains.zip&lt;/a&gt; contains the certificate chain served by each of the twelve hosts above in PEM format, with instructions for verifying them with OpenSSL.&lt;/p&gt;
&lt;h2&gt;What actions can users take?&lt;/h2&gt;
&lt;p&gt;Users should update their browsers and operating systems to the latest versions as soon as possible.&lt;/p&gt;
&lt;h3&gt;What about developer software and packages?&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Software&lt;/th&gt;
&lt;th&gt;Patched version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ubuntu ca-certificates&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://bugs.launchpad.net/ubuntu/+source/ca-certificates/+bug/2171507&quot;&gt;20260816ubuntu0.22.04.1, 20260816ubuntu0.24.04.1, 20260816ubuntu0.26.04.1, 20260816ubuntu0.26.10.1&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://groups.google.com/g/golang-announce/c/66pojueaQek&quot;&gt;1.27.3, 1.26.10&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Electron&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/electron/electron/releases/tag/v44.9.1&quot;&gt;44.9.1, 43.8.1, 42.11.16&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python certifi&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/certifi/python-certifi/releases/tag/2026.10.19&quot;&gt;2026.10.19&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust rustls-webpki&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/rustls/webpki/releases/tag/v%2F0.103.16&quot;&gt;0.103.16&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust webpki-roots / webpki-root-certs&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/rustls/webpki-roots/releases/tag/v%2F1.0.10&quot;&gt;1.0.10&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Homebrew ca-certificates&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/Homebrew/homebrew-core/blob/d02b8762f4a29859c47a635a0d2683223fea9812/Formula/c/ca-certificates.rb&quot;&gt;2026-09-25_1&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node.js&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/nodejs/node/pull/66871&quot;&gt;pending&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Composer ca-bundle&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/composer/ca-bundle/pull/154&quot;&gt;pending&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NSS&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://groups.google.com/a/mozilla.org/g/dev-tech-crypto/c/vSxZxnOMMvs&quot;&gt;3.131.1&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uv&lt;/td&gt;
&lt;td&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/astral-sh/uv/releases/tag/0.13.4&quot;&gt;0.13.4&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Add more at &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/galadran/we-have-a-problem.com&quot;&gt;github.com/galadran/we-have-a-problem.com&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Are there workarounds for macOS curl?&lt;/h3&gt;
&lt;p&gt;macOS blocks the compromised intermediates, but the built-in &lt;code&gt;/usr/bin/curl&lt;/code&gt; verifies certificates against &lt;code&gt;/etc/ssl/cert.pem&lt;/code&gt; without checking revocation, and that file has not been updated. To remove the affected roots from it, run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;sudo cp /etc/ssl/cert.pem /etc/ssl/cert.pem.bak &amp;amp;&amp;amp;
awk &amp;#39;/^(###|===) /{skip=0}
  /^=== .*\/CN=(AAA Certificate Services|emSign ECC Root CA - G3)$/{skip=1}
  !skip&amp;#39; /etc/ssl/cert.pem.bak | sudo tee /etc/ssl/cert.pem &amp;gt; /dev/null
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Are there workarounds for Linux?&lt;/h3&gt;
&lt;p&gt;Until a distribution ships an updated &lt;code&gt;ca-certificates&lt;/code&gt; package, expert users can distrust the affected roots in the system trust store. This is NOT recommended for ordinary users.&lt;/p&gt;
&lt;p&gt;On Debian and Ubuntu, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;sed -i \
  -e &amp;#39;s|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&amp;amp;|&amp;#39; \
  -e &amp;#39;s|^mozilla/Comodo_AAA_Services_root.crt|!&amp;amp;|&amp;#39; \
  /etc/ca-certificates.conf &amp;amp;&amp;amp; update-ca-certificates
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On Alpine, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;apk add ca-certificates &amp;amp;&amp;amp;
sed -i -e &amp;#39;s|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&amp;amp;|&amp;#39; \
  /etc/ca-certificates.conf &amp;amp;&amp;amp; update-ca-certificates
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On Fedora, RHEL, CentOS Stream, Rocky Linux, AlmaLinux and Amazon Linux 2023, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;d=/etc/pki/ca-trust/source/blocklist; [ -d $d ] || d=/etc/pki/ca-trust/source/blacklist
trust extract --overwrite --format=pem-bundle \
  --filter=&amp;#39;pkcs11:object=Comodo%20AAA%20Services%20root;type=cert&amp;#39; \
  $d/Comodo_AAA_Services_root.pem &amp;amp;&amp;amp;
trust extract --overwrite --format=pem-bundle \
  --filter=&amp;#39;pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert&amp;#39; \
  $d/emSign_ECC_Root_CA_-_G3.pem &amp;amp;&amp;amp;
update-ca-trust
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On openSUSE and SLES, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;d=/etc/pki/trust/blocklist; [ -d $d ] || d=/etc/pki/trust/blacklist
trust extract --format=pem-bundle \
  --filter=&amp;#39;pkcs11:object=Comodo%20AAA%20Services%20root;type=cert&amp;#39; \
  $d/Comodo_AAA_Services_root.pem &amp;amp;&amp;amp;
trust extract --format=pem-bundle \
  --filter=&amp;#39;pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert&amp;#39; \
  $d/emSign_ECC_Root_CA_-_G3.pem &amp;amp;&amp;amp;
update-ca-certificates
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On Arch Linux, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;trust extract --format=pem-bundle \
  --filter=&amp;#39;pkcs11:object=emSign%20ECC%20Root%20CA%20-%20G3;type=cert&amp;#39; \
  /etc/ca-certificates/trust-source/blocklist/emSign_ECC_Root_CA_-_G3.pem &amp;amp;&amp;amp;
update-ca-trust
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On NixOS, add to your configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;security.pki.caCertificateBlacklist = [
  &amp;quot;Comodo AAA Services root&amp;quot;
  &amp;quot;emSign ECC Root CA - G3&amp;quot;
];
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Are there workarounds for NetBSD?&lt;/h3&gt;
&lt;p&gt;On NetBSD 10 and later, run as root:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class=&quot;code-snippet&quot;&gt;certctl untrust /usr/share/certs/mozilla/all/emSign_ECC_Root_CA_-_G3.pem &amp;amp;&amp;amp;
certctl untrust /usr/share/certs/mozilla/all/Comodo_AAA_Services_root.pem
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;What actions can trust store operators take?&lt;/h2&gt;
&lt;p&gt;Please see &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://groups.google.com/a/mozilla.org/g/dev-security-policy/c/0R3XLJL6FuE&quot;&gt;this thread&lt;/a&gt; in Mozilla&#39;s dev-security-policy forum.&lt;/p&gt;
&lt;h2&gt;Which intermediates were compromised?&lt;/h2&gt;
&lt;p&gt;&lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://emudhra.we-have-a-problem.com/impacted-intermediates.json&quot;&gt;impacted-intermediates.json&lt;/a&gt; lists the eight intermediates and their Sectigo cross-signs. &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://emudhra.we-have-a-problem.com/roots.json&quot;&gt;roots.json&lt;/a&gt; lists the roots they chain to.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Site published by &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/dennisjackson&quot;&gt;Dennis Jackson&lt;/a&gt;. The source is on &lt;a target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot; href=&quot;https://github.com/galadran/we-have-a-problem.com&quot;&gt;GitHub&lt;/a&gt; and PRs are welcome.&lt;/p&gt;
</content>
  </entry>
</feed>
