Gesperrte Zertifikate: Die Behebung bei jedem Client prüfen

Entwicklertools können gesperrten Zertifikaten weiterhin vertrauen. Der eMudhra-Vorfall zeigt, wie Sie betroffene Clients erfassen und die Behebung prüfen.

Ernest Bursa

Ernest Bursa

Founder · · 12 Min. Lesezeit
A senior East Asian security engineer and two colleagues compare incident notes in a bright California garage workspace.

Eine Zertifikatssperrung erklärt ein Zertifikat für ungültig. Die nachgelagerte Behebung klärt, ob die von Ihnen betriebenen Clients es tatsächlich ablehnen. Browser, Kommandozeilenprogramme und Build-Jobs können unterschiedliche Zertifikatsspeicher und Sperrmechanismen nutzen. Eine erfolgreiche Korrektur im Browser erledigt deshalb nicht jede Aufgabe.

Der eMudhra-Vorfall macht diesen Unterschied greifbar. Laut Apple blockieren die eigenen Netzwerk-Frameworks die betroffenen Zertifikate. Manche Kommandozeilenprogramme können sie über eine separate Zertifikatsdatei jedoch weiterhin akzeptieren. Für Ihren Betrieb stellt sich damit die Frage: Welches Ihrer eingesetzten Programme nutzt welchen Prüfpfad, und welche Nachweise verlangen Sie, bevor Sie die zugehörige Aufgabe abschließen? Apples Hinweise zum Vorfall.

Was zeigt der eMudhra-Vorfall?

Der Vorfall zeigt, warum Sie eine Korrektur bis zu den Programmen verfolgen müssen, die sie tatsächlich nutzen. Eine vorgelagerte Maßnahme kann einen Client bereits schützen, während ein anderer noch auf ein separates Update angewiesen ist.

Nach Angaben von Apple wurden die Schlüssel von acht Zwischenzertifikaten kompromittiert: sechs für TLS, das Netzwerkverbindungen schützt, und zwei für Codesignaturen. Für jede TLS-Zwischenzertifizierungsstelle gab es ein eMudhra-Zertifikat und ein von Sectigo kreuzsigniertes Zertifikat. Insgesamt waren somit zwölf TLS-Zertifikate betroffen. Zwölf Zertifikate bedeuten nicht zwölf unabhängig kompromittierte Schlüssel. Apples Hinweise zum Vorfall.

Apple zufolge begann die Sperrung am 19. Oktober 2026. Safari, Mail und andere Anwendungen, die Apples Netzwerk-Frameworks verwenden, werden automatisch geschützt. Die Hinweise nennen gesondert Programme, die /etc/ssl/cert.pem verwenden, darunter bestimmte Konfigurationen von Git und curl. Diese Programme können die betroffenen Zertifikate weiterhin akzeptieren. Beim Abruf am 29. Oktober kündigte Apple ein künftiges Softwareupdate an und beschrieb optionale Änderungen durch Administratoren, die wichtige Einschränkungen haben. Lesen Sie vor einer Maßnahme die aktuelle Fassung. Apples Hinweise zum Vorfall.

Diese Aussage ist präziser als die Behauptung, jeder Mac oder jede Apple-Anwendung sei verwundbar. Zugleich hilft sie Ihnen weiter: Sie benennt einen Abhängigkeitspfad, den Sie untersuchen können.

Im Update des Forschers vom 28. Oktober heißt es, macOS 27.2 habe eine manuell geänderte Zertifikatsdatei wiederhergestellt. Apple bestätigt das allgemeine Risiko, dass ein Softwareupdate diese Datei ersetzen kann. Ordnen Sie die Beobachtung zur konkreten Version dem Forscher zu. Für Apples Abhilfemaßnahmen sind Apples eigene Anweisungen maßgeblich.

All das belegt nicht, dass Ihr Datenverkehr abgefangen wurde. Das Vorfallprojekt erklärt, dass eine Ausnutzung außerhalb von Clients, die Certificate Transparency durchsetzen, unbekannt ist. Wenn ein Client ein ungültiges Zertifikat akzeptiert, besteht Handlungsbedarf. Daraus lässt sich kein erfolgter Einbruch ableiten.

Warum kann ein gesperrtes Zertifikat weiterhin als vertrauenswürdig gelten?

Ein Client benötigt sowohl Vertrauensregeln als auch einen Mechanismus, der die jeweilige Sperrung wirksam macht. Zwei Anwendungen auf demselben Rechner müssen diese Entscheidungen nicht aus derselben Quelle beziehen.

