Skip to main content

Schwerwiegende Sicherheitslücke in libcurl und curl entdeckt (CVE-2023-38545)

Artikel von
Headshot of Hadas Bloom

Hadas Bloom

feature curl vuln

4. Oktober 2023

0 Min. Lesezeit

Update: 11. Oktober 2023

Heute um 06:00 UTC haben die Maintainer von cURL die Versionen 8.4.0 von curl und libcurl veröffentlicht, um einen schwerwiegenden, heap-basierten Pufferüberlauf einzudämmen (Proof of Concept und die erste Mitteilung), der Systeme mit einer bestimmten Konfiguration und unter bestimmten Voraussetzungen betreffen könnte.

Diese Zero-Day-Sicherheitslücke ist in Paketen aus mehreren verwalteten und nicht verwalteten Open-Source-Ökosystemen vorhanden, darunter unter anderem C/C++, cargo, cocoapods, npm, NuGet, pip und pub sowie verschiedene Linux-Distributionen wie Alpine, Debian, RHEL und andere.

Dies ist die erste schwerwiegende Sicherheitslücke, die in curl seit mehreren Jahren entdeckt wurde (die letzte trat Anfang 2021 auf).

Screenshot der Tabelle zu cURL- und libcurl-Schwachstellen mit farbcodierten Schweregradbalken für aktuelle Versionen und Gesamtzahlen.
Screenshot der cURL-Schwachstellentabelle

Betroffen sind folgende Versionen von curl/libcurl (seit März 2020):

  • Betroffene Versionen: libcurl 7.69.0 bis einschließlich 8.3.0

  • Nicht betroffene Versionen: libcurl < 7.69.0 und >= 8.4.0

Die Komplexität des Exploits wird als high eingestuft; er lässt sich nur unter bestimmten Umständen auslösen. Wie im Beitrag des Maintainers How I made a heap overflow in curl erläutert, muss die anfällige Bibliothek entweder mit einem nicht kontrollierten oder kompromittierten Server kommunizieren (damit der Exploit über eine HTTP-Weiterleitung ausgelöst werden kann) oder eine vom Angreifer kontrollierte URL über einen SOCKS5-Proxy mit aktivierter Hostnamenauflösung verwenden, um die anfällige Bedingung auszulösen – und selbst dann handelt es sich um einen Heap-Überlauf mit eingeschränktem Zeichensatz. Heap-Überläufe lassen sich auf modernen Systemen äußerst schwer für die Ausführung beliebigen Codes (ACE) ausnutzen. Daher ist der Exploit so komplex.

Da die Sicherheitslücke nun veröffentlicht und erfasst ist, können Sie mit der Reporting-Funktion von Snyk betroffene Projekte finden. Wählen Sie dazu Ihre Organisation und dann in der Seitenleiste Reports aus. Wählen Sie unter „Issue details“ die Option +Add Filter, dann CVE, und geben Sie anschließend die CVE-Nummer ein: CVE-2023-38545

Snyk-Issues-Detail-Bericht mit geöffnetem CVE-Filter und CVE-2023-38545 in der Dropdown-Liste ausgewählt
Filtern Sie Ihre Ansicht nach CVE-2023-38545

Wir aktualisieren diesen Blog, sobald neue Informationen vorliegen.

Update: 4. Oktober 2023

Am 3. Oktober 2023 veröffentlichte Daniel Stenberg, langjähriger curl-Maintainer und ursprünglicher Autor, eine Mitteilung auf LinkedIn und X (ehemals Twitter) zur Veröffentlichung von curl Version 8.4.0. Diese wird eine Korrektur für „wahrscheinlich das schwerwiegendste Sicherheitsproblem seit Langem in curl“ enthalten. Dieses Problem sollte ernst genommen werden: Die Maintainer von curl haben in der Vergangenheit immer wieder betont, dass die meisten gemeldeten Sicherheitslücken in curl kein großes Risiko darstellen (ein aktuelles Beispiel ist der Artikel CVE-2020-19909 is everything that is wrong with CVEs). In diesem außergewöhnlichen Fall weisen sie jedoch ausdrücklich auf das Risiko hin – mit den Worten: „Anschnallen.“

Laut den Maintainer wird die korrigierte Version 8.4.0 am 11. Oktober 2023 gegen 06:00 UTC veröffentlicht.

Heute (4. Oktober 2023) wurden die CVEs, unter denen Informationen zur Sicherheitslücke erfasst werden, in einer GitHub-Diskussion bekannt gegeben.

CVE-2023-38545 wird der Sicherheitslücke mit hohem Schweregrad zugewiesen, die sowohl libcurl als auch curl betrifft. Außerdem wird eine weitere Sicherheitslücke mit niedrigem Schweregrad, die CVE-2023-38546 zugewiesen wurde (und nur libcurl betrifft), ebenfalls behoben.

Was wissen wir bisher?

cURL ist ein beliebtes Projekt, das sowohl die Bibliothek libcurl (für URL-Übertragungen) als auch das Kommandozeilen-Tool curl (zum Abrufen und Senden von Daten über URLs) bereitstellt. cURL wurde vor 27 Jahren erstmals veröffentlicht und wird seit 1996 überall eingesetzt.

