Blog

Deep-Dive: Libcurl/curl-Schwachstellen mit hohem Schweregrad finden und beheben

October 20, 2023
Laura Verheyde

Erst vor Kurzem wurden die Sicherheits- und Entwicklungsbehörden mit einem Hinweis der curl-Projektder Hauptentwickler, Daniel Stenberg, der hat das unglückliche Schreiben fallen lassen dass eine neue Version von Curl — veröffentlicht am 11. Oktober — veröffentlicht wurde, um zwei schwerwiegende Sicherheitslücken zu beheben, von denen er eine als „wahrscheinlich die schlimmste Curl-Sicherheitslücke seit langem“ beschreibt.

EIN postmortem In Stenbergs Blog wurde darauf hingewiesen, dass die betroffenen Versionen der Curl-Bibliothek anfällig für eine HEAP-basierte Pufferüberlauf-Sicherheitslücke sind, die auf ein Legacy-Problem mit dem seit 2002 verwendeten SOCKS5-Proxyprotokoll zurückzuführen ist.

Mit seiner Verwendung als Befehlszeilentool, das bis ins Jahr 1998 zurückreicht, wird Curl weithin als eine grundlegende Säule des Internets angesehen. Aufgrund seiner langen Geschichte und seiner weit verbreiteten Nutzung handelt es sich um eine Abhängigkeit, die, wenn sie sich als anfällig herausstellt, anhaltende Auswirkungen auf die allgemeine Cybersicherheit haben könnte.

Dieser Vorfall weist Ähnlichkeiten mit dem verheerenden Log4Shell-Angriff in Log4J, eine weitere anfällige Abhängigkeit, die fast zwei Jahre später immer noch ausgenutzt wird.

>>> Testen Sie jetzt Ihr Wissen mit unserer Curl-Mission!

Die Sicherheitslücke: Buffer Overflow

Der Exploit ist detailliert unter CVE-2023-38545und wirkt sich auf die Curl-Versionen 7.69.0 bis einschließlich 8.3.0 aus. Der Hauptfehler ist eine Heap-basierte Buffer Overflow-Schwachstelle. Erste Berichte deuten darauf hin, dass eine erfolgreiche Ausnutzung zu einem verheerenderen Remote Code Execution (RCE) -Angriff führen könnte. Dies ist zwar ein möglicher Arbeitsablauf für einen Bedrohungsakteur, aber eher ein seltener Anwendungsfall als eine Tatsache.

Vielleicht besteht die einzige Rettung, um einige der Risiken zu mindern, darin, dass die böswillige Kommunikation über einen SOCKS5-Proxy geleitet werden muss, was eine relativ ungewöhnliche Bereitstellung ist.

Vergleichbar mit dem Curl-Exploit, schauen wir uns diesen Buffer Overflow-Erklärer an:

Wenn curl angewiesen wird, einen SOCKS5-Proxy zu verwenden, gibt es den Hostnamen weiter und lässt ihn vom Proxy auflösen. Wenn der Hostname jedoch die Grenze von 255 Byte überschreitet, löst curl den Hostnamen lokal auf (wie im folgenden Codeausschnitt zu sehen ist): Quelle).

Falls es einen langsamen Handshake zwischen dem Client und dem Proxy gibt, ist es möglich, dass der lange Hostname anstelle der (kürzeren) aufgelösten Adresse in den Speicherpuffer kopiert wird. Der zugewiesene Speicherbereich erlaubt nur einen 255-Byte-Wert. Wenn er also einen Wert empfängt, der diese Grenze überschreitet, überschreiten die Daten die Grenzen des Speicherpuffers.

>>> Probiere es hier selbst aus spielbare Mission!

Buffer Overflow ist ein mächtiger Angriffsvektor, der in vielen älteren Programmiersprachen weit verbreitet sein kann. In diesem speziellen Fall machte die Ausnutzung in einigen Kontexten einem schwerwiegenderen und schädlicheren Angriff in Form von RCE Platz, obwohl dieser Weg nach wie vor ungewöhnlich und unwahrscheinlich ist.

