Skip to main content

So aktualisieren Sie cURL

11. Oktober 2023

0 Min. Lesezeit

Am 3. Oktober 2023 kündigte das curl-Team vorab einen ausstehenden Fix für eine Schwachstelle mit hohem Schweregrad an, die sowohl libcurl als auch curl betrifft.

Mit Snyk-Produkten können Sie anfällige Pakete und Container identifizieren und korrigieren. Diese Schwachstelle betrifft jedoch curl, ein Befehlszeilentool, das viele Entwickler täglich verwenden. Außerdem wird es mit vielen Betriebssystemen ausgeliefert. Deshalb möchten wir Ihnen einige Tipps geben, wie Sie curl auf Ihrem System aktualisieren können.

So aktualisieren Sie cURL unter Ihrem Betriebssystem

In diesem Abschnitt finden Sie Hinweise zur Versionsprüfung und zum Upgrade für verschiedene Betriebssysteme. Wenn Sie diese Schritte im Voraus kennen, können Sie das Upgrade durchführen, sobald Version 8.4.0 verfügbar ist.

cURL unter macOS aktualisieren

Hinweis: In diesem Abschnitt geht es darum, die neueste curl-Version unter der neuesten macOS-Version auf M1-Macs zu verwenden. Bei Intel-Macs oder älteren macOS-Versionen können die Ergebnisse abweichen.

Unter macOS Ventura (13.5.2) und höher ist curl standardmäßig installiert. Dabei handelt es sich jedoch um eine ältere curl-Version (8.1.2). Snyk empfiehlt, eine neuere Version zu installieren und als Standard festzulegen, da die integrierte curl-Version bekannte Schwachstellen aufweist.

Die gute Nachricht: Wenn Sie curl anhand dieser Anleitung auf die neueste Version aktualisieren, sind Sie bestens vorbereitet, um erneut ein Update durchzuführen, sobald curl 8.4.0 verfügbar ist.

Der beliebteste Paketmanager eines Drittanbieters für macOS ist Homebrew. Die neueste curl-Version in Homebrew ist 8.3.0 und wurde Mitte September veröffentlicht.

Installieren Sie curl mit Homebrew, indem Sie Folgendes ausführen:

brew install curl

Ganz fertig sind Sie damit noch nicht. Diese Art der Installation wird als „keg only“ bezeichnet. Homebrew überschreibt oder ersetzt standardmäßig keine Dienstprogramme, die mit macOS ausgeliefert werden. Sie müssen also ausdrücklich festlegen, dass Sie die mit Homebrew installierte curl-Version anstelle der Systemversion verwenden möchten. Dafür muss der Pfad zur ausführbaren Homebrew-Datei an erster Stelle in Ihrem Systempfad stehen. Der Standardpfad für Homebrew-Installationen unter macOS lautet /opt/homebrew (mit dem Befehl brew --prefix können Sie Ihren Homebrew-Pfad überprüfen). Mit dem folgenden Befehl können Sie den Pfad zur Homebrew-Version an den Anfang Ihres Pfads setzen (verwenden Sie Ihr Brew-Präfix):

echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc

Hinweis: Ältere Homebrew-Versionen verwendeten einen anderen Pfad, und in älteren macOS-Versionen kam bash statt zsh zum Einsatz.

Sie können überprüfen, ob Sie die richtige curl-Version verwenden, indem Sie ein neues Terminalfenster öffnen und Folgendes ausführen:

curl --version

Die Ausgabe sollte etwa so aussehen:

curl 8.3.0 (aarch64-apple-darwin22.6.0) libcurl/8.3.0 (SecureTransport) OpenSSL/3.1.3 zlib/1.2.11 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.4 libssh2/1.11.0 nghttp2/1.56.0 librtmp/2.3 OpenLDAP/2.6.6
Release-Date: 2023-09-13

Sobald Homebrew auf curl Version 8.4.0 aktualisiert wurde, können Sie einfach erneut den Befehl brew install curl ausführen, um die neueste Version zu erhalten.

Wir aktualisieren diesen Beitrag, sobald Version 8.4.0 für Homebrew verfügbar ist.

cURL unter Windows aktualisieren

Windows 10 (Build 1803) und höher enthalten curl bereits, allerdings in einer älteren Version. Um zu prüfen, ob curl installiert ist und welche Version Sie verwenden, öffnen Sie die Eingabeaufforderung. Klicken Sie auf das Startmenü und geben Sie auf der Tastatur cmd ein. Geben Sie in der Eingabeaufforderung curl --version ein, um zu überprüfen, ob curl installiert ist und welche Version verwendet wird. Alle Versionen vor 8.4.0 müssen aktualisiert werden.

C:\Users\bc>curl --version
curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN
Release-Date: 2023-03-20
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

Prüfen Sie außerdem, ob Sie die vorinstallierte Windows-Version von curl oder eine separate curl-Installation verwenden. Geben Sie dazu in der Eingabeaufforderung where curl ein. Wenn der angezeigte Pfad C:\Windows\System32 enthält, verweist er auf die vorinstallierte curl-Version:

