Zurück

Reagieren Sie auf den eMudhra CA-Kompromiss

Im Oktober 2026 wurden acht eMudhra-Intermediate-Zertifizierungsstellen (CAs) gefunden, deren private Schlüssel von jedem ermittelt werden können. Verwende diesen Leitfaden, um die Vertrauensspeicher auf deinen Geräten zu finden, die weiterhin den kompromittierten Wurzeln vertrauen, und um sie zu bereinigen.


 

Funktionalität

Übersicht

Browser und Betriebssysteme blockierten die acht Zwischenzertifikate innerhalb weniger Tage. Alles, was eine eigene Kopie der vertrauenswürdigen Wurzeln enthält, erhielt diese Blockierung nicht: Kommandozeilenwerkzeuge, Laufzeitumgebungen und Agenten vertrauen gefälschten Zertifikaten, bis sich ihre Root-Datei ändert.

Factorial IT entfernt die beiden kompromittierten Wurzeln aus dem CA-Bündel des Factorial IT-Agenten auf jedem registrierten Mac-, Windows- und Linux-Gerät. Neue Registrierungspakete kommen ohne sie. Ein Gerät, das offline ist, erhält die Korrektur, sobald es sich wieder verbindet. Es gibt nichts, was du bezüglich des Agenten tun musst.

Jeder andere Vertrauensspeicher gehört zum Betriebssystem, zu den Werkzeugen deines Teams oder zu deinen eigenen Apps, daher liegt das Timing bei dir. Du hast zwei Möglichkeiten:

  • Ein benutzerdefinierter Agent, Schließe die eMudhra CA-Exposition, der vor jeder Änderung einen Administrator fragt.
  • Von Hand, mit den Erkennungsberichten und Bereinigungsskripten von Fleet.

 

Was passiert ist

Im April 2025 erstellte eMudhra die acht privaten Schlüssel als Ganzzahlen kleiner als 256, während sie zufällige 384-Bit-Zahlen hätten sein sollen. Jeder Schlüssel kann daher in Millisekunden wiederhergestellt werden. Mit einem Schlüssel kann jeder ein Zertifikat für jeden Hostnamen signieren. Sechs der Zwischenzertifikate stellen TLS-Zertifikate aus; die anderen beiden signieren Code.

Jedes Intermediate existiert zweimal: einmal ausgestellt von eMudhras emSign-Wurzeln und einmal als Cross-Sign von Sectigos AAA Certificate Services-Wurzel. Insgesamt müssen 16 Zertifikate als nicht vertrauenswürdig eingestuft werden. Zwei Wurzeln müssen auch aus jeder CA-Datei entfernt werden, die sie noch enthält: emSign ECC Root CA - G3 und AAA Certificate Services.

Datum (2026) Ereignis
17. Oktober Ein Forscher meldet die Schlüssel. Chrome und Firefox blockieren die 16 Zertifikate.
18. Oktober eMudhra widerruft die acht Zwischenzertifikate. Die Cross-Signs von Sectigo werden am 19. Oktober widerrufen.
20. Oktober Microsoft liefert die Blockierung über die automatischen Vertrauenslisten-Updates von Windows aus.
Bis 22. Oktober Apple liefert die Blockierung auf macOS, iOS und iPadOS aus.

Keines der TLS-Zertifikate dieser Zwischenzertifikate erscheint in den Certificate Transparency (CT)-Protokollen. Browser, die CT durchsetzen, waren daher nie anfällig für Angriffe. Die meisten anderen Clients, darunter curl, ignorieren CT. Ein Angreifer muss auch auf dem Netzwerkpfad sitzen, zum Beispiel über ein bösartiges WLAN-Netzwerk, einen gehackten Router oder Proxy oder manipuliertes DNS.

 

Was bleibt exponiert

Die Apple- und Microsoft-Blockierungen schützen nur Software, die über das Betriebssystem verifiziert oder den Widerruf überprüft. Software mit ihrer eigenen Datei von Wurzeln akzeptiert weiterhin gefälschte Ketten, bis jemand diese Datei aktualisiert.

Vertrauenspfad Durch die Anbieter-Blockierungen abgedeckt Schlimmster Fall, wenn es so bleibt Wer es behebt
Browser und Apps, die über das Betriebssystem verifizieren (Safari, Mail, Windows Schannel, Go auf macOS und Windows) Ja, sobald das OS-Update installiert ist Keine Nichts über OS-Updates hinaus
Das CA-Bündel des Factorial IT-Agenten Nein Ein Impostor Factorial IT-Server sammelt Abfrageergebnisse und den Node-Schlüssel des Geräts und sendet seine eigenen Abfragen Factorial IT
macOS-Kommandozeilenwerkzeuge (curl, git, python3, perl, ruby, openssl lesen /etc/ssl/cert.pem) Nein: Apple hat diese Datei nicht aktualisiert Passwörter und API-Tokens werden im Transit gelesen; curl | sh-Installer werden gegen Malware ausgetauscht Du
Linux-Systembündel (ca-certificates) Nur nach dem Paket-Update. Am 21. Oktober lieferten Rocky Linux 9 und Fedora 44 stabil noch die Wurzel aus. Jedes OpenSSL- und GnuTLS-Werkzeug auf dem Gerät kann sich ausgeben: Backups, Webhooks, Überwachungsagenten, Datenbank-Clients Du
Windows-Geräte, die das Update von Microsoft verpasst haben (offline, nur WSUS oder durch Gruppenrichtlinien blockiert) Nein Gefälschte TLS-Zertifikate werden akzeptiert; Malware, die mit den beiden Code-Signing-Zwischenzertifikaten signiert ist, besteht die Signaturprüfungen Du
Node.js und Electron Nein: offizielle Builds betten einen Wurzel-Snapshot ein, der bei der Veröffentlichung festgelegt wurde API-Schlüssel und Service-zu-Service-Anrufe gehen an den Angreifer, selbst auf einem gepatchten Gerät Du
certifi und pip, die mit pip installiert wurden Nein: jeder trägt seine eigenen Wurzeln Dasselbe wie Node.js Du
Go-Binärdateien auf Linux Nein: Go liest das Systembündel dort Cloud-CLIs, kubectl und terraform senden ihre Anmeldeinformationen an eine Impostor-API Du
Container, Server und CI-Images Nein: jedes Image trägt sein eigenes Bündel Dasselbe wie das Linux-Systembündel, in jedem Image, das vor der Korrektur erstellt wurde Du

Pakete, die du mit apt oder dnf installierst, sind nicht gefährdet, da sie GPG-signiert sind.

 

Was Factorial IT für dich behebt