Ein Stammzertifikat dient als Vertrauensanker. Ein Zwischenzertifikat verbindet die darunter ausgestellten Zertifikate mit diesem Anker. Ein Zertifikatsspeicher enthält die Zertifikate oder Vertrauensentscheidungen, die ein Client zur Prüfung einer Verbindung heranzieht.

Die Liste der Stammzertifikate allein beschreibt das Verhalten eines Clients nicht vollständig. In der Diskussion des Mozilla-Stammzertifikatsprogramms schreibt Dennis Jackson, Firefox habe am 17. Oktober um 22:59 UTC eine OneCRL-Sperre erhalten. Am 20. Oktober entfernte Mozilla anschließend ein Stammzertifikat aus NSS, um nachgelagerte Nutzer ohne OneCRL zu schützen. Das Chrome Root Program beschreibt eine separate CRLSet-Sperre vom 17. Oktober anhand des Hashwerts des öffentlichen Schlüssels. Sie erfasste sowohl die ursprünglichen als auch die kreuzsignierten TLS-Zertifikate. Originalmitteilungen der Stammzertifikatsprogramme.

Diese Schutzmechanismen erreichen unterschiedliche Programme. Ein Tool, dessen Zertifikatsliste aus dem Umfeld eines Browsers stammt, übernimmt nicht zwangsläufig auch die Aktualisierungen der Sperrliste dieses Browsers.

Schutzmechanismus Was Sie für Ihren Client feststellen müssen
Sperre im Browser oder Framework Die eingesetzte Anwendung verwendet tatsächlich den geschützten Prüfpfad
Aktualisiertes Zertifikatspaket Der Prozess lädt dieses Paket und keine separate Datei oder eingebettete Kopie
Sperrliste für Zwischenzertifikate Der Client bezieht diese Sperrliste und wendet sie an
Entferntes Stammzertifikat Der aktive Zertifikatsspeicher des eingesetzten Clients enthält die beabsichtigte Änderung
Behelfslösung durch Administratoren Der vorgesehene Client verwendet die geänderte Datei, und Wartungsarbeiten haben sie nicht ersetzt

Diese Tabelle unterstützt Ihre Bearbeitung, ersetzt aber keine Herstelleranweisung. Das Entfernen eines Stammzertifikats kann auch legitime Zertifikatsketten beeinträchtigen, die nichts mit den kompromittierten Zwischenzertifikaten zu tun haben. Apple warnt ausdrücklich davor. Verwenden Sie das dokumentierte Vorgehen für den Client, für den Sie verantwortlich sind. Apples Hinweise zum Vorfall.

Unser früherer Leitfaden zur Wiederherstellung nach einer Domainübernahme erklärt, warum die Wiederherstellung von DNS und die Beantragung einer Zertifikatssperrung unterschiedliche Fragen beantworten. Hier beginnt die Aufgabe beim installierten Client: Stellen Sie fest, was er ausführt, wem er vertraut und woran Sie erkennen, dass die Korrektur ihn erreicht hat.

Welche nachgelagerten Clients müssen Sie prüfen?

Erfassen Sie die Clients, die Ihr Team tatsächlich betreibt. Gruppieren Sie sie anschließend nach ausführbaren Programmen und den Abhängigkeiten ihrer Zertifikatsprüfung. Ein Inventareintrag wie „macOS-Laptops“ oder „CI-Runner“ ist zu grob, um die passende Abhilfemaßnahme zu bestimmen.

Beginnen Sie mit einem realen Arbeitsablauf. Verfolgen Sie beispielsweise das Abrufen eines Repositorys einmal im Entwicklerterminal und einmal im Job, der Ihr Release baut. Ermitteln Sie das Programm, das die jeweilige Umgebung ausführt, und die maßgebliche Konfiguration seiner Abhängigkeiten. Ergänzen Sie weitere Clientklassen erst, wenn Sie diese in Ihrer Umgebung vorfinden.

Browser, Systemprogramme und separat installierte Programme unterscheiden

Erfassen Sie zuerst den Browser oder die Anwendung. Untersuchen Sie die Kommandozeilenprogramme anschließend gesondert. Halten Sie für jeden solchen Eintrag den Pfad der ausführbaren Datei, die Version, die relevante TLS-Bibliothek oder das TLS-Backend, die aktive Vertrauenskonfiguration und die Ausführungsumgebung fest. Tragen Sie bei ungeklärten Angaben „unbekannt“ ein und weisen Sie die Untersuchung zu.