C: \Users\bc>where curl
C: \Windows\System32\curl.exe

Sobald Sie wissen, ob curl installiert ist, welche Version Sie verwenden und ob es sich um die vorinstallierte oder eine separate Installation handelt, haben Sie alle Informationen, die Sie für ein Update auf die neueste Version benötigen. Die vorinstallierte curl-Version wird von Microsoft bereitgestellt und verwaltet. Daher kann sie nur sicher über ein von Microsoft veröffentlichtes Windows-Update aktualisiert werden. Sie können nach einem offiziellen Windows-Update suchen, indem Sie auf das Startmenü klicken, „Windows Update“ eingeben und die Option „Nach Updates suchen“ auswählen. Dadurch wird die Einstellungen-App mit der Windows-Update-Ansicht geöffnet. Klicken Sie dort auf „Nach Updates suchen“, um die neuesten von Microsoft veröffentlichten Updates abzurufen. Wahrscheinlich enthält eines davon die korrigierte curl-Version.

Auch ohne ein offizielles Windows-Update haben Sie einige Möglichkeiten, auf die neueste Version zu aktualisieren und diese anstelle der vorinstallierten Version zu verwenden. Für all diese Optionen müssen Sie die PATH-Umgebungsvariablen ändern. Wenn Sie sich damit nicht wohlfühlen, sollten Sie wie oben beschrieben auf ein offizielles Windows-Update warten.

Es gibt mehrere Möglichkeiten, eine neuere curl-Version unter Windows zu installieren:

Am schnellsten und einfachsten lässt sich curl unter Windows mit Winget installieren bzw. aktualisieren.

cURL über Winget installieren

Führen Sie in der Eingabeaufforderung winget install curl.curl aus. Dadurch wird curl im nativen Winget-Paketverzeichnis installiert und der Pfad zur Benutzer-Path-Umgebungsvariable hinzugefügt. Wenn Sie jedoch curl --version, ausführen, wird standardmäßig die vorinstallierte curl-Version Ihres Systems und nicht die neu installierte Version verwendet.

Suchen Sie den von Winget zur Benutzer-Path-Variablen hinzugefügten curl-Pfad und kopieren Sie ihn. Fügen Sie ihn anschließend mit höchster Priorität (vor „C:\Windows\system32“) zu Ihrer System-Path-Variablen hinzu. Das sollte etwa so aussehen:

Windows-Dialogfeld „Umgebungsvariable bearbeiten“ mit PATH-Einträgen, darunter ein ausgewählter cURL-Installationsordner.

Kehren Sie anschließend zur Eingabeaufforderung zurück und führen Sie refreshenv aus, damit die Änderungen an Ihrer Umgebungsvariable übernommen werden. Sobald der Vorgang abgeschlossen ist, führen Sie curl --version aus, um zu überprüfen, ob nun die neueste von Winget installierte curl-Version verwendet wird.

cURL über Chocolatey installieren

Installieren Sie zunächst Chocolatey, falls Sie es noch nicht haben. Weitere Informationen dazu finden Sie in der Dokumentation von Chocolatey. Nach der Installation können Sie als Administrator den folgenden Befehl in der Eingabeaufforderung bzw. im Terminal ausführen:

choco install curl
Windows-Administrator-Eingabeaufforderung mit Chocolatey, das curl installiert und zur Ausführung des Paketinstallationsskripts auffordert

Damit sind Sie noch nicht fertig. Wenn Sie curl --version ausführen, werden Sie feststellen, dass weiterhin die vorherige bzw. ältere Version angezeigt wird. Um das zu beheben, müssen Sie die Systemumgebungsvariablen aktualisieren. Klicken Sie auf das Startmenü, geben Sie Systemumgebungsvariablen bearbeiten ein und wählen Sie den ersten Treffer aus. Klicken Sie im Fenster „Systemeigenschaften“ auf die Schaltfläche Umgebungsvariablen…. Daraufhin öffnet sich ein neues Fenster mit dem Titel Umgebungsvariablen. Suchen Sie in diesem Fenster im Abschnitt Systemvariablen unter der Spalte Variable nach dem Eintrag Path.

Dialogfeld „Windows-Systemvariablen“ mit ausgewählter Path-Variablen und ihrem durch Semikolons getrennten Wert.

Klicken Sie auf die Schaltfläche Bearbeiten…, um den Wert zu bearbeiten, und suchen Sie den Chocolatey-Eintrag C:\ProgramData\chocolatey\bin. Wählen Sie den Eintrag aus und verschieben Sie ihn mit der Schaltfläche Nach oben an den Anfang der Liste. Klicken Sie anschließend auf OK.

