Skip to main content

Schwachstelle mit hohem Schweregrad in libcurl und curl gefunden (CVE-2023-38545)

Artikel von:
Hadas Bloom
Hadas Bloom
Tal Dromi
Micah Silverman
Micah Silverman
feature-curl-vuln

4. Oktober 2023

0 Min. Lesezeit

Aktualisierung: 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 Heap-basierten Pufferüberlauf mit hohem Schweregrad (Proof-of-Concept und die Initial Notification) zu entschärfen, der sich auf Systeme mit einer bestimmten Konfiguration und bestimmten Voraussetzungen auswirken könnte.

Diese Zero-Day-Schwachstelle ist in Paketen verschiedener verwalteter und nicht verwalteter Open-Source-Ökosysteme vorhanden, einschließlich (aber nicht beschränkt auf) C/C++, cargo, cocoapods, npm, NuGet, pip und pub, sowie in verschiedenen Linux-Distributionen wie Alpine, Debian, RHEL und anderen.

Dies ist die erste Schwachstelle mit hohem Schweregrad, die in curl seit mehreren Jahren gefunden wurde (die letzte war Anfang 2021).

blog-curl-vuln-chart
Screenshot aus der Tabelle der cURL-Schwachstellen

Die betroffenen curl/libcurl-Versionen (seit März 2020) sind folgende:

  • 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 hoch eingestuft und kann nur in bestimmten Szenarien ausgelöst werden. Wie im Beitrag des Maintainers How I made a heap overflow in curl erläutert, erfordert die Schwachstelle, dass die verwundbare Bibliothek entweder einen unkontrollierten/kompromittierten Server kontaktiert (um über einen HTTP-Redirect ausgenutzt zu werden) oder eine vom Angreifer kontrollierte URL über einen SOCKS5-Proxy mit aktivierter Hostnamenauflösung verwendet, um die Schwachstelle auszulösen – und selbst dann handelt es sich um einen Heap Overflow mit begrenztem Zeichensatz. Heap Overflows in modernen Systemen sind extrem schwer in eine beliebige Codeausführung („Arbitrary Code Execution“, ACE) umzuwandeln; daher der hochkomplexe Exploit.

Da die Schwachstelle nun veröffentlicht und verfolgt wird, können Sie die Berichtsfunktion von Snyk verwenden, um betroffene Projekte zu finden. Wählen Sie dazu Ihre Organisation aus und wählen Sie dann Berichte in der Seitenleiste. Wählen Sie +Filter hinzufügen unter „Problemdetails“ aus, wählen Sie CVE aus und geben Sie dann die CVE-Nummer ein: CVE-2023-38545

blog-curl-vuln-filter
Filtern Sie in Ihrer Ansicht nach CVE-2023-38545

Dieser Blog wird mit allen neuen Informationen aktualisiert, sobald diese verfügbar sind.

Aktualisierung: 4. Oktober 2023

Am 3. Oktober 2023 veröffentlichte Daniel Stenberg, der langjährige Maintainer und ursprüngliche Autor von curl, sowohl auf LinkedIn als auch auf X (ehemals Twitter) einen Hinweis auf die Auslieferung von curl Version 8.4.0, die einen Fix für „das wahrscheinlich schlimmste Sicherheitsproblem, das seit Langem in curl gefunden wurde“, enthält. Dieses Problem sollte ernst genommen werden, denn die Maintainer von curl haben in der Vergangenheit das Risiko der meisten gegen curl gemeldeten Schwachstellen immer wieder heruntergespielt (ein aktuelles Beispiel ist der Artikel CVE-2020-19909 is everything that is wrong with CVEs), und in diesem einmaligen Fall weisen sie ausdrücklich auf das Risiko hin und fügen hinzu: „Schnallen Sie sich an.“

Die korrigierte Version, 8.4.0, wird nach Angaben der Maintainer am 11. Oktober 2023, gegen 06:00 UTC veröffentlicht.

Heute (4. Oktober 2023) wurden in einer GitHub-Diskussion die CVEs bekannt gegeben, die zur Aufnahme von Informationen über Schwachstellen verwendet werden sollen.

CVE-2023-38545wird dem hohen Schweregrad zugeordnet und betrifft sowohl libcurl als auch curl. Ein weiteres Problem mit niedrigem Schweregrad, das CVE-2023-38546 zugeordnet ist (und nur libcurl betrifft), wird ebenfalls behoben.

Was wir derzeit wissen?

cURL ist ein weitverbreitetes 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 erstmals vor 27 Jahren veröffentlicht und wird seit 1996 allgegenwärtig eingesetzt. 

Viele, wenn nicht sogar alle Linux-Distributionen, die Snyk unterstützt, verwenden libcurl, sodass die potenziellen Auswirkungen groß sind.

Wie Sie sich auf die Behebung vorbereiten

  • Überprüfen Sie die Nutzung Ihrer Container und Pakete im Voraus, um Ihre Gefährdung abzuschätzen

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

  • Überprüfen Sie die von Ihnen verwendete curl-Version mit curl --version

Schätzen Sie Ihre Gefährdung ab

Vor der Veröffentlichung der korrigierten Version von libcurl können Sie Snyk verwenden, um schnell die Open-Source-Projekte und Container-Images zu finden, die betroffen sein könnten. 

Navigieren Sie zu den Abhängigkeiten in der Seitenleiste der Snyk App UI. Sobald Sie sich in der Ansicht „Abhängigkeiten“ befinden, erweitern Sie den Filter „Abhängigkeiten“ und geben Sie „curl“ ein. Sie können einzelne Versionen auswählen oder die Tastenkombination Alle auswählen anklicken und dann außerhalb des Filters klicken, um die Ergebnisse zu sehen. Daraufhin werden Ihnen alle Projekte angezeigt, die die von Ihnen ausgewählten libcurl-Versionen enthalten. Sie können die Projekte und Abhängigkeiten weiter durchsuchen, um Ihre Gefährdung einzuschätzen und Prioritäten zu setzen, was Sie zuerst beheben sollten.

Identifizieren Sie Hosts, auf denen curl installiert ist

Auf vielen Betriebssystemen ist curl standardmäßig installiert, wo es installiert ist, hängt allerdings vom Betriebssystem und der Installationsmethode ab. Sie können schnell feststellen, ob curl installiert ist und sich in Ihrem Pfad befindet, indem Sie Folgendes ausführen: curl --version

Wenn das Programm keine Fehler zurückgibt, zeigt es die Version von curl an, die zuerst in Ihrem Pfad gefunden wurde. Beachten Sie, dass curl möglicherweise an mehreren Orten installiert ist. Auf neueren Apple-Computern wird es z. B. standardmäßig unter /usr/bin/curl ausgeliefert, kann aber auch über Homebrew installiert worden sein. Sie können feststellen, wo sich die Version in Ihrem Pfad befindet, indem Sie which curl ausführen. Andere Orte, an denen Sie auf macOS/Linux-basierten Betriebssystemen nachsehen können, sind z. B.

  • /bin/curl

  • /usr/bin/curl

  • /usr/local/bin/curl

  • /opt/homebrew/opt/curl

Vergewissern Sie sich, dass Sie alle Vorkommen finden, die in Vorbereitung auf die neue Version aktualisiert werden müssen.

Wie Sie reagieren sollten, sobald die Aktualisierung veröffentlicht ist

Am Tag der Veröffentlichung – geplant für den 11. Oktober 2023 gegen 06:00 UTC – sollten Sie sich darauf vorbereiten, auf Version 8.4.0 zu aktualisieren. Sobald die neue Version verfügbar ist, wird Snyk über weitere Informationen verfügen und zusätzliche Informationen über die Schwachstelle in diesem Blog veröffentlichen (und alle Folgeblogs ebenfalls hier 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 gefixte Version von libcurl zu übernehmen. Verschiedene Ökosysteme und Linux-Distributionen warten mit der Aktualisierung ihrer Nutzung der betroffenen Pakete möglicherweise bis erst nach diesem Zeitpunkt und die Verfügbarkeit der Fixes wird wahrscheinlich gestaffelt sein. Einige Maintainer warten z. B. auf Fixes, bevor sie Aktualisierungen für ihre Container-Images oder Pakete freigeben, während andere bereits Patches bereitstellen. In jedem Fall kann Snyk Ihnen helfen, die Probleme zu finden und zu beheben.

Aktualisieren Sie curl auf Ihren Geräten

Sobald eine korrigierte Version des curl-Binärprogramms verfügbar ist, aktualisieren Sie die Versionen, die Sie installiert haben. Wir werden in einem separaten Beitrag einige hilfreiche Tipps zur Aktualisierung veröffentlichen: Es gibt mehrere Möglichkeiten, curl zu installieren, und die Aktualisierungsmethoden können je nach Betriebssystem variieren. 

Was macht Snyk?

Snyk hat einen Platzhalterhinweis für das Upstream-Problem mit hohem Schweregrad veröffentlicht. Der Inhalt des Platzhalters wird aktualisiert, sobald mehr bekannt wird. 

Die Sicherheitsexperten von Snyk verfolgen aktiv die Veröffentlichung von Aktualisierungen, Informationen über Schwachstellen, Chatter in den sozialen Medien und mehr, um unseren Kunden alle eingehenden Daten zur Verfügung zu stellen. Außerdem werden Nachforschungen angestellt, um weitere nachgelagerte Pakete zu finden, die betroffen sein könnten. Wir werden diesen Blog bei Bedarf aktualisieren.