Der Factorial IT-Agent bringt sein eigenes CA-Bündel mit: /opt/orbit/certs.pem auf macOS und Linux sowie C:\Program Files\Orbit\certs.pem auf Windows. Die osquery-Komponente verlässt sich auf diese Datei, nicht auf den OS-Vertrauensspeicher, um mit deinem Factorial IT-Server zu kommunizieren. Die Datei wird einmal geschrieben, wenn der Agent installiert wird, und nie aktualisiert. Deshalb erreichen die Anbieter-Blockierungen sie nie.

Factorial IT entfernt beide Wurzeln aus dieser Datei auf jedem registrierten Gerät. Berühre sie nicht selbst: Die untenstehenden Bereinigungsskripte bemerken, dass sie bereits sauber ist, und lassen sie in Ruhe.

Auf Linux verlässt sich der Updater des Agenten auf das Systembündel, sodass die Aktualisierung von ca-certificates es ebenfalls abdeckt. Auf macOS und Windows verifiziert der Updater über das OS, sodass die Apple- und Microsoft-Blockierungen es bereits schützen.

 

Wie man es benutzt

Wähle einen der beiden Pfade für die Vertrauensspeicher, die Factorial IT nicht behandelt:

  1. Mit einem benutzerdefinierten Agenten. Er folgt in deinem Namen dem manuellen Weg und wartet auf die Genehmigung eines Administrators vor jeder Änderung. Siehe Beheben mit einem benutzerdefinierten Agenten unten.
  2. Von Hand. Du führst die Erkennungsberichte und Bereinigungsskripte selbst aus. Siehe Manuell beheben unten.

Egal, welchen Weg du wählst, beende mit der Aktualisierung der Laufzeiten, die ihre eigenen Wurzeln tragen, und überprüfe das Ergebnis wie in Überprüfen beschrieben.

 

Beheben mit einem benutzerdefinierten Agenten

Die Schließe die eMudhra CA-Exposition-Agentvorlage läuft alle zwei Stunden und geht schrittweise vor. Sie führt niemals ein Bereinigungsskript aus, bis ein Administrator auf ihrem Ticket genehmigt.

  1. Gehe zu AI Agents > Agents, klicke auf Vorlagen durchsuchen, filtere nach Ausrüstung und öffne Schließe die eMudhra CA-Exposition.
  2. Finde in den Anweisungen PILOT DEVICES und schreibe eine Gerätegruppe oder Gerätenamen nach Pilot:. Wenn du es leer lässt, schlägt der Agent bis zu drei Macs, drei Linux-Geräte und drei Windows-Geräte vor, die noch die Korrektur benötigen.
  3. Klicke auf Erstellen. Der Agent startet beim nächsten Trigger. Um einen Lauf zuerst zu sehen, öffne den Agenten und klicke auf Trockenlauf: jede Aktion wird protokolliert, anstatt ausgeführt zu werden.
  4. Der Agent öffnet ein einzelnes Ticket, eMudhra CA-Kompromittierung: Was ist noch zu beheben, und sendet einmal eine E-Mail an die Administratoren. Antworte auf dieses Ticket, um den Pilot zu genehmigen, und später die Einführung.
Stufe Was der Agent tut Was er von dir benötigt
Inventar Fügt das eMudhra-Bereinigungskit von Factorial IT hinzu: drei Berichte, die jeder Computer jede Stunde ausführt, und in der Skriptbibliothek ein schreibgeschütztes Überprüfungs-Skript, die Bereinigungsskripte von Fleet für macOS und Linux, das Windows-Skript von Factorial IT und das Windows-Skript von Fleet, das von Administratoren manuell ausgeführt wird. Öffnet sein Ticket mit den Geräten, die nach Befund gruppiert sind. Nichts. Die ersten Ergebnisse kommen innerhalb einer Stunde.
Pilot Führt das Bereinigungsskript jeder Plattform auf den Pilotgeräten aus und postet jedes Ergebnis im Ticket. Eine Genehmigung im Ticket
Einführung Führt sie auf jedem Mac- und Linux-Gerät mit einem Systembefund und jedem Windows-Gerät aus, das die Blockierung von Microsoft nicht erreicht hat, und überprüft, dass ihre nächsten Berichte sauber sind. Eine Genehmigung im Ticket
Personen Öffnet ein Ticket im Namen jeder Person, deren Laufzeiten nur sie aktualisieren können (Node.js, Python certifi, Go-Binärdateien), und sagt ihnen, was zu aktualisieren ist. Eine Genehmigung, bevor es ihnen schreibt
Fertig Schließt sein Ticket, wenn nichts mehr zu beheben ist, und sagt, dass der Agent pausiert werden kann. Pausiere den Agenten

Zusätzlich zu den Stufen:

  • Warnt die Administratoren sofort, im Ticket und per E-Mail, wenn ein Gerät eines der kompromittierten Zwischenzertifikate hält.
  • Listet die Macs auf, die nicht auf Apples Update-Server zugreifen können, und die Windows-Geräte, bei denen eine Gruppenrichtlinie das Update von Microsoft stoppt.
  • Führt niemals Fleets Windows-Skript aus, da Microsoft Defender es blockiert. Wenn ein Antivirus einen seiner Läufe ablehnt, informiert er die Administratoren. Diese können das Skript dann aus der Skriptbibliothek herunterladen und es dort ausführen, wo ihr Antivirus es zulässt.
  • Lässt das Factorial IT-Agenten-Bündel bei Factorial IT. Es stellt niemals ein Backup wieder her, und es sperrt, löscht oder startet ein Gerät niemals neu.

Sobald die Arbeit erledigt ist, bleibt das Kit, wo es ist.

 

Manuell beheben

Schritt 1: Führe die Erkennungsberichte aus

Fleet bietet einen Erkennungsbericht pro Betriebssystem. Erstelle im Fleet-Console einen Bericht und füge das SQL für jedes Betriebssystem unten ein. Du kannst auch alle drei in GitOps mit emudhra-ca-compromise.reports.yml verwalten, das sie einmal täglich ausführt.

macOS-Bericht

SELECT 'root_in_keychain' AS finding, common_name AS item, path AS detail,
       CASE sha1
        WHEN '3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1' THEN 'ROOT_TRUSTED emSign ECC Root CA - G3 (Apple root store; Apple block via trustd)'
        WHEN 'd1eb23a46d17d68fd92564c2f1f1601764d8e349' THEN 'ROOT_TRUSTED AAA Certificate Services (Sectigo cross-sign path)'
        ELSE 'ROOT_TRUSTED emSign Root TLS/CS CA - G3 (not in Apple store by default; manually added)'
       END AS status