Wie können Sie das Pufferüberlaufrisiko mindern?

In dieser Phase besteht die höchste Priorität darin, die Patches auf alle anfälligen Instanzen anzuwenden. Wir möchten Sie daran erinnern, dass die Verwendung von Curl so weit verbreitet ist, dass es möglicherweise nicht unbedingt offensichtlich oder angekündigt ist, dass Komponenten Ihres Systems die verwendete Abhängigkeit enthalten. In diesem Fall sind Prüfungen und anschließendes Patchen erforderlich.

Im Allgemeinen können Pufferüberlauffehler durch die Verwendung einer speichersicheren Sprache wie Rost, wie es bei einem weitläufigen Projekt wie curl der Fall ist, ist es jedoch nicht praktikabel, in eine andere Sprache zu portieren oder aus einer Laune heraus neu zu schreiben. Wie Stenberg Anmerkungen bei der Diskussion über die Möglichkeit, mehr Abhängigkeiten zu verwenden und zu unterstützen, die in speichersicheren Sprachen geschrieben sind — oder die Alternative, Teile von Curl schrittweise stückweise zu ersetzen — „... die Entwicklung läuft... derzeit fast mit eiserner Geschwindigkeit ab und zeigt mit schmerzhafter Klarheit die damit verbundenen Herausforderungen. Curl wird auf absehbare Zeit in C geschrieben bleiben.“ Das ist kein kleines Unterfangen, und die Auswirkungen auf die Sicherheit sind immens.

Sicherheitsfehler können und werden passieren, und es ist nicht immer möglich, sich auf Scanner und Tests zu verlassen, um jeden möglichen Angriffsvektor zu erkennen. Daher ist unsere größte Waffe im Kampf gegen diese Bugs die Verpflichtung, kontinuierlich Sicherheitsbewusstsein zu entwickeln und entsprechende Fähigkeiten zu entwickeln.

Möchten Sie mehr darüber erfahren, wie Sie sicheren Code schreiben und Risiken mindern können?

Testen Sie unsere Heap Overflow Challenge kostenlos.

Wenn du an weiteren kostenlosen Codierungsrichtlinien interessiert bist, schau dir das an Sicherer Code-Coach um Ihnen zu helfen, den Überblick über die Best Practices für sichere Codierung zu behalten.

Slogan

Govern AI-driven development before it ships

Measure AI-assisted risk, enforce secure coding policy at commit, and accelerate secure delivery across your SDLC.

book a demo
Slogan

Explore more blogs

Lorem ipsum diam quis enim lobortis scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis eu volutpat odio facilisis.

browse all
Case Study
Filter Label
This is some text inside of a div block.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Learn More
Case Study
Filter Label
This is some text inside of a div block.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

Learn More
Case Study
Filter Label
This is some text inside of a div block.

One Culture of Security: How Sage built their security champions program with agile secure code learning

Discover how Sage enhanced security with a flexible, relationship-focused approach, creating 200+ security champions and achieving measurable risk reduction.

Learn More
Blog
Filter Label
This is some text inside of a div block.

The Future of AI Software Governance Is Built on Strong Partnerships

Discover why Secure Code Warrior is becoming a channel-first company and how trusted partners help organizations adopt AI Software Governance securely and at scale.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Citizen AI by Secure Code Warrior: Build an AI-Ready Workforce

Secure Code Warrior's AI literacy program for non-developer employees.

Learn More
Blog
Filter Label
This is some text inside of a div block.

Why most CISOs are navigating AI adoption blindfolded (and how they can remove it)

Today, Secure Code Warrior issued an all-new white paper covering a prescriptive, directional AI adoption model that security leaders can use to identify their adoption stage and make real progress in bringing the AI security risks within their organization under control.

Learn More

Secure AI-driven development before it ships

See developer risk, enforce policy, and prevent vulnerabilities across your software development lifecycle.

Book a demo