Zum Hauptinhalt Zur Navigation

Programmierung: Curl-Entwickler entschuldigt sich für Speicherfehler

Eine Lücke in Curl wäre laut dem Hauptentwickler mit einer sicheren Sprache vermeidbar gewesen. Der Weg dahin ist aber äußerst schwierig.
/ Sebastian Grüner
47 Kommentare News folgen (öffnet im neuen Fenster)
Daniel Stenberg, der Hauptentwickler von Curl (Bild: Daniel Stenberg/Wikimedia Commons)
Daniel Stenberg, der Hauptentwickler von Curl Bild: Daniel Stenberg/Wikimedia Commons / CC-BY-SA 4.0

Der Hauptentwickler des Open-Source-Werkzeugs Curl, Daniel Stenberg, hat die aktuelle Version 8.4.0 veröffentlicht und dabei eine mehrere Jahre alte Sicherheitslücke ( CVE-2023-38545(öffnet im neuen Fenster) ) behoben. Laut Stenberg handelte es sich um die gravierendste Lücke in Curl seit Jahren.

Die Ursache ist ein Heap-Buffer-Overflow im Ablauf eines Socks5-Proxy-Handshakes. In seinem Blog beschreibt Stenberg, wie es zu dem Fehler kam(öffnet im neuen Fenster) , und geht dabei auch auf die fehlende Speichersicherheit von C ein, in dem Curl programmiert ist.

Der Entwickler, der das Projekt seit 1996 leitet und als profilierter C-Programmierer gilt, schrieb dazu: "Wenn man den Code jetzt liest, ist es unmöglich, den Fehler nicht zu sehen. Ja, es tut wirklich weh, die Tatsache akzeptieren zu müssen, dass ich diesen Fehler gemacht habe, ohne es zu merken, und dass der Fehler dann 1.315 Tage lang unentdeckt im Code blieb. Ich bitte um Entschuldigung. Ich bin auch nur ein Mensch."

Lücke theoretisch vermeidbar

Weiter erklärte Stenberg, dass die Lücke wohl auch mit besseren Tests hätte entdeckt werden können. Aber schon jetzt nutze das Projekt zahlreiche Werkzeuge zur statischen Analyse und die Lücke sei dabei nicht aufgefallen. Wie der Entwickler aber ebenfalls selbst schrieb, hätte diese Art Lücke durch die Wahl einer Programmiersprache mit Speichersicherheit verhindert werden können.

Curl auf eine andere Sprache zu portieren, könne das Projekt, das fast ausschließlich von Stenberg selbst vorangetrieben wird, nicht leisten. Jedoch sollten mehr Abhängigkeiten mit einer speichersicheren Sprache genutzt werden, erklärte der Entwickler. Künftig könnten auch stückweise Teile von Curl ersetzt werden, wie dies mit Hyper(öffnet im neuen Fenster) geschehe.

Dabei handelt es sich um eine in Rust geschriebene HTTP-Bibliothek, die Curl als Backend nutzen kann. Diese Veränderungen geschähen derzeit aber nur sehr langsam und zeigten mit schmerzhafter Klarheit die damit verbundenen Probleme, so Stenberg.


Relevante Themen