Viele, wenn nicht sogar alle, von Snyk unterstützten Linux-Distributionen verwenden libcurl. Daher ist der potenzielle Wirkungsbereich groß.

So bereiten Sie sich auf die Behebung vor

  • Prüfen Sie frühzeitig die Verwendung von Containern und Paketen, um Ihre Gefährdung einzuschätzen

  • Ermitteln Sie Hosts, auf denen curl installiert ist, und stellen Sie fest, wie es installiert wurde

  • Prüfen Sie mit curl --version, welche curl-Version Sie verwenden

Schätzen Sie Ihre Gefährdung ein

Vor der Veröffentlichung der korrigierten Version von libcurl können Sie mit Snyk schnell herausfinden, welche Open-Source-Projekte und Container-Images betroffen sein könnten.

Rufen Sie in der Seitenleiste der Snyk-App die Dependencies auf. Öffnen Sie dort den Filter „Dependencies“ und geben Sie „curl“ ein. Sie können einzelne Versionen auswählen oder auf die Verknüpfung Select all klicken. Klicken Sie anschließend außerhalb des Filters, um die Ergebnisse anzuzeigen. Nun sehen Sie alle Ihre Projekte, in denen die ausgewählten Versionen von libcurl enthalten sind. Durchsuchen Sie die Projekte und Abhängigkeiten weiter, um Ihre Gefährdung einzuschätzen und zu priorisieren, was zuerst behoben werden sollte.

Ermitteln Sie Hosts, auf denen curl installiert ist

Viele Betriebssysteme enthalten curl standardmäßig. Wo es installiert ist, hängt vom Betriebssystem und der Installationsmethode ab. Mit folgendem Befehl prüfen Sie schnell, ob curl installiert ist und sich in Ihrem Pfad befindet: curl --version

Wenn der Befehl ohne Fehler ausgeführt wird, wird die Version von curl angezeigt, die zuerst in Ihrem Pfad gefunden wurde. Beachten Sie, dass curl möglicherweise an mehreren Orten installiert ist. Auf neueren Apple-Computern ist es beispielsweise standardmäßig unter /usr/bin/curl enthalten, möglicherweise wurde es aber auch über homebrew installiert. Mit which curl finden Sie heraus, wo sich die Version in Ihrem Pfad befindet. Unter macOS/Linux-basierten Betriebssystemen sollten Sie außerdem an folgenden Orten suchen:

  • /bin/curl

  • /usr/bin/curl

  • /usr/local/bin/curl

  • /opt/homebrew/opt/curl

Suchen Sie alle Vorkommen, die vor der Veröffentlichung der neuen Version aktualisiert werden müssen.

So reagieren Sie nach der Veröffentlichung des Updates

Bereiten Sie sich darauf vor, am Veröffentlichungstag – geplant für den 11. Oktober 2023 gegen 06:00 UTC – auf Version 8.4.0 zu aktualisieren. Sobald die neue Version verfügbar ist, wird Snyk weitere Informationen zur Sicherheitslücke veröffentlichen und diesen Blog aktualisieren (sowie hier auf mögliche Folgebeiträge verlinken).

Aktualisieren Sie anfällige Pakete und Container

Nutzen Sie die Informationen, die Sie bei der Vorbereitung gesammelt haben, um Ihre Projekte und Container-Images zu aktualisieren und die korrigierte Version von libcurl zu übernehmen. Verschiedene Ökosysteme und Linux-Distributionen aktualisieren die betroffenen Pakete möglicherweise erst nach diesem Zeitpunkt; Korrekturen werden daher wahrscheinlich nach und nach verfügbar. Manche Maintainer warten beispielsweise auf Upstream-Korrekturen, bevor sie Updates für ihre Container-Images oder Pakete veröffentlichen, während andere die Korrekturen direkt einspielen. In beiden Fällen kann Snyk Ihnen helfen, die Probleme zu finden und zu beheben.

Aktualisieren Sie curl auf Ihren Geräten

Sobald eine korrigierte Version der curl-Binärdatei verfügbar ist, aktualisieren Sie die installierten Versionen. In einem separaten Beitrag geben wir hilfreiche Tipps zur Aktualisierung: curl kann auf verschiedene Arten installiert werden, und die Aktualisierungsmethoden unterscheiden sich je nach Betriebssystem.

Was unternimmt Snyk?

Snyk hat einen Platzhalter-Hinweis zur schwerwiegenden Upstream-Sicherheitslücke veröffentlicht. Der Inhalt dieses Platzhalters wird aktualisiert, sobald weitere Erkenntnisse vorliegen.

Die Sicherheitsexperten von Snyk verfolgen aktiv die Updates zu Veröffentlichungen, Informationen zur Sicherheitslücke, Diskussionen in sozialen Medien und mehr, um unsere Kunden mit aktuellen Erkenntnissen zu versorgen. Außerdem wird untersucht, ob weitere nachgelagerte Pakete betroffen sein könnten. Wir aktualisieren diesen Blog bei Bedarf.