Geben Sie nun in der Eingabeaufforderung bzw. im Terminal refreshenv ein, damit die Änderungen an Ihren Umgebungsvariablen übernommen werden. Führen Sie anschließend erneut curl --version aus. Nun sollte die aktualisierte Version verwendet werden. Mit where curl können Sie außerdem die beiden installierten curl-Instanzen auf Ihrem Computer anzeigen lassen: Der erste Eintrag sollte auf den Speicherort Ihrer neu installierten Version verweisen, der zweite auf den Speicherort der Systeminstallation. Jetzt können Sie die neue curl-Version verwenden.

C:\Users\bc>where curl
C:\ProgramData\chocolatey\bin\curl.exe
C:\Windows\System32\curl.exe

cURL unter Linux aktualisieren

Wenn Sie curl --version ausführen und feststellen, dass Sie eine anfällige Version verwenden, können Sie sie auf Ihrem System aktualisieren, sobald die korrigierte Version verfügbar ist.

Wie Sie curl unter Linux aktualisieren, hängt maßgeblich davon ab, welchen Paketmanager Ihre Distribution verwendet. Die folgenden Befehle geben Ihnen jedoch einen Überblick über die Vorgehensweise für Ihre Distribution. In der Regel müssen Sie den Paketmanager anweisen, den Paketindex-Cache zu aktualisieren und anschließend eine neue Version zu installieren. Je nach Distribution gehen Sie folgendermaßen vor:

  • Für Distributionen auf Basis von apt, etwa Debian oder Ubuntu:

    • Indizes aktualisieren: apt-get update

    • Neueste Version installieren: apt-get upgrade curl

  • Für Snap-Pakete (vor allem unter Ubuntu):

    • Neueste Version installieren: snap install curl

  • Für Distributionen mit dnf, etwa RHEL, Rocky und Fedora:

    • Nach Updates suchen: dnf check-update

    • Neueste Version installieren: dnf install curl

  • Und für apk unter Alpine:

    • Indizes aktualisieren: apk update

    • Neueste Version installieren: apk add curl

Beachten Sie, dass ein Upgrade voraussetzt, dass die Paket-Repositories der jeweiligen Distribution aktualisiert werden. Wenn Sie nach Ausführung des passenden Befehls für Ihre Distribution curl --version, ausführen und Version 8.4.0 nicht angezeigt wird, überprüfen Sie Ihren Pfad. Möglicherweise ist eine andere Version an einer früheren Stelle eingetragen. Alternativ können Sie unter curl – Download eine kompilierte Binärdatei für Ihre Plattform finden.

$ curl --version
curl 7.81.0 …

$ which curl
/home/ubuntu/bin/curl

$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$ /usr/bin/curl --version
curl 8.4.0 …

Im obigen Beispiel befindet sich eine Kopie der älteren Version unter ~/bin/curl. Da dieser Pfad an erster Stelle in meinem Pfad steht, wird diese Version verwendet. Entfernen Sie die ältere Version oder nehmen Sie sie aus Ihrem Pfad, um das Problem zu beheben.

Mutig genug? Erstellen Sie curl selbst!

Die neueste Version, die sich aus dem Quellcode erstellen lässt, ist 8.4.0-DEV. Es gibt zwar keine Garantie, dass der neueste Code bereits den Fix für die schwerwiegende Schwachstelle enthält. Wenn Sie jedoch mit dem Erstellen aus dem Quellcode vertraut sind, können Sie am 11. Oktober die allerneueste Version erhalten.

In diesem Abschnitt zeigen wir, wie Sie die Software auf einem M1-Mac mit macOS Ventura erstellen. Das Entwicklerteam unter der Leitung von Daniel Stenberg (auf GitHub als badger) hat hervorragende Arbeit geleistet, curl für verschiedene Betriebssysteme einfach erstellbar zu machen.

Die Installationsdokumentation enthält einen Abschnitt zum Erstellen und Installieren auf dem Mac, der bei uns sofort funktioniert hat. Hinweis: Dafür müssen die Xcode-Befehlszeilentools installiert sein.

Zum Erstellen von curl habe ich Folgendes ausgeführt:

autoreconf -fi
export ARCH=arm64
export SDK=macosx
export DEPLOYMENT_TARGET=13.0
export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET"
./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport
make -j8

Anschließend habe ich den Build mit folgendem Befehl überprüft:

./src/.libs/curl --version

curl 8.4.0-DEV (aarch64-apple-darwin) libcurl/8.4.0-DEV SecureTransport zlib/1.2.11
Release-Date: [unreleased]

Sie können die neu kompilierte Version von curl dann in einem lokalen Verzeichnis wie ~/bin ablegen oder an einer früheren Stelle in Ihrem Pfad als das standardmäßige curl, bis Ihre Distribution bzw. Ihr Betriebssystem ein Update bereitstellt. Sobald ein Update verfügbar ist, empfehlen wir Ihnen, dieses zu verwenden und nicht autorisierte Kopien zu entfernen, um sich vor zukünftigen Schwachstellen zu schützen.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.