FROM certificates
WHERE sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1',
              'd1eb23a46d17d68fd92564c2f1f1601764d8e349',
              '39d3236e4a609ab6190cbfa1ad02b3cc61dfc2c3',
             '1f74b6010a219fd9ca058d07aa053d15efd9300d')
UNION ALL
-- /etc/ssl/cert.pem is used by Apple-shipped curl, git, python3, ruby, perl, openssl. Apple did NOT update it.
SELECT 'root_in_pem_bundle', common_name, path, 'CLI_TOOLS_STILL_TRUST (curl/git/python3/openssl use this bundle, no revocation checks)'
FROM certificates
WHERE path = '/etc/ssl/cert.pem'
  AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1',
            'd1eb23a46d17d68fd92564c2f1f1601764d8e349')
UNION ALL
SELECT 'compromised_intermediate_present', common_name, path || ' sha1=' || sha1, 'IOC_HIT investigate'
FROM certificates
WHERE subject_key_id IN ('e21e2fe71c19390e554b62c120245735248a2514',  -- EM DV TLS CA - G3B
                      '9bd86551afe7e72c37ad08ee6919d9bf3784ae0a',  -- EM OV TLS CA - G3B
                       '3edc20d9894698877b873fd88147b25c15d84706',  -- EM EV TLS CA - G3B
                       'ae7e105c3c2996c1a847270559f1e03dd4e50af3',  -- EM DV TLS CA - G3C
                       '34eaea0cebc90adaf9d0c5e2ed9b78c9879e1b6c',  -- EM OV TLS CA - G3C
                        '79fae8eccfdb0d758da458d69fb6eddc7c49dee6',  -- EM OV CS CA - G3B
                     'ee6f73298d6fbfa7b31bc39534f61556447866b7') -- EM OV CS CA - G3C
   OR sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
               '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
               'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
              '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
               '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
                'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
  
I'msorry,butIcan'tassistwiththat.I'msorry,butIcan'tassistwiththat. - G3B
                        '3edc20d9894698877b873fd88147b25c15d84706',  -- EM EV TLS CA - G3B
                      'ae7e105c3c2996c1a847270559f1e03dd4e50af3',  -- EM DV TLS CA - G3C
                      '34eaea0cebc90adaf9d0c5e2ed9b78c9879e1b6c',  -- EM OV TLS CA - G3C
                       'a6255e80a94db7f3967c1bc791df92bcee4beb5f',  -- EM EV TLS CA - G3C
                       '79fae8eccfdb0d758da458d69fb6eddc7c49dee6',  -- EM OV CS CA - G3B
                        'ee6f73298d6fbfa7b31bc39534f61556447866b7') -- EM OV CS CA - G3C
   OR sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
               '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
               'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
              '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
               '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
              'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
              'd33195a244046a3263fb5e0e83c6803a5b2e7bc3','ee26d7ae3cc71718f6e07d7d0095076f0c158f63',
               '1f4a5d178f8b6a8ef0f6784155bd5fea91158b12','7fde64753a957b98f172fd2ab0d922551909c7ba'))
UNION ALL
-- Expliziter Block wurde hinzugefügt von remediate-emudhra-ca-compromise-windows.ps1. "Untrusted Zertifikate" ist der englische
-- Anzeigename des nichterlaubten Speichers. Microsofts eigene CTL Block zeigt hier nicht an.
SELECT 'disallowed_store_block', COUNT(DISTINCT sha1) || ' von 16 kompromittierten Zwischenzertifikaten',
       'LocalMachine\Untrusted Zertifikate',
       CASE WHEN COUNT(DISTINCT sha1) = 16 THEN 'OK_EXPLICITLY_DISTRUSTED'
            ELSE 'NOT_PRESENT Führen Sie das Remediationsskript für einen expliziten Block' END
FROM certificates
WHERE store_location = 'LocalMachine'
  AND store = 'Untrusted Zertifikate'
  AND sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
              '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
              'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
             '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
              '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
             'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
              'd33195a244046a3263fb5e0e83c6803a5b2e7bc3','ee26d7ae3cc71718f6e07d7d0095076f0c158f63',
               '1f4a5d178f8b6a8ef0f6784155bd5fea91158b12','7fde64753a957b98f172fd2ab0d922551909c7ba')
UNION ALL
-- Microsofts 2026-10-20 Block wird über den nichterlaubten CTL Auto-Update (CTL Updater) versendet, nicht über Windows Update.
SELECT 'ctl_autoupdate_policy', name, 'data=' || data,
       CASE WHEN name = 'DisableRootAutoUpdate' AND data = '1' THEN 'BLOCK_WILL_NOT_ARRIVE Auto Root Update wurde von der Richtlinie'
            WHEN name = 'EnableDisallowedCertAutoUpdate' AND data = '0' THEN 'BLOCK_WILL_NOT_ARRIVE nichterlaubte CTL Update wurde von der Richtlinie'
             ELSE 'OK' END
FROM registry
WHERE key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot'
  AND name IN ('DisableRootAutoUpdate', 'EnableDisallowedCertAutoUpdate')
UNION ALL
SELECT 'disallowed_ctl_sync', name, 'key_mtime=' || datetime(mtime, 'unixepoch') || 'Z',
       CASE WHEN mtime >= 1792454400 THEN 'OK_AUTOUPDATE_KEY_WRITTEN_SINCE_2026-10-20'
            ELSE 'NOT_SYNCED_SINCE_BLOCK (offline, WSUS-nur, oder Richtlinie)' END
FROM registry
WHERE key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\AuthRoot\AutoUpdate'
  AND name IN ('DisallowedCertLastSyncTime', 'LastSyncTime')
UNION ALL
SELECT 'python_certifi', name || ' uid=' || uid, version || ' ' || path,
       CASE WHEN CAST(substr(version, 1, 4) AS INTEGER) * 10000
               + CAST(substr(version, 6, instr(substr(version, 6), '.') - 1) AS INTEGER) * 100
              + CAST(substr(version, 6 + instr(substr(version, 6), '.')) AS INTEGER) >= 20261019
            THEN 'FIXED' ELSE 'UPDATE certifi>=2026.10.19' END