Aus dem Paketnamen allein lässt sich der gesamte Abhängigkeitspfad nicht ableiten. Homebrews Änderung „git: do not depend on macOS’s system cURL“ wurde am 28. Oktober übernommen. Sie zeigt konkret, dass die Behebung Gits cURL-Abhängigkeit betreffen kann. Ein aktualisiertes CA-Paket allein beschreibt diese Änderung nicht.

Eine übernommene Paketänderung sagt noch nicht, welche ausführbare Datei die Shell eines Entwicklers aufruft. Auf einem Rechner können mehrere Installationen vorhanden sein. Erfassen Sie das im betroffenen Arbeitsablauf tatsächlich verwendete Programm. Klären Sie dessen Konfiguration, bevor Sie das Paketupdate als Abschlussnachweis werten.

Vorhandene Laufzeitumgebungen und mitgelieferte Speicher verfolgen

Wenn Ihre Anwendung ausgehende TLS-Verbindungen über eine Sprachlaufzeitumgebung aufbaut, beziehen Sie diese in die Untersuchung ein. Liefert eine Anwendung einen eigenen Zertifikatsspeicher mit, erfassen Sie das Anwendungsartefakt und den tatsächlich geladenen Speicher. Das sind Kategorien für Ihre Untersuchung. Daraus folgt nicht, dass jede Laufzeitumgebung oder Anwendung mit eigenem Speicher von diesem Vorfall betroffen ist.

Das Inventar sollte eine praktische Frage beantworten: Kann ein anderer Entwickler anhand Ihres Eintrags dasselbe Programm identifizieren? „Python aktualisiert“ oder „Zertifikatspaket korrigiert“ lässt zu viel offen. Eine Laufzeitversion, eine Umgebungskennung und ein Verweis auf die Konfiguration liefern nachvollziehbare Ansatzpunkte für die Prüfung.

Halten Sie abweichende Einstellungen sichtbar fest. Ist für den Prozess ausdrücklich eine Zertifikatsdatei konfiguriert, dokumentieren Sie diese Einstellung, ohne Geheimnisse offenzulegen. Eine Systemvoreinstellung ist wenig aussagekräftig, wenn die Anwendung eine eigene Auswahl vorgibt.

CI als eigene Betriebsumgebung behandeln

Ermitteln Sie bei der Build-Infrastruktur, welcher Runner oder welches Image den betreffenden Job ausgeführt hat. Erfassen Sie nach Möglichkeit einen unveränderlichen Image-Digest sowie die Clientversion und Vertrauenskonfiguration innerhalb dieser Umgebung. Ein Test auf Ihrem Laptop prüft nicht den Job, der vor einem Release Quellcode oder Abhängigkeiten abruft.

Klären Sie, wer dieses Artefakt ersetzen kann und wie der Ersatz aktive Jobs erreicht. Ein in der Registry neu gebautes Image ist nur ein Schritt. Ihr Prüfprotokoll sollte das Artefakt benennen, mit dem ein nachfolgender Job tatsächlich lief.

Ein brauchbares Inventar kann überschaubar bleiben:

Prüfbereich Zu identifizierendes installiertes Artefakt Verantwortliche Rolle
Verwalteter Entwicklerbrowser Anwendung und Version, relevanter Schutzpfad Endgeräteverwaltung
Arbeitsablauf mit Systemprogrammen Tatsächlich aufgerufene Datei, TLS-Abhängigkeit und Zertifikatsdatei Verantwortliche für Entwicklertools
Separat installiertes Kommandozeilenprogramm Paketversion und aufgerufene Datei Verantwortliche für Tools
Anwendungslaufzeitumgebung Laufzeit- oder Anwendungsartefakt und aktive Vertrauenskonfiguration Anwendungsverantwortliche
Build-Job Runner- oder Image-Kennung und darin verwendeter Client Verantwortliche für die Build-Infrastruktur

Verwenden Sie die Rollen, die es in Ihrem Team gibt. Ein Gründer kann mehrere Zeilen verantworten. Trotzdem braucht jede Zeile eine ausdrückliche Entscheidung und ein Ergebnis.

Welche Nachweise rechtfertigen den Abschluss einer Aufgabe?

Schließen Sie einen definierten Prüfbereich ab, wenn Sie die Herstellerhinweise, die eingesetzte Änderung und ein aussagekräftiges Prüfergebnis miteinander verbinden können. Lassen Sie ungeprüfte Bereiche sichtbar offen.

