Am Ende zeigte Jeff Johnsons Tweet deutlich die Grundursache. Es stellte sich heraus, dass der OCSP-Responderdienst von Apple zu überlastet war, sodass macOS die kryptografischen Zertifikate von Anwendungsentwicklern nicht überprüfen konnte.
Aber warum befindet sich OCSP Responder auf dem kritischen Pfad zum Starten von Anwendungen? In diesem Artikel werden wir kurz die Codesignatur erläutern, wie das Online Certificate Status Protocol (OCSP) funktioniert, warum es völlig falsch ist und einige der besten Alternativen. Im Gegensatz zu anderen Anmerkungen zu diesem Vorfall möchte ich die praktischen kryptografischen Aspekte (auf hoher Ebene) diskutieren und eine ausgewogene Perspektive bieten.
Codesignatur
Auf dem Entwicklerportal erklärt Apple den Zweck der Codesignatur:
Durch das Signieren des Codes Ihrer App wird sichergestellt, dass Benutzer aus einer bekannten Quelle stammen und seit der letzten Signierung nicht geändert wurden. Eine App muss mit einem von Apple ausgestellten Zertifikat signiert sein, bevor sie integriert, auf einem Gerät installiert oder in den App-Katalog aufgenommen werden kann.
Mit anderen Worten, damit eine App unter macOS vertrauenswürdig ist, muss sie mit einem eigenen, auf Schlüsselpaaren basierenden Zertifikat signiert sein. Ein Schlüsselbund wird verwendet, um ein eindeutiges "Entwickler-ID" -Zertifikat zu erstellen, das einen privaten Schlüssel zur Verwendung durch den Entwickler und einen öffentlichen Schlüssel zur Verteilung enthält. Wenn Apple ein Entwickler-ID-Zertifikat signiert hat, kann der Entwickler mit dem privaten Schlüssel bei jeder Version kryptografische Signaturen für seine Apps erstellen.
Beim Start der Anwendung wird ihre Signatur anhand des öffentlichen Schlüssels des Entwicklerzertifikats überprüft. Das Zertifikat selbst wird dann überprüft, um sicherzustellen, dass es nicht abgelaufen ist (Zertifikate sind normalerweise ein Jahr gültig) und dass es letztendlich vom Apple-Stammzertifikat signiert ist. Es können auch Zwischenzertifikate als Teil der Kette bis zum Stammzertifikat vorhanden sein. Dies ist eine "Vertrauenskette", da das Entwickler-ID-Zertifikat von der Anwendung signiert wurde, das Zwischenzertifikat das Entwickler-ID-Zertifikat signierte und das Apple-Stammzertifikat das Zwischenzertifikat signierte. Jedes Apple-Gerät kann diese Vertrauenskette überprüfen und daher den Start der App genehmigen.
Dies ähnelt der TLS-Infrastruktur für öffentliche Schlüssel im Internet. Aber auch grundlegend anders, da Apple die vollständige Kontrolle über seine eigene Vertrauenskette hat. Andere Zertifizierungsstellen dürfen keine gültigen Codesignaturzertifikate ausstellen, da alle Zertifikate an Apple gebunden sein müssen.
Wenn die Überprüfung fehlschlägt, wird dem Benutzer ein schreckliches Fenster angezeigt:
Feedback
Was passiert, wenn ein Entwickler gegen Apple-Richtlinien verstößt oder seinen privaten Schlüssel verliert? Die Zertifizierungsstelle muss die ausgestellten Zertifikate sofort widerrufen. Wenn ein Zertifikat böswillig verwendet wird, ist es nicht akzeptabel, Tage oder Monate zu warten, bis es auf natürliche Weise abläuft. Andernfalls würde ein Leck des privaten Schlüssels das gesamte System unbrauchbar machen.
In dieser Situation wird das Zertifikat widerrufen. Dies ist ein zusätzlicher Schritt im Prozess der Signaturüberprüfung, bei dem die Zertifizierungsstelle gefragt wird, ob das Zertifikat noch gültig ist.
Im Internet geschieht dies auf einfachste Weise. Die Zertifizierungsstelle gibt Ihnen eine Zertifikatsperrliste (Certificate Revocation List, CRL) mit den Seriennummern aller widerrufenen Zertifikate und Sie überprüfen, ob das Zertifikat nicht in der Liste enthalten ist. Browser verwendeten diesen Ansatz jedoch nicht mehr, da die Liste immer länger wurde. Besonders nach schrecklichen Exploits wie Heartbleed war ein massiver Widerruf von Zertifikaten erforderlich.
Das Online Certificate Status Protocol (OCSP) ist eine Alternative, mit der Sie Zertifikate in Echtzeit validieren können. Jedes Zertifikat enthält einen integrierten OCSP-Responder. Dies ist die von Ihnen angeforderte URL, die angibt, ob das Zertifikat widerrufen wurde. Im Fall von Apple ist dies
ocsp.apple.com... Zusätzlich zur Überprüfung der kryptografischen Gültigkeit der Signatur führen Sie jetzt jedes Mal, wenn Sie die Anwendung starten, eine Echtzeitprüfung auf der Apple-Website durch (mit etwas Caching), um festzustellen, ob das Entwicklerzertifikat weiterhin als legitim angesehen wird.
OCSP-Verfügbarkeitsproblem
Das große Problem bei OCSP besteht darin, dass der externe Dienst zu einem einzigen Fehlerpunkt wird. Was passiert, wenn der OCSP-Responder ausgefallen oder nicht verfügbar ist? Weigern wir uns nur, das Zertifikat zu verifizieren (Hard-Fail)? Oder geben wir vor, dass die Prüfung erfolgreich war (Soft-Fail)?
Apple ist gezwungen, Soft-Fail-Verhalten zu verwenden, da Anwendungen sonst nicht offline funktionieren. Alle gängigen Browser implementieren auch ein Soft-Fail-Verhalten, da OCSP-Responder traditionell unzuverlässig sind und der Browser die Site auch dann laden möchte, wenn der CA-Responder vorübergehend nicht verfügbar ist.
Soft-Fail ist jedoch keine gute Option, da ein Angreifer mit der Kontrolle über das Netzwerk Anforderungen an den Responder blockieren kann und die Überprüfung übersprungen wird. Tatsächlich wurde während dieses Vorfalls eine solche "Behebung" des Fehlers auf Twitter weit verbreitet: Der Datenverkehr wurde
ocsp.apple.comdurch eine Zeile in der Datei / etc / hosts blockiert. Viele werden diese Leitung für eine Weile verlassen, da das Deaktivieren von OCSP keine erkennbaren Probleme verursacht.
Vorfall
Wenn die OCSP-Validierung von Apple auf einem weichen Fehler basiert, warum sollten Anwendungen hängen bleiben, wenn der OCSP-Responder deaktiviert ist? Wahrscheinlich, weil es tatsächlich ein anderer Fehler war: Der OCSP-Responder war tatsächlich nicht vollständig deaktiviert. Es hat einfach nicht gut funktioniert.
Aufgrund der Belastung durch Millionen von Benutzern auf der ganzen Welt, die auf macOS Big Sur aktualisiert haben, wurden die Server von Apple langsamer und reagierten nicht richtig auf OCSP-Anfragen. Gleichzeitig funktionierten sie gut genug, dass Soft-Fail nicht funktionierte.
OCSP-Datenschutzproblem
Zusätzlich zum OCSP-Verfügbarkeitsproblem wurde das Protokoll nicht in erster Linie zum Schutz der Privatsphäre entwickelt. Die grundlegende OCSP-Anforderung enthält eine unverschlüsselte HTTP-Anforderung an den OCSP-Responder mit der Zertifikatseriennummer. Auf diese Weise kann der Antwortende nicht nur feststellen, an welchem Zertifikat Sie interessiert sind, sondern auch Ihr ISP und jede andere Person, die Pakete abfängt. Apple kann nacheinander auflisten, welche Entwickler-Apps Sie öffnen, und Außenstehende können dasselbe tun.
Die Verschlüsselung hätte hinzugefügt werden können, und es gibt eine bessere, privatere Version namens OCSP-Heften , aber Apple hat dies auch nicht getan. OCSP-Heftung ist in diesem Szenario nicht wirklich sinnvoll, aber diese Technologie zeigt, dass OCSP standardmäßig keine Daten verlieren sollte.
Bessere Zukunft
Der Vorfall löste eine lebhafte Diskussion in der Community aus. Die eine Seite sagte: "Ihr Computer gehört nicht wirklich Ihnen" und die andere argumentierte: "Es ist schwierig, Vertrauen in Anwendungen aufzubauen, aber Apple macht es gut . " Ich versuche zu zeigen, dass OCSP ohnehin eine schreckliche Möglichkeit ist, Zertifikatsperrungen zu verwalten, und dass es in Zukunft zu mehr Vorfällen im Zusammenhang mit der Verfügbarkeit und dem Datenschutz von Respondern kommen wird. Meiner Meinung nach ist dies eine schlechte technische Entscheidung - die Abhängigkeit des Application Launcher von OCSP festzulegen. Zumindest kurzfristig haben sie den Schaden gemindert, indem sie die Caching-Zeiten für Antworten verlängert haben .
Glücklicherweise ist die beste Methode zum Widerrufen von Zertifikaten, CRLite, fast ausgereift. Sie können alle Zertifikatsperrlisten auf eine angemessene Größe reduzieren. Im Scott Helme-Blog finden Sie eine gute Zusammenfassung darüber, wie CRLite Bloom-Filter verwendet, um den alten Ansatz mit einer Liste der widerrufenen Zertifikate zurückzugeben, die bis OCSP ausgeführt wurden.
MacOS-Geräte erhalten möglicherweise regelmäßig Aktualisierungen dieser CRL und führen lokale Überprüfungen des Geräts durch, um Probleme mit der OCSP-Verfügbarkeit und dem Datenschutz zu beheben. Da die Sperrliste für Entwickler-IDs jedoch viel kleiner ist als die Liste aller gesperrten PKI-Zertifikate, sollten Sie sich fragen, warum Apple keine CRLs verwendet. Sie möchten möglicherweise nicht offenlegen, welche Zertifikate widerrufen wurden.
Fazit
Alles in allem war dieser Vorfall ein guter Grund, über das Vertrauensmodell nachzudenken, das von Organisationen wie Apple und Microsoft gefördert wird. Malware ist komplexer geworden, und die meisten Benutzer können nicht feststellen, ob die Ausführung bestimmter Binärdateien sicher ist. Das Signieren von Code scheint eine großartige kryptografische Methode zu sein, um Vertrauen für Anwendungen aufzubauen und Anwendungen zumindest mit bekannten Entwicklern zu verknüpfen. Das Widerrufen von Zertifikaten ist ein notwendiger Bestandteil dieses Vertrauens.
Nur wenige Störungen im OCSP-Überprüfungsprozess beeinträchtigen jedoch die kryptografische Eleganz des Codesignierungs- und Überprüfungsprozesses. OCSP wird auch häufig für TLS-Zertifikate im Internet verwendet. Ausfälle dort sind jedoch aufgrund der großen Anzahl von Zertifizierungsstellen und der weit verbreiteten Unkenntnis von Fehlern in Browsern weniger katastrophal. Darüber hinaus sind Benutzer daran gewöhnt, dass Websites von Zeit zu Zeit nicht verfügbar sind, aber sie erwarten nicht dasselbe von Anwendungen auf ihren eigenen Computern. MacOS-Benutzer befürchteten, dass ihre eigenen Apps von Apples Infrastrukturproblemen betroffen sind. Dies ist jedoch ein unvermeidliches Ergebnis, da die Zertifikatsvalidierung von der externen Infrastruktur abhängt und keine Infrastruktur zu 100% zuverlässig ist.
Scott Helme äußert sich auch besorgt über die Autorität, die Zertifizierungsstellen erhalten, wenn das Widerrufen von Zertifikaten wirklich effektiv ist. Selbst wenn Sie sich keine Sorgen über die Möglichkeit einer Zensur machen, treten manchmal Fehler auf, die gegen die Sicherheitsvorteile abgewogen werden sollten. Wie ein Entwickler feststellte, als Apple sein Zertifikat fälschlicherweise widerrief , besteht das Risiko, auf einer isolierten Plattform ausgeführt zu werden, darin, dass Sie davon isoliert werden können.