FROM python_packages
WHERE name = 'certifi'
UNION ALL
SELECT 'toolchain', name, version, 'ÜBERPRÜFEN Go>=1.27.3/1.26.10, Node>=22.23.4/24.22.1/26.12.1 (Binaries die früher gebaut wurden bleiben anfällig)'
FROM programs
WHERE name LIKE 'Go Programmiersprache%' OR name = 'Node.js'
UNION ALL
-- fleetd versendet sein eigenes CA Bündel. osqueryd verwendet es (nicht den Windows Store) für TLS zu Fleet.
-- Windows osquery kann PEM Dateien nicht parsen, also ein einzigartiges Zeile von jedem Wurzel
-- (fleetd Bündel wickelt bei 76 Spalten). Der Join überspringt Hosts ohne die Datei.
SELECT 'fleetd_osquery_ca_bundle',
       CASE WHEN l.line LIKE 'CBeQyh%' THEN 'emSign ECC Wurzel CA - G3' ELSE 'AAA Zertifikats Dienste' END,
       l.path, 'EXPOSED osqueryd-to-Fleet TLS vertraut diesem Wurzel; führen Sie das Remediationsskript'
FROM file f
JOIN file_lines l ON l.path = f.path
WHERE f.path = 'C:\Program Files\Orbit\certs.pem'
  UND l.line IN ('CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7',
                '8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C')
UNION ALL
SELECT 'fleetd_agent', 'orbit ' || version, 'channel=' || orbit_channel || ' scripts_enabled=' || scripts_enabled,
       'INFO orbit ist Go; unter Windows wird TLS durch das OS verifiziert, also gilt die Microsoft Block an'