Das folgende Vorgehen ist unser Vorschlag für den Betrieb, keine Vorgabe von Apple oder Mozilla. Es soll Ihre Aussage zum Abschluss so präzise machen, dass jemand anderes sie beurteilen kann.

  1. Benennen Sie den betroffenen Bereich. Halten Sie fest, welche Arbeitsabläufe, Rechner oder Build-Jobs die Aufgabe umfasst. Benennen Sie Ausnahmen und noch ungeklärte Clients.
  2. Verlinken Sie die maßgeblichen Herstellerhinweise. Dokumentieren Sie, warum deren Mechanismus auf diesen Client zutrifft. Ersetzen Sie aktuelle Herstelleranweisungen nicht durch einen Diskussionskommentar.
  3. Identifizieren Sie das eingesetzte Artefakt. Halten Sie die geprüfte Programmversion, den Konfigurationsverweis oder den Image-Digest fest.
  4. Beschreiben Sie die Behebung. Dokumentieren Sie die Änderung, wer sie eingespielt hat und ob es sich um eine Behelfslösung oder die dokumentierte dauerhafte Korrektur handelt.
  5. Protokollieren Sie die Prüfung. Erfassen Sie Methode, Umgebung, Zeitpunkt, erwartetes Verhalten und beobachtetes Ergebnis.
  6. Legen Sie einen Anlass für die erneute Prüfung fest. Bestimmen Sie das Wartungsereignis oder Herstellerupdate, das eine weitere Prüfung auslösen soll.

Zertifikatsablehnung und fehlgeschlagene Anfrage unterscheiden

Eine fehlgeschlagene Verbindung beweist nicht automatisch, dass der Client die kompromittierte Zertifikatskette abgelehnt hat. Auch ein DNS-Fehler, ein unerreichbarer Server oder ein Proxy kann die Anfrage scheitern lassen.

Nutzen Sie eine freigegebene Prüfmethode, die zum Client und zu Ihrer Umgebung passt. Bewahren Sie genügend Ausgaben auf, um das relevante Ergebnis der Zertifikatsprüfung nachvollziehen zu können. Der Vermerk „Anfrage fehlgeschlagen“ genügt nicht. Halten Sie sensible Header, Tokens und interne Adressen aus Nachweisen heraus, die einem größeren Personenkreis zugänglich sind.

Schwächen Sie die Zertifikatsprüfung nicht ab, um einen Test ausführen zu können. Ist das Ergebnis uneindeutig, kennzeichnen Sie es als nicht aussagekräftig und untersuchen Sie die Ursache. Ein klares „noch nicht geprüft“ hilft mehr als eine grüne Aufgabe, deren Test den vorgesehenen Prüfpfad nie durchlaufen hat.

Einen überprüfbaren Abschlussvermerk schreiben

Betrachten Sie dieses hypothetische Beispiel. Es ist kein Messergebnis aus dem eMudhra-Vorfall:

Bereich: der Schritt zum Abrufen des Repositorys in einer Release-Pipeline. Verantwortlich: Leitung der Build-Infrastruktur. Herstellerhinweise: die zutreffende Herstelleranleitung. Artefakt: der genaue Digest des Runner-Images, das der Prüfjob verwendet hat. Änderung: aktualisierte Clientabhängigkeit samt aktiver Vertrauenskonfiguration. Prüfung: Ein freigegebener Test mit diesem eingesetzten Client ergab die erwartete Ablehnung bei der Zertifikatsprüfung; Methode, Zeitstempel und bereinigte Ausgabe sind beigefügt. Erneute Prüfung: beim nächsten Neubau des Runner-Images. Ausnahme: Entwicklerrechner bleiben eine separate Aufgabe.

Dieser Eintrag erklärt bewusst nicht das gesamte Unternehmen für geschützt. Er benennt einen geprüften Bereich und lässt einen anderen offen. Kann das Team noch nicht feststellen, welches Image ausgeführt wurde, bleibt das Artefakt unbekannt und die Aufgabe offen.

Ihr Prozess zur koordinierten Offenlegung erfasst möglicherweise bereits mehrere Hersteller. Wenden Sie dieselbe Sorgfalt auf Ihre eigene Umgebung an: Die Reaktion eines Herstellers und Ihre Nachweise zum Einsatz der Korrektur sind separate Einträge, auch wenn sie zum selben Vorfall gehören.

Wie verhindern Sie, dass eine Behelfslösung verloren geht?

Verknüpfen Sie vorübergehende Maßnahmen mit den Wartungsereignissen, die sie rückgängig machen können. Eine erfolgreiche Prüfung heute belegt nicht den Zustand einer Datei nach einem Betriebssystemupdate.

