Apples curl-Sicherheitsvorfall 12604
- Am 28. Dezember 2023 wurde im curl-Issue-Tracker der Bug-Report 12604 eingereicht.
- Der Titel des Problems lautete "flag –cacert behavior isn’t consistent between macOS and Linux" und wies darauf hin, dass sich das
--cacert-Flag unter macOS und Linux nicht konsistent verhält.
- Der Reporter zeigte, dass die mit macOS gebündelte curl-Version sich anders verhält als ein curl-Binary, das vollständig aus Open Source gebaut wurde.
Apples Version prüft den System-CA-Speicher als Zweites
- Die Kommandozeilenoption
--cacert bietet Nutzern eine Möglichkeit, curl anzuweisen, nur einem bestimmten Satz von CA-Zertifikaten zu vertrauen.
- Unter macOS scheint die von Apple bereitgestellte curl-Version den System-CA-Speicher als zweiten Schritt zu prüfen, wenn die Verifikation mit dem bereitgestellten Satz von CA-Zertifikaten fehlschlägt.
- Das ist nicht dokumentiert und für Nutzer ein unerwartetes Verhalten.
Das ist ein Sicherheitsproblem
- Wenn ein Nutzer die Prüfung mit einer von ihm angegebenen CA-Zertifikatsdatei ausführt und sich im System-CA-Speicher ein Zertifikat befindet, das den Server verifizieren kann, schlägt die Prüfung nicht fehl.
- Dadurch entsteht ein Sicherheitsproblem, bei dem Zertifikatsprüfungen erfolgreich sind, obwohl sie nicht erfolgreich sein sollten.
Apple sagt, es gebe kein Problem
- Am 8. März 2024 antwortete Apple Product Security, dass die OpenSSL-Version (LibreSSL) absichtlich den eingebauten System-Trust-Store als Standard-Vertrauensquelle verwendet.
- Da das Serverzertifikat mithilfe des eingebauten System-Trust-Stores erfolgreich verifiziert werden könne, sehe man darin kein Problem.
Ich bin anderer Meinung
- Durch diese undokumentierte Funktion ist die CA-Zertifikatsverifikation mit curl unter macOS nicht vollständig verlässlich und entspricht nicht der Dokumentation.
- Das kann Nutzer verwirren.
- Für dieses Problem wird keine CVE vergeben, da es sich nicht um eine Sicherheitslücke in der curl-Version handelt, die wir ausliefern.
- Das Problem liegt streng genommen nicht im curl-Code, sondern in der LibreSSL-Version, die Apple bereitstellt und für den curl-Build verwendet.
Meinung von GN⁺
- Dieser Vorfall unterstreicht, wie wichtig Sicherheit und Verlässlichkeit von Software sind. Wenn Nutzer nur explizit vertrauenswürdige CA-Zertifikate verwenden möchten, kann es erhebliche Sicherheitsbedenken auslösen, wenn das System implizit andere Zertifikate akzeptiert.
- Apples Reaktion zeigt, dass es eine Lücke zwischen den von Unternehmen selbst definierten Sicherheitsstandards und den Erwartungen der Open-Source-Community gibt. Das kann eine Diskussion darüber anstoßen, wie Nutzer und Entwickler Sicherheit auf der jeweiligen Plattform wahrnehmen und handhaben sollten.
- Solche Probleme heben Abhängigkeits- und Integrationsprobleme hervor, die bei der Nutzung von Open-Source-Software auftreten können. Entwickler sollten sich dieser Unterschiede bewusst sein und angemessen darauf reagieren, wenn sie Bibliotheken und Tools verwenden, die auf einer bestimmten Plattform bereitgestellt werden.
- Andere Projekte mit ähnlicher Funktionalität sind OpenSSL oder GnuTLS; sie verfolgen jeweils eigene Sicherheitsphilosophien und Implementierungsansätze. Nutzer und Entwickler können diese Alternativen in Betracht ziehen.
- Bei der Einführung von Technologie sollten das Sicherheitsmodell der jeweiligen Technik und die plattformübergreifende Kompatibilität sorgfältig geprüft werden. Dieser Vorfall macht deutlich, dass Apples LibreSSL-Implementierung anders arbeitet als das Standardverhalten von curl, und unterstreicht damit die Bedeutung technologischer Entscheidungen.
1 Kommentare
Hacker-News-Kommentare
Kritik an einer bestimmten „Funktion“ von Apple
Apples Richtlinien haben Vorrang, unabhängig von der Absicht des Besitzers eines Apple-Geräts
Erläuterung zur Nutzung des CA-Speichers von libcurl
CURLSSLOPT_NATIVE_CAgesetzt ist, verwendet libcurl den standardmäßigen CA-Speicher des Betriebssystems zur Zertifikatsvalidierung.--cacertkönnte libcurl versuchen, beide Einstellungen zu berücksichtigen, was darauf hindeutet, dass sie sich gegenseitig ausschließen könnten.Eine ähnliche Situation wie beim SQLite-F_BARRIERFSYNC-Vorfall
Notwendige Korrektur von curl entsprechend Daniels Hinweis
Probleme in der curl-Dokumentation und ein Sicherheitsmangel in libcurl
Misstrauen gegenüber in macOS enthaltener Software
Apples Standardverhalten könnte als Backdoor betrachtet werden
Kritik daran, dass Apple die Sicherheit der Nutzer nicht wichtig sei