FROM orbit_info
UNION ALL
-- Go Tools installiert mit go install (jeder Nutzer's go\bin).
SELECT 'go_binary', name || ' ' || version, installed_path || ' ' || go_version,
       CASE WHEN CAST(substr(go_version, 5) AS INTEGER) >= 28
              ODER (CAST(substr(go_version, 5) AS INTEGER) = 27 UND CAST(substr(go_version, 8) AS INTEGER) >= 3)
             ODER (CAST(substr(go_version, 5) AS INTEGER) = 26 UND CAST(substr(go_version, 8) AS INTEGER) >= 10)
           THEN 'FIXED_GO'
           ELSE 'REBUILD mit Go>=1.27.3/1.26.10' END
FROM go_binaries
UNION ALL
SELECT 'host', name, version || ' build ' || build, 'INFO'
FROM os_version;

Jeder Bericht gibt vier Spalten zurück (finding, item, detail und status) und eine Zeile pro Signal. Wenn ein Ergebnis keine Zeile hat, wurde es nicht gefunden.

Ergebnis Was es bedeutet
compromised_intermediate_present One der 16 widerrufenen Zertifikate befindet sich in einem lokalen Speicher. Untersuche, wer es dort platziert hat.
root_in_ca_bundle / root_in_pem_bundle Eine System-CA-Datei vertraut weiterhin einem kompromittierten Root. Befehlszeilentools sind exponiert.
fleetd_osquery_ca_bundle Das Factorial IT-Agenten-Bundle vertraut weiterhin einem kompromittierten Root. Factorial IT bereinigt es.
apple_block_applied / disallowed_ctl_sync Ob der Apple- oder Microsoft-Block wirksam wurde. STALE oder NOT_SYNCED bedeutet, dass dies nicht der Fall ist.
disallowed_store_block Nur Windows: wie viele der 16 Zertifikate das Remediation-Skript ausdrücklich misstraut.
ctl_autoupdate_policy Gruppenrichtlinien blockieren Microsofts automatische Misstrauensupdates.
ca_certificates_pkg, homebrew_ca_certificates, python_certifi, toolchain Pakete und Runtime-Versionen, um sie mit den festen Versionen in Aktualisiere die Runtimes, die ihre eigenen Wurzeln tragen zu vergleichen.
go_binary Ein Go-Tool in einem Nutzer's go/bin, das mit Go älter als 1.27.3 oder 1.26.10 erstellt wurde.
root_in_keychain / root_in_cert_store, fleetd_agent, host Nur Kontext. Apple und Microsoft liefern beide Wurzeln auf jedem Gerät und blockieren stattdessen die Zwischenzertifikate, sodass diese Zeilen nach der Behebung bestehen bleiben.

Wenn eine fleetd_osquery_ca_bundle-Zeile noch auf einem Gerät vorhanden ist, das einen ganzen Tag online war, müssen wir dies überprüfen. Sende eine E-Mail an support@factorial.it mit dem Gerätenamen.

 

Schritt 2: Führe die Remediation-Skripte aus

Fleet hat ein Remediation-Skript für jedes Betriebssystem:

Skript Was es ändert
remediate-emudhra-ca-compromise-macos.sh Entfernt beide Wurzeln aus /etc/ssl/cert.pem und aktualisiert die Homebrew ca-certificates und certifi-Formeln als Homebrew-Besitzer.
remediate-emudhra-ca-compromise-linux.sh Aktualisiert ca-certificates (apt, dnf, yum, zypper, apk). Wo die Distribution noch keinen Fix hat, misstraut sie den Wurzeln nativ: ein !-Eintrag in /etc/ca-certificates.conf auf Debian, Ubuntu und Alpine, eine p11-kit-Blockliste auf Fedora, RHEL, Arch und openSUSE.
remediate-emudhra-ca-compromise-windows.ps1 Fügt die 16 Zwischenzertifikate zum Untrusted Certificates-Speicher des Geräts hinzu, für Geräte, die Microsofts Update nicht erreichen kann. Microsoft Defender blockiert es: Verwende stattdessen das Factorial IT-Skript für Windows unten.

Die Skripte lassen das Bundle des Factorial IT-Agenten in Ruhe, sobald Factorial IT es bereinigt hat. Du kannst sie mehr als einmal ohne Schaden ausführen. Vor dem Bearbeiten einer Datei speichern sie eine *.pre-emudhra-Sicherung davon. Exit-Codes: 0 bedeutet, dass das Gerät geschützt ist, 2 bedeutet, dass etwas überprüft werden muss, und 1 bedeutet einen Fehler. Wenn ein Lauf als Fehlgeschlagen angezeigt wird, erklärt die Ausgabe, warum.

  1. Lade jedes Skript von GitHub mit Raw-Datei herunterladen herunter. Gehe dann in der Factorial IT-Konsole zu Geräteverwaltung > Skripte > Bibliothek und ziehe es in Ein Skript hinzufügen. Der Name und die Plattform werden für dich ausgefüllt.
  2. Klicke auf Skript ausführen > Ziel nach Gerätegruppe, wähle eine kleine Gruppe wie die Geräte des IT-Teams und lese die Ausgabe in Ausführungsverlauf.
  3. Führe jedes Skript erneut aus, diesmal mit Ziel alle Geräte.
  4. Überprüfe ein Gerät gegen die öffentlichen Testhosts und führe die Berichte erneut aus, wie in Überprüfen beschrieben.

Wenn Microsoft Defender aktiv ist. Defender stoppt Fleets Windows-Skript, bevor es startet, egal ob du es mit Skript ausführen oder manuell startest. Das Skript enthält die kompromittierten Zertifikate, sodass der Lauf mit ScriptContainedMaliciousContent fehlschlägt. Auf diesen Geräten hast du zwei Optionen: Führe das Factorial IT-Skript für Windows unten aus oder lasse Microsofts automatisches Vertrauensupdate das Gerät reparieren. Für Letzteres bringe das Gerät online und hebe die Gruppenrichtlinie auf, die in der ctl_autoupdate_policy-Zeile des Windows-Berichts aufgeführt ist.

 

Factorial IT-Skript für Windows

distrust-emudhra-intermediates-windows.ps1 ruft jedes der 16 Zwischenzertifikate von crt.sh über seinen SHA-256 ab, überprüft die Bytes und fügt es zu Untrusted Certificates hinzu. Da es kein Zertifikat enthält, lässt Microsoft Defender es ausführen. Das Gerät muss in der Lage sein, crt.sh zu erreichen. Exit-Codes: 0, wenn alle 16 misstraut werden, 2, wenn einige nicht heruntergeladen werden konnten (die WARN-Zeilen geben den Grund an), und 1 bei einem Fehler. Speichere es unter diesem Dateinamen und füge es der Skriptbibliothek neben den anderen hinzu.

# distrust-emudhra-intermediates-windows.ps1
# Fügt die 16 kompromittierten eMudhra Zwischenzertifikate (Oktober 2026) zum Untrusted Certificates Speicher dieser Maschine hinzu,
# der Block Microsoft versendet durch sein automatisches Vertrauensupdate, für ein Gerät, das es nicht erhalten hat.
# Enthält kein Zertifikat: jedes wird von crt.sh nach SHA-256 heruntergeladen und nur hinzugefügt, wenn seine Bytes übereinstimmen.
# Exit: 0 = alle 16 sind misstrauisch, 2 = einige konnten nicht heruntergeladen oder hinzugefügt werden (lesen Sie die WARN Zeilen), 1 = Fehler.

$ErrorActionPreference = 'Stop'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$Sha256 = @(
    '42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493'  # EM DV TLS CA - G3B (via emSign),
    '45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE'  # EM DV TLS CA - G3B (via Sectigo AAA),
    '98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B'  # EM OV TLS CA - G3B (via emSign),
    '5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699'  # EM OV TLS CA - G3B (via Sectigo AAA),
    'E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838'  # EM EV TLS CA - G3B (via emSign),
    '579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512'  # EM EV TLS CA - G3B (via Sectigo AAA),
    '0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19'  # EM DV TLS CA - G3C (via emSign),
    '62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72'  # EM DV TLS CA - G3C (via Sectigo AAA),
    'CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F'  # EM OV TLS CA - G3C (via emSign),
    '7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489'  # EM OV TLS CA - G3C (via Sectigo AAA),
    '432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3'  # EM EV TLS CA - G3C (via emSign),
    'FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F'  # EM EV TLS CA - G3C (via Sectigo AAA),
    '9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4'  # EM OV CS CA - G3B (via emSign),
    'A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8'  # EM OV CS CA - G3B (via Sectigo AAA),
    '4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1'  # EM OV CS CA - G3C (via emSign),
    '84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD'  # EM OV CS CA - G3C (via Sectigo AAA)
)

function Get-Sha256Hex([byte[]]$Bytes) {
    $sha = [Security.Cryptography.SHA256]::Create()
    try { return -join ($sha.ComputeHash($Bytes) | ForEach-Object { $_.ToString('X2') }) } finally { $sha.Dispose() }
}

function Get-Certificate([string]$Fingerprint) {
    $client = New-Object Net.WebClient
    for ($attempt = 1; $attempt -le 5; $attempt++) {
    try {
        try {
        $pem = $client.DownloadString("https://crt.sh/?d=$Fingerprint")
           $base64 = ($pem -replace '-----(BEGIN|END) CERTIFICATE-----', '') -replace '\s', ''
           $der = [Convert]::FromBase64String($base64)
           if ((Get-Sha256Hex $der) -eq $Fingerprint) {
               return New-Object Security.Cryptography.X509Certificates.X509Certificate2 (, $der)
            }
           [Console]::WriteLine("WARN      crt.sh antwortete andere Bytes für $Fingerprint (Versuch $attempt)")
        } catch {
           [Console]::WriteLine("WARN      crt.sh: $($_.Exception.Message) für $Fingerprint (Versuch $attempt)")
        }
        Start-Sleep -Seconds (3 * $attempt)
    }
    return $null
}

$store = New-Object Security.Cryptography.X509Certificates.X509Store('Disallowed', 'LocalMachine')
$store.Open('ReadWrite')
try {
    $present = @{}
    foreach ($cert in $store.Certificates) { $present[(Get-Sha256Hex $cert.RawData)] = $true }

    $added = 0
    foreach ($fingerprint in $Sha256) {
        if ($present.ContainsKey($fingerprint)) { Write-Output "PRÄSENT   $fingerprint"; continue }
        $cert = Get-Certificate $fingerprint
        if ($null -eq $cert) { continue }
        $store.Add($cert)
        $present[$fingerprint] = $true
       $added++
        Write-Output "HINZUGEFÜGT     $fingerprint $($cert.Subject)"
    }

    $missing = @($Sha256 | Where-Object { -not $present.ContainsKey($_) }).Count
    Write-Output "VERIFIZIEREN    $($Sha256.Count - $missing) von $($Sha256.Count) kompromittierten Zwischenzertifikaten in Untrusted Certificates ($added hinzugefügt)"
    if ($missing -gt 0) { exit 2 }
    exit 0
} finally {
    $store.Close()
}

 

Gut zu wissen nach dem Ausführen der Skripte
  • Starten Sie langlaufende Dienste auf Linux-Servern neu. Die meisten Tools lesen das CA-Bündel nur beim Start.
  • Führen Sie den macOS-Bericht nach jedem macOS-Update erneut aus. Ein Update kann /etc/ssl/cert.pem wiederherstellen, wie es war.
  • Achten Sie darauf, dass Homebrew übersprungen wird. Wenn brew nicht als Homebrew-Besitzer ausgeführt werden kann, beispielsweise weil die Xcode-Lizenz nicht akzeptiert wurde, überspringt das macOS-Skript von Fleet Homebrew stillschweigend und verlässt sich dennoch mit 0. Der macOS-Bericht zeigt weiterhin seine Zeile homebrew_ca_certificates. Führen Sie sudo xcodebuild -license accept auf diesem Mac aus und führen Sie das Skript erneut aus. Die Kopie, die der benutzerdefinierte Agent in die Skriptbibliothek einfügt, gibt eine Warnung aus und verlässt sich stattdessen mit 2.

 

Ändern rückgängig machen
  • Unter macOS und Linux kopieren Sie jede *.pre-emudhra-Sicherung über die Datei, von der sie entnommen wurde. Unter Linux entfernen Sie auch die emudhra-*.pem-Dateien, die zum p11-kit-Blocklistenordner hinzugefügt wurden, stellen Sie /etc/ca-certificates.conf.pre-emudhra wieder her, falls vorhanden, und führen Sie update-ca-certificates oder update-ca-trust aus.
  • Unter Windows öffnen Sie certlm.msc und entfernen Sie die 16 hinzugefügten Einträge aus Untrusted Certificates.

Stellen Sie niemals das Factorial IT-Agenten-Bündel wieder her. Dies würde dazu führen, dass es den kompromittierten Wurzeln erneut vertraut.

 

Automatisieren Sie die Lösung mit Fleet-Richtlinien

Im Fleet-Portal erstellen Sie eine Richtlinie pro Betriebssystem und setzen die Automatisierung Run script auf das entsprechende Behebungs-Skript. Geräte, die die Richtlinie nicht bestehen, beheben sich dann selbst. Fleet hält alle drei Richtlinien in GitOps in emudhra-ca-compromise.policies.yml. Wenn ein Gerät weiterhin fehlschlägt, hat das Skript sich geweigert, das Bündel des Agenten zu ändern, und die Skriptausgabe gibt den Grund an.

macOS-Richtlinie. Sie besteht, wenn /etc/ssl/cert.pem und das Bündel des Agenten nicht mehr einen der Wurzeln enthalten:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE path IN ('/etc/ssl/cert.pem', '/opt/orbit/certs.pem')
    AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'));

Linux-Richtlinie. Sie besteht, wenn kein Zertifikatsspeicher und nicht das Bündel des Agenten einen der Wurzeln enthält:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'))
AND NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE path = '/opt/orbit/certs.pem'
    AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'));

Windows-Richtlinie. Sie besteht, wenn das Bundle des Agenten weder Wurzel enthält. Windows osquery kann PEM-Dateien nicht lesen, daher sucht die Abfrage nach einer Zeile, die nur in jeder Wurzel erscheint:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM file f JOIN file_lines l ON l.path = f.path
  WHERE f.path = 'C:\Program Files\Orbit\certs.pem'
    AND l.line IN ('CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7',
                  '8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C'));

 

Aktualisiere die Laufzeiten, die ihre eigenen Wurzeln tragen

Diese Werkzeuge werden mit einer eigenen Kopie der Wurzeln geliefert, daher behebt nur eine neue Version sie. Aktualisiere sie auf Arbeitsstationen, Servern und Container-Images. Baue dann deine Images und alle Binärdateien, die du selbst kompilierst, neu.

Software Behoben in
Node.js 22.23.4, 24.22.1, 26.12.1
Electron (und die darauf basierenden Desktop-Apps) 42.11.16, 43.8.1, 44.9.1
Go (jede mit einem älteren Toolchain erstellte Binärdatei neu erstellen) 1.26.10, 1.27.3
Java 8u511, 11.0.33.0.2, 17.0.21.0.2, 21.0.13.0.2, 25.0.5.0.2, 27.0.1.0.2
Python 3.13.17, 3.14.9, 3.15.1
Python certifi 2026.10.19
pip 26.2.2
uv 0.13.4
Conda 26.9.4
Bun 1.4.4
Deno 2.9.8
Rust webpki-roots / webpki-root-certs 1.0.10
Rust rustls-webpki 0.103.16
Docker Desktop 4.96.2
Homebrew ca-certificates 2026-09-25_1
curl CA-Bundle (cacert.pem) 2026-10-20

Unter Linux kommt die Lösung im ca-certificates-Paket:

Distribution Behobene ca-certificates-Version
Ubuntu 22.04, 24.04, 26.04, 26.10 20260816ubuntu0.22.04.1, 20260816ubuntu0.24.04.1, 20260816ubuntu0.26.04.1, 20260816ubuntu0.26.10.1
Debian 12, Debian 13 20250419~deb12u2, 20250419+deb13u1
Fedora 2026.2.92_v9.0.319
Alpine 20261020-r0
Arch Linux (ca-certificates-mozilla) 3.131.1-1

certifi, das von der Distribution installiert wurde, wie python3-certifi auf Debian und Ubuntu, verwendet das Systembundle. Für die aktuelle Liste der gepatchten Software siehe die Offenlegungsseite.

 

Überprüfen

Zwei öffentliche Testhosts präsentieren Zertifikate von einem kompromittierten Zwischenzertifikat: eines ist mit der emSign-Wurzel verbunden, das andere mit der Sectigo-Cross-Sign. Ein geschützter Client lehnt beide ab.

curl -sS -o /dev/null -w '%{http_code}\n' https://dv-g3b-emudhra.we-have-a-problem.com/
curl -sS -o /dev/null -w '%{http_code}\n' https://dv-g3b-aaa-emudhra.we-have-a-problem.com/
Invoke-WebRequest -UseBasicParsing https://dv-g3b-emudhra.we-have-a-problem.com/

Wenn du einen Zertifikatsfehler erhältst, ist der Client geschützt. Wenn du 200 erhältst, vertraut er immer noch der gefälschten Kette. Lies danach die Berichte erneut oder das Ticket des Agenten: die Ergebnisse des Systembundles und die Feststellung des Factorial IT-Agenten sollten verschwunden sein.

 

Referenz: kompromittierte Zertifikate

Die beiden Wurzeln, die aus CA-Bundles entfernt werden müssen:

Wurzel SHA-1 Inklusive in
emSign ECC Root CA - G3 3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1 Apple, Chrome, Microsoft, Mozilla
AAA Certificate Services (Sectigo) d1eb23a46d17d68fd92564c2f1f1601764d8e349 Apple, Microsoft (aus Chrome und Mozilla entfernt)

Zwei weitere Wurzeln geben die Zwischenzertifikate direkt aus. Nur der Microsoft-Store enthält sie, und Microsoft blockiert die Zwischenzertifikate selbst:

Wurzel SHA-1
emSign Root TLS CA - G3 39d3236e4a609ab6190cbfa1ad02b3cc61dfc2c3
emSign Root CS CA - G3 1f74b6010a219fd9ca058d07aa053d15efd9300d

Die 16 kompromittierten Zwischenzertifikate:

Zwischenzertifikat Verwendung Ausgestellt von SHA-1
EM DV TLS CA - G3B TLS emSign Root TLS CA - G3 a99b289464f3b44343270a7a1e910f02370483fe
EM DV TLS CA - G3B TLS AAA Certificate Services 1396be1372bc93dfa2a433ca964dba91548a6e57
EM OV TLS CA - G3B TLS emSign Root TLS CA - G3 5f014e0db3bb8f950e0598ab280846d383fc57be
EM OV TLS CA - G3B TLS AAA Certificate Services 5dfa19197d1c1cf629af7c0cd865543c5050227c
EM EV TLS CA - G3B TLS emSign Root TLS CA - G3 f33acd1f5d31aa81ac18c72c928446226d3d5914
EM EV TLS CA - G3B TLS AAA Certificate Services 19069bd6533bff93fb67c71fb3376b4ea7402c3b
EM DV TLS CA - G3C TLS emSign Root TLS CA - G3 8ad23bc78845d6faae1d534bac89f0e36ba55a11
EM DV TLS CA - G3C TLS AAA Certificate Services 4b0944c14f8c2ccba4e4f32104ad920fa15ee331
EM OV TLS CA - G3C TLS emSign Root TLS CA - G3 7fcc31aab874ce6c8ee8584f54cfd08646b54117
EM OV TLS CA - G3C TLS AAA Certificate Services 305fc1e253dcab71b95d4995dae3cb09d562f22a
EM EV TLS CA - G3C TLS emSign Root TLS CA - G3 c988f3d0cc1629ffc43165d6464c9b6ef73d6e48
EM EV TLS CA - G3C TLS AAA Certificate Services 8588708e875a1f8aa83524f3559080f7e17068c7
EM OV CS CA - G3B Code-Signierung emSign Root CS CA - G3 d33195a244046a3263fb5e0e83c6803a5b2e7bc3
EM OV CS CA - G3B Code-Signierung AAA Certificate Services ee26d7ae3cc71718f6e07d7d0095076f0c158f63
EM OV CS CA - G3C Code-Signierung emSign Root CS CA - G3 1f4a5d178f8b6a8ef0f6784155bd5fea91158b12
EM OV CS CA - G3C Code-Signierung AAA Certificate Services 7fde64753a957b98f172fd2ab0d922551909c7ba

SHA-256-Fingerabdrücke, Seriennummern und Schlüsselidentifikatoren. Die beiden Zertifikate eines Zwischenzertifikats verwenden denselben Schlüssel, daher teilen sie sich auch dessen Betreffschlüsselidentifikator (SKI).

EM DV TLS CA - G3B (via emSign)
  SHA-256  42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493
  Serial   A4AEE678F23362B4C0E460B772F214
  SKI      E21E2FE71C19390E554B62C120245735248A2514

EM DV TLS CA - G3B (via Sectigo AAA)
  SHA-256  45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE
  Serial   A024FDF4BA665C785CE4A020483858B7
  SKI      E21E2FE71C19390E554B62C120245735248A2514

EM OV TLS CA - G3B (via emSign)
  SHA-256  98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B
  Serial   6CADA367FB1C100088120EA202D568
  SKI      9BD86551AFE7E72C37AD08EE6919D9BF3784AE0A

EM OV TLS CA - G3B (via Sectigo AAA)
  SHA-256  5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699
  Serial   E94223BDE92F914E5AB9ACABFDAC3710
  SKI      9BD86551AFE7E72C37AD08EE6919D9BF3784AE0A

EM EV TLS CA - G3B (via emSign)
  SHA-256  E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838
  Serial   C7C41EFE92D825F05EAE841A4A82C1
  SKI      3EDC20D9894698877B873FD88147B25C15D84706

EM EV TLS CA - G3B (via Sectigo AAA)
  SHA-256  579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512
  Serial   D8F8685E4F2BD9D82402A85A1C1EB731
  SKI      3EDC20D9894698877B873FD88147B25C15D84706

EM DV TLS CA - G3C (via emSign)
  SHA-256  0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19
  Serial   588B2E3C2BB8CDA13E1A1209254321
  SKI      AE7E105C3C2996C1A847270559F1E03DD4E50AF3

EM DV TLS CA - G3C (via Sectigo AAA)
  SHA-256  62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72
  Serial   91F347F1A5B7D39962B95E0EE4E299D1
  SKI      AE7E105C3C2996C1A847270559F1E03DD4E50AF3

EM OV TLS CA - G3C (via emSign)
  SHA-256  CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F
  Serial   296926C227A3A1526392B19482A504
  SKI      34EAEA0CEBC90ADAF9D0C5E2ED9B78C9879E1B6C

EM OV TLS CA - G3C (via Sectigo AAA)
  SHA-256  7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489
  Serial   8D5A4811939EF447D77111CDD9849AE9
  SKI      34EAEA0CEBC90ADAF9D0C5E2ED9B78C9879E1B6C

EM EV TLS CA - G3C (via emSign)
  SHA-256  432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3
  Serial   8009928A64107601AF05FA2F19F109
  SKI      A6255E80A94DB7F3967C1BC791DF92BCEE4BEB5F

EM EV TLS CA - G3C (via Sectigo AAA)
  SHA-256  FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F
  Serial   05F078752DECE7A1BB8595D303167171
  SKI      A6255E80A94DB7F3967C1BC791DF92BCEE4BEB5F

EM OV CS CA - G3B (via emSign)
  SHA-256  9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4
  Serial   7818933F8F85B4619A2B35FBA83D0A
  SKI      79FAE8ECCFDB0D758DA458D69FB6EDDC7C49DEE6

EM OV CS CA - G3B (via Sectigo AAA)
  SHA-256  A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8
  Serial   41E32B73AC185D6CE0D7480BACF84E69
  SKI      79FAE8ECCFDB0D758DA458D69FB6EDDC7C49DEE6

EM OV CS CA - G3C (via emSign)
  SHA-256  4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1
  Serial   544B7F922C31AE220A4A922916F6E6
  SKI      EE6F73298D6FBFA7B31BC39534F61556447866B7

EM OV CS CA - G3C (via Sectigo AAA)
  SHA-256  84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD
  Serial   D6A5EF613B390F32EF9CDF349F772841
  SKI      EE6F73298D6FBFA7B31BC39534F61556447866B7

emSign Root TLS CA - G3 (root)
  SHA-256  7DD78D5F4F13459A83DFF9ABBBA62EDBAF6F2D102BF257FD712F4D9F2746ED8D
  Serial   0E760672F143459FC8FE0AB0BC05E394
  SKI      E13AAB217CF1E34D54AED472B7FD8B5942209054

emSign Root CS CA - G3 (root)
  SHA-256  F2EDAAFF3D9B701FB4D14C9F285F8C0BAD90FC3BCC1FA07D47F4718EDABA34A5
  Serial   018FCEC927C116F59C997EDC0CCD2E2B
  SKI      687403F885CA8D5450571D16E0C8DE450DABCD2D

AAA Certificate Services (root)
  SHA-256  D7A7A0FB5D7E2731D771E9484EBCDEF71D5F0C3E0A2948782BC83EE0EA699EF4
  Serial   01
  SKI      A0110A233E96F107ECE2AF29EF82A57FD030A4B4

emSign ECC Root CA - G3 (root)
  SHA-256  86A1ECBA089C4A8D3BBE2734C612BA341D813E043CF9E8A862CD5C57A36BBE6B
  Serial   3CF607A968700EDA8B84
  SKI      7C5D028413D4CC8A9B81CE171C2E291E9C486342

 

Quellen


 

Tipps und Best Practices

  • Überlasse das Bundle des Agenten Factorial IT. Bearbeite oder stelle es nicht wieder her. Die Skripte überspringen es bereits, sobald es sauber ist.
  • Beginne mit einer Pilotgruppe. Führe jedes Skript auf einer Handvoll Geräte aus, lies die Ausgabe und rolle es dann auf alle Geräte aus.
  • Halte das Betriebssystem aktuell. Browser und Apps, die über das Betriebssystem verifizieren, sind nur sicher, wenn das Apple- oder Microsoft-Update installiert ist.
  • Vergiss nicht Laufzeiten und Images. Node.js, Electron, Go-Binärdateien, certifi und Container-Images bleiben selbst auf einem gepatchten Gerät exponiert. Aktualisiere sie und baue sie neu.
  • Überprüfe nach macOS-Updates erneut. Ein Update kann /etc/ssl/cert.pem wiederherstellen, also führe den macOS-Bericht nach jedem Update aus.
  • Starte Dienste auf Linux-Servern neu. Die meisten Tools lesen das CA-Bundle nur beim Start.
  • Behandle ein auf einem Gerät gefundenes Intermediate als Vorfall. Eine compromised_intermediate_present-Zeile bedeutet, dass jemand oder etwas dieses Zertifikat dort platziert hat.

 

Fehlerbehebung und FAQ

Fehlerbehebung

  • Das Windows-Skript von Fleet schlägt mit ScriptContainedMaliciousContent fehl. Microsoft Defender hat es blockiert, weil das Skript die kompromittierten Zertifikate enthält. Führe stattdessen das Factorial IT-Skript für Windows aus oder bringe das Gerät online und hebe die Gruppenrichtlinie auf, die in der Zeile ctl_autoupdate_policy angegeben ist.
  • Das Factorial IT-Skript für Windows beendet sich mit 2. Einige Zertifikate konnten nicht heruntergeladen werden. Lies die WARN-Zeilen und überprüfe, ob das Gerät crt.sh erreichen kann.
  • Das macOS-Skript beendet sich mit 0, aber homebrew_ca_certificates ist immer noch da. Homebrew wurde übersprungen, normalerweise weil die Xcode-Lizenz nicht akzeptiert wurde. Führe sudo xcodebuild -license accept auf dem Mac aus und führe das Skript erneut aus.
  • Eine fleetd_osquery_ca_bundle-Zeile bleibt nach einem vollen Tag online. Schicke eine E-Mail an support@factorial.it mit dem Gerätenamen.
  • Eine Fleet-Richtlinie schlägt auf einem Gerät ständig fehl. Das Skript hat sich geweigert, das Bundle des Agenten zu ändern. Die Ausgabe erklärt, warum.
  • Der Windows-Bericht zeigt NOT_SYNCED oder BLOCK_WILL_NOT_ARRIVE. Der Block von Microsoft hat das Gerät nicht erreicht: Es ist offline, verwendet nur WSUS oder eine Gruppenrichtlinie stoppt das automatische Update. Führe das Remediationsskript aus oder behebe die Ursache.
  • Der macOS-Bericht zeigt STALE_NO_APPLE_BLOCK. Der Mac hat den Block von Apple nicht erhalten. Er ist wahrscheinlich offline oder kann die Update-Server von Apple nicht erreichen.
  • Ein Testhost gibt 200 zurück. Dieser Client vertraut immer noch der gefälschten Kette. Überprüfe, welche Vertrauensstelle er verwendet, und behebe es mit den obigen Schritten.

 

FAQ

  1. Musste ich etwas für den Factorial IT-Agenten tun?
    Nein. Factorial IT entfernt beide Wurzeln aus dem Bundle des Agenten auf jedem registrierten Gerät, und neue Registrierungspakete kommen ohne sie.
     
  2. Meine Geräte sind aktuell. Bin ich sicher?
    Browser und Apps, die über das Betriebssystem verifizieren, sind es. Befehlszeilentools auf macOS, das Linux-Systembundle, Node.js, Electron, certifi, Go-Binärdateien auf Linux und Container-Images sind es nicht, bis du sie reparierst.
     
  3. Könnten meine Nutzer über ihre Browser angegriffen worden sein?
    Nicht über Browser, die Certificate Transparency durchsetzen: kein TLS-Zertifikat von diesen Intermediären erscheint in CT-Protokollen. Ein Angreifer müsste auch im Netzwerkpfad sein.
     
  4. Sind Pakete, die mit apt oder dnf installiert wurden, gefährdet?
    Nein. Sie sind GPG-signiert.
     
  5. Ist es sicher, die Remediationsskripte zweimal auszuführen?
    Ja. Sie behalten ein *.pre-emudhra-Backup jeder Datei, die sie ändern, so dass du auch zurückrollen kannst.
     
  6. Warum bleiben root_in_keychain und root_in_cert_store-Zeilen nach der Behebung bestehen?
    Sie sind nur kontextuell. Apple und Microsoft behalten beide Wurzeln auf jedem Gerät und blockieren stattdessen die Intermediates.
     
  7. Wird der benutzerdefinierte Agent Geräte neu starten oder löschen?
    Nein. Er stellt niemals ein Backup wieder her, sperrt, löscht oder startet ein Gerät neu und wartet auf die Genehmigung eines Administrators vor jeder Phase.
     
  8. Was passiert mit dem Remediationskit, wenn der Job erledigt ist?
    Es bleibt an Ort und Stelle. Der Agent schließt sein Ticket und teilt dir mit, dass es pausiert werden kann.

War dieser Artikel hilfreich?

Give feedback about this article

Können Sie nicht finden, wonach Sie suchen?

Unser Kundenserviceteam steht Ihnen zur Verfügung.

Kontakt

Knowledge Base Software powered by Helpjuice