Apple warnt, dass macOS-Updates /etc/ssl/cert.pem ersetzen können. „Datei einmal geändert“ reicht daher als Betriebsanweisung nicht aus. Nutzen Sie die dokumentierten optionalen Änderungen, halten Sie die verantwortliche Person, den erwarteten Zustand und das Updateereignis fest, das eine neue Prüfung erfordert. Bevorzugen Sie die dauerhafte Herstellerkorrektur, sobald diese verfügbar und für Ihre Umgebung geeignet ist. Apples Hinweise zum Vorfall.

Beantworten Sie für jede Behelfslösung drei Fragen:

  • Welche Routinehandlung könnte diese Änderung entfernen oder umgehen?
  • Wer prüft den betroffenen Client nach dieser Handlung?
  • Bei welchem Ergebnis wird die Aufgabe zur Behebung wieder geöffnet?

Dieselben Fragen helfen auch bei einer neu gebauten Anwendung oder einem Runner-Image. Prüfen Sie den tatsächlichen Client erneut, sobald der Ersatz im Arbeitsablauf angekommen ist. Eine freigegebene Image-Konfiguration und ein Job, der noch ein älteres Artefakt ausführt, sind zwei unterschiedliche Zustände.

Halten Sie den Aufwand angemessen. Sie brauchen kein neues System zur Geräteverwaltung, um einen Image-Digest, eine Clientkonfiguration und ein Prüfergebnis festzuhalten. Für das nächste Ereignis muss jedoch eine verantwortliche Person benannt sein, besonders wenn die aktuelle Behebung ausdrücklich vorübergehend ist.

Ein Patch ohne eindeutige Offenlegungsdokumentation kann Nutzer darüber im Unklaren lassen, was sich geändert hat. Ihr interner Abschlussvermerk sollte genau diese Unsicherheit beseitigen: Was wurde behoben, wo wurde es eingespielt, was wurde geprüft und was ist noch zu tun?

Wie Kit Behebung und Prüfung der Behebung trennt

Ein Meldesystem kann die Zuständigkeit dokumentieren, während Ihre betrieblichen Werkzeuge das Verhalten der Clients feststellen. Halten Sie diese Aufgaben auseinander, wenn Sie das Ergebnis festhalten.

Im CSIRT-Prozess von Kit lässt sich eine Meldung einer Person zuweisen. Die Zustände resolved und fix_verified sind getrennt. Der Prüfschritt dokumentiert die angemeldete Person und einen optionalen Kommentar. Statusübergänge halten Person und Kommentar fest. Eine behobene Meldung kann zu in_progress zurückkehren, wenn weitere Arbeit erforderlich ist.

Diese Statusangaben führen keinen Zertifikatstest aus. Kit inventarisiert Ihre Zertifikatsspeicher nicht, ermittelt nicht die ausführbaren Programme auf Ihren Geräten, behebt keine Endgeräte und erkennt nicht automatisch, ob eine Behelfslösung überschrieben wurde. Die Kennzeichnung als geprüft verlangt keinen beigefügten Nachweis. Ihr Team muss den Prüfbereich definieren und die betrieblichen Nachweise aufbewahren, die die dokumentierte Entscheidung stützen.

Machen Sie diese Entscheidung in der Meldung nachvollziehbar: Benennen Sie die geprüften Clients, verweisen Sie auf das Prüfprotokoll und weisen Sie die verbleibende Arbeit einer verantwortlichen Person zu. Ein ungeprüfter Runner oder eine ungeprüfte Laufzeitumgebung darf nicht hinter einem pauschalen „behoben“ für den gesamten Vorfall verschwinden.

Bei dieser Art von Vorfall ist der Abschluss begründet, wenn Sie eine Aussage von der Herstellermaßnahme über den eingesetzten Client bis zum beobachteten Ergebnis nachvollziehen können. Beginnen Sie mit einem wichtigen Arbeitsablauf, erfassen Sie dessen Abhängigkeiten und schließen Sie nur ab, was Sie geprüft haben. Wenn Sie einen gemeinsamen Ort für Zuständigkeiten und die Dokumentation dieser Arbeit benötigen, testen Sie Kit.

Verwandte Artikel

Testen Sie Kit 30 Tage lang.

Recruiting, Sicherheitsmeldungen und Schulungen in einem Konto, für Teams, in denen nichts davon ein Vollzeitjob ist. 30 Tage kostenlos, Kreditkarte erforderlich. Kündigen Sie vor Ablauf, zahlen Sie nichts.

Kostenlos starten