libcurl-Bibliotheken können Sicherheitslücken aufweisen

libcurl-Bibliotheken können Sicherheitslücken aufweisen

Client for URLs oder Curl URL Request Library

Was ist eigentlich diese libcurl.dll und warum sollte mich das interessieren?

“libcurl-Bibliotheken können Sicherheitslücken aufweisen”

Ehrlich gesagt, als ich das erste Mal über libcurl gestolpert bin, dachte ich mir: “Was ist das denn schon wieder für ein kryptisches Ding?” Aber je mehr ich mich damit beschäftigt habe, desto klarer wurde mir – das ist eigentlich eine ziemlich große Sache, auch wenn es im Verborgenen arbeitet.

cURL steht für “Client for URLs” – klingt erstmal langweilig, aber dahinter steckt mehr als man denkt. Stell dir vor, du hast ein Programm auf deinem Computer, das irgendwelche Daten aus dem Internet holen muss. Vielleicht will es eine Datei runterladen, oder mit einer Website kommunizieren, oder E-Mails verschicken. Anstatt dass jeder Programmierer das Rad neu erfindet und seinen eigenen Internet-Code schreibt, können sie einfach libcurl nehmen. Das ist wie ein Baukasten für Internet-Verbindungen.

Client for URLs oder Curl URL Request Library

Die Geschichte dahinter ist eigentlich ganz interessant. 1997 – das war noch die Zeit von Dial-Up-Modems und schrecklich langsamen Internetverbindungen – hat ein schwedischer Typ namens Daniel Stenberg angefangen, ein kleines Tool zu basteln. Er wollte einfach nur Daten von Webservern herunterladen können. Was als Hobby-Projekt begonnen hat, ist heute in praktisch jedem Computer zu finden. Nicht schlecht für ein kleines Nebenprojekt, oder?

Auf Windows-Rechnern siehrtst du libcurl meist als “libcurl.dll”. Diese DLL-Dateien sind wie kleine Helferlein, die verschiedene Programme sich teilen können. Das Problem ist nur – die meisten Leute wissen gar nicht, dass sie diese Dateien haben. Sie sind einfach da, versteckt in irgendwelchen Programmordnern.

Und hier wird es interessant: libcurl kann eine ganze Menge. Es spricht nicht nur HTTP (das ist das, was Ihr Browser für Webseiten verwendet), sondern auch FTP für Dateitransfers, SMTP für E-Mails, und noch ein Haufen anderer Protokolle, von denen du wahrscheinlich noch nie gehört hast. Es ist wirklich so etwas wie ein Schweizer Taschenmesser für alles, was mit Internet-Kommunikation zu tun hat.

Jetzt kommt der Teil, der mich ursprünglich neugierig gemacht hat: Diese libcurl.dll steckt überall drin. Ihr Chrome-Browser? Nutzt libcurl. Firefox? Auch. Die meisten Download-Manager verwenden es. Wenn du Dropbox oder OneDrive installiert hast – rate mal. Sogar wenn du als Entwickler Git verwendest, steckt libcurl dahinter. Es ist wirklich erstaunlich, wie weit verbreitet diese eine kleine Bibliothek ist.

Warum verwenden so viele Programme libcurl? Ganz einfach: Es funktioniert einfach und ist ziemlich robust. Als Programmierer kannst du mit ein paar Zeilen Code komplizierte Internet-Sachen machen, ohne sich um die ganzen technischen Details kümmern zu müssen. Plus, es wird ständig weiterentwickelt und verbessert.

libcurl-Bibliotheken können Sicherheitslücken aufweisen

Aber – und hier kommt der Haken – genau diese Allgegenwart macht alte Versionen zu einem echten Problem. Stelle dir vor, du hast ein ansonsten topaktuelles System, aber irgendwo versteckt sich eine uralte libcurl.dll aus dem Jahr 2013. Das ist wie wenn du ein High-Tech-Auto fahren, aber noch die Bremsen von einem 20 Jahre alten Modell drin haben.

Diese alten Versionen, besonders die mit der Versionsnummer “0.0.0.0”, sind wirklich problematisch. 2013 war das Internet noch ein anderer Ort. Die Sicherheitsstandards waren lockerer, die Angreifer weniger raffiniert. Was damals als “sicher genug” galt, ist heute ein offenes Scheunentor.

Konkret heißt das: Diese alten libcurl-Versionen verwenden veraltete Verschlüsselungsmethoden. Du weißt schon, das kleine Schloss-Symbol in deinem Browser, das anzeigt, dass eine Verbindung sicher ist? Nun, alte libcurl-Versionen machen das nicht richtig. Oder gar nicht. Manchmal prüfst du  nicht mal, ob du wirklich mit dem Server sprichst, mit dem du sprechen willst oder mit einem Angreifer, der sich als dieser Server ausgibt.

Dann gibt es noch diese Buffer-Overflow-Geschichten. Das ist etwas technischer, aber im Grunde bedeutet es: Die Software schreibt Daten in Speicherbereiche, wo sie nicht hingehören. Angreifer können das ausnutzen, um schädlichen Code einzuschleusen. Es ist ein bisschen wie wenn du Wasser in ein Glas gießt, aber nicht aufhörst, wenn es voll ist – irgendwann läuft es über und macht alles nass.

Die meisten Leute haben keine Ahnung, dass sie möglicherweise diese Sicherheitslücken auf ihrem System haben

Was mich wirklich ärgert: Die meisten Leute haben keine Ahnung, dass sie möglicherweise diese Sicherheitslücken auf ihrem System haben. Sie updaten brav ihren Browser, ihr Betriebssystem, ihre Antivirus-Software – aber da sitzt irgendwo eine vergessene libcurl.dll aus der Steinzeit und macht alles zunichte.

Moderne libcurl-Versionen haben diese Probleme zum Glück behoben. Alles ab Version 7.68.0 (das ist von 2020) ist deutlich sicherer. Die unterstützen moderne Verschlüsselung, prüfen Zertifikate ordentlich, und die bekannten Sicherheitslücken sind gefixt. Sie können sogar das neueste HTTP/3-Protokoll, was sowohl schneller als auch sicherer ist.

Das Problem ist nur: Wie findet man diese versteckten, alten Versionen? Du kannst nicht einfach in die Systemsteuerung gehen und nachschauen. Diese DLL-Dateien verstecken sich in den Tiefen der Programmordner, oft mehrere Kopien verstreut über das ganze System.

Deshalb ist es so wichtig, Tools zu haben, die systematisch nach diesen Sicherheitsrisiken suchen können. Es ist ein bisschen wie eine Schatzsuche, nur dass man statt Schätzen nach Problemen sucht. Aber wenn man sie findet und behebt, kann das den Unterschied zwischen einem sicheren und einem angreifbaren System ausmachen.

Manchmal denke ich mir: Für so eine wichtige Komponente ist libcurl erschreckend unsichtbar. Es leistet täglich Schwerstarbeit auf Millionen von Computern, aber die meisten Nutzer wissen nicht mal, dass es existiert. Bis es ein Problem gibt. Dann wird es schnell ungemütlich.

In einer Zeit, wo Cyberangriffe immer ausgeklügelter werden und Angreifer wirklich jeden Schwachpunkt ausnutzen, können solche übersehenen, veralteten Komponenten zum Einfallstor werden. Es ist frustrierend, aber auch ein Grund, warum es wichtig ist, nicht nur die offensichtlichen Sachen im Blick zu behalten, sondern auch die versteckten Teile des Systems.

libcurl-Bibliotheken können Sicherheitslücken aufweisen

Wie mein PowerShell File Search Tool dabei hilft, versteckte Sicherheitsrisiken aufzuspüren.

libcurl-Bibliotheken können Sicherheitslücken aufweisen

Nachdem mir klar geworden war, wie problematisch diese versteckten libcurl.dll-Dateien sein können, stand ich vor einem ziemlich frustrierenden Problem: Wie zum Teufel findet man die alle? Windows hat zwar eine Suchfunktion, aber die ist – seien wir ehrlich – oft ziemlich nutzlos, wenn es um sowas geht. Sie durchsucht nicht jeden Winkel des Systems, und man bekommt auch keine vernünftigen Informationen über die gefundenen Dateien.

Deshalb habe ich angefangen, ein PowerShell-Tool zu entwickeln, das genau das macht, was ich brauchte: systematisch das gesamte System durchkämmen und mir dabei auch noch sagen, was ich da eigentlich gefunden habe. Das Resultat ist ein Tool, das ich mittlerweile täglich verwende und das mir schon so manches graue Haar erspart hat.

Das Schöne an dem Tool ist, dass es wirklich benutzerfreundlich ist. Du musst nicht irgendwelche kryptischen Kommandozeilen-Befehle eingeben oder dich durch komplizierte Menüs wühlen. Einfach das PowerShell-Skript starten, und du bekommst eine ganz normale Windows-Oberfläche – nichts Fancy, aber funktional. Du gibst den Dateinamen ein (zum Beispiel “libcurl.dll”), wählst aus, wo gesucht werden soll (standardmäßig das ganze C:-Laufwerk), und klickst auf “Suchen”.

Was dann passiert, ist eigentlich das Interessante: Das Tool geht systematisch durch jeden Ordner und jeden Unterordner des Systems. Aber im Gegensatz zu den meisten anderen Suchtools zeigt es dir dabei live an, wo es gerade sucht. Du siehst also in Echtzeit sowas wie “[150/2847] Durchsuche: C:\Program Files\Adobe\Acrobat\…”. Das ist nicht nur beruhigend, weil man sieht, dass es wirklich arbeitet, sondern auch praktisch, weil man abschätzen kann, wie lange es noch dauert.

Wenn das Tool etwas findet, sammelt es nicht einfach nur die Dateinamen. Es holt auch die Versionsinformationen raus, checkt die Dateigröße, schaut nach dem Erstellungsdatum – alles Infos, die man braucht, um zu beurteilen, ob man es mit einem Problem zu tun hat oder nicht. Diese Daten werden übersichtlich in einer Tabelle angezeigt, wo man sie sortieren und durchgehen kann.

potentiell gefährliche

Aber hier kommt der Teil, auf den ich besonders stolz bin: Das Tool weiß, worauf es bei libcurl.dll achten muss. Wenn du nach libcurl-Dateien suchst, analysiert es automatisch jede gefundene Datei und warnt dich vor potentiellen Sicherheitsrisiken. Findet es eine Datei mit der berüchtigten Versionsnummer “0.0.0.0” oder eine, die offensichtlich aus dem Jahr 2013 stammt, ploppt eine Warnung auf, die ungefähr so aussieht: “ACHTUNG: 3 potentiell gefährliche libcurl.dll Dateien gefunden!” Dann listet es jede problematische Datei auf, mit einer Risikobewertung von “KRITISCH” bis “MITTEL” und einer Erklärung, warum diese Datei problematisch ist.

Das Rechtsklick-Menü in der Ergebnisliste ist auch ziemlich praktisch geworden. Du kannst direkt aus dem Tool heraus den Ordner öffnen, in dem sich die gefundene Datei befindet – und Windows markiert die Datei sogar automatisch, so dass du sie nicht erst suchen musst. Oder du kannst dir detaillierte Informationen über die Datei anzeigen lassen, inklusive einer Sicherheitsbewertung, falls es sich um eine libcurl.dll handelt.

Was mich aber am meisten freut, ist die HTML-Berichtsfunktion. Nach einer Suche kannst du mit einem Klick einen professionell aussehenden Bericht erstellen lassen. Der enthält nicht nur eine hübsche Tabelle mit allen gefundenen Dateien, sondern auch eine Zusammenfassung und – falls problematische libcurl-Dateien dabei waren – einen großen, nicht zu übersehenden Sicherheitshinweis mit konkreten Empfehlungen. Den Bericht kannst du dann an Kollegen weiterleiten, ausdrucken, oder einfach für deine eigenen Unterlagen aufheben.

Ehrlich gesagt, das Tool ist aus der Frustration heraus entstanden, dass es nichts Vergleichbares gab, das einfach funktioniert und einem auch noch sagt, was man mit den Ergebnissen anfangen soll. Klar, es gibt professionelle Vulnerability-Scanner, die kosten aber ein Vermögen und sind völlig überkomplex für sowas wie die Suche nach veralteten DLL-Dateien. Und die Windows-Boardmittel sind, naja, suboptimal.

Das Schöne ist: Das Tool ist nicht nur für libcurl.dll nützlich. Du kannst nach jeder beliebigen Datei suchen – sei es eine andere Bibliothek, die du im Verdacht hast, oder einfach um herauszufinden, wo überall eine bestimmte Datei liegt. Ich habe es schon verwendet, um doppelte Dateien aufzuspüren, verwaiste Installationen zu finden, oder einfach um zu schauen, welche Programme noch alte Versionen von wichtigen System-Bibliotheken mitschleppen.

Am Ende des Tages ist es ein Tool, das ein sehr spezifisches Problem löst

Am Ende des Tages ist es ein Tool, das ein sehr spezifisches Problem löst: Es macht das Unsichtbare sichtbar. Diese ganzen versteckten DLL-Dateien in den Tiefen des Systems, von denen die meisten Nutzer nicht mal wissen, dass sie existieren, werden aufgespürt und bewertet. Und das Beste: Es ist kostenlos, läuft auf jedem Windows-System mit PowerShell, und man muss kein IT-Experte sein, um es zu verwenden.

Für mich ist es mittlerweile ein unverzichtbares Tool geworden. Nicht nur für die libcurl-Problematik, sondern generell für das Aufspüren von Altlasten im System. Und wenn ich sehe, wie viele problematische Dateien es manchmal findet, bin ich immer wieder froh, dass ich mir die Mühe gemacht habe, es zu entwickeln. Manchmal sind es wirklich erschreckend viele Sicherheitslücken, die da einfach so vor sich hin schlummern.

PowerShell File Search Tool libcurl.dll

Das PowerShell Tool durchsucht standardmäßig den Datenträger C:\.

PowerShell File Search Tool libcurl.dll

Nach der Suche erscheint das Ergebnis mit der Möglichkeit des Rechtsklicks für weitere Aktionen.

Suche libcurl.dll

Optional möglich die Ausgabe als HTML-Bericht zu formulieren

PowerShell Tool libcurl.dll Report

Das Skript PowerShell File Search Tool libcurl.dll könnt ihr wie gewohnt über Github NDSEDV/PS herunterladen.

Wer mag kann meinen Blog auch gerne mit einer Spende über PayPal unterstützen. Umso mehr dieser Blog unterstützt wird, umso mehr Powershell Tools kann ich freigeben. Danke