Schwachstelle mit hohem Schweregrad in libcurl und curl gefunden (CVE-2023-38545)
Hadas Bloom
Tal Dromi
Micah Silverman
4. Oktober 2023
0 Min. LesezeitAktualisierung: 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).
Die betroffenen curl
/libcurl
-Versionen (seit März 2020) sind folgende:
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
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.