Skip to main content

So aktualisieren Sie cURL

Artikel von:
Micah Silverman

Micah Silverman

wordpress-sync/feature-screenshot-mockup

11. Oktober 2023

0 Min. Lesezeit

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

Die Produkte von Snyk helfen Ihnen, verwundbare Pakete und Container zu identifizieren und zu beheben. Diese Schwachstelle betrifft curl, ein Befehlszeilen-Tool, das viele Entwickler/innen täglich verwenden. Es wird auch mit vielen Betriebssystemen geliefert, sodass wir es für sinnvoll halten, Ihnen einige Tipps zu geben, wie Sie es auf Ihrem System aktualisieren können.

So aktualisieren Sie cURL auf Ihrem Betriebssystem

In diesem Abschnitt geben wir Ihnen Tipps zur Versionskontrolle und zum Upgrade für verschiedene Betriebssysteme. Wenn Sie dies im Voraus wissen, können Sie das Upgrade durchführen, sobald die Version 8.4.0 veröffentlicht wird.

Aktualisierung von cURL unter macOS

Hinweis: In diesem Abschnitt wird die Verwendung der neuesten Version von curl auf der neuesten Version von macOS behandelt, die auf M1-Macs läuft. 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. Allerdings handelt es sich dabei um eine ältere Version von curl (8.1.2). Snyk empfiehlt, eine neuere Version zu installieren und diese als Standard einzustellen, da die integrierte Version von curl bekannte Schwachstellen aufweist.

Die gute Nachricht ist, dass Sie, wenn Sie nach diesen Anweisungen auf die neueste Version aktualisieren, gut vorbereitet sind, um erneut zu aktualisieren, sobald curl 8.4.0 veröffentlicht wird.

Der beliebteste Paketmanager eines Drittanbieters für macOS ist Homebrew. Die neueste Version von curl auf Homebrew ist 8.3.0, die Mitte September veröffentlicht wurde.

Installieren Sie curl mit Homebrew, indem Sie den folgenden Befehl ausführen:

brew install curl

Sie sind noch nicht ganz fertig. Dies ist eine sogenannte Keg-only-Installation. Homebrew achtet darauf, Dienstprogramme, die standardmäßig mit macOS geliefert werden, nicht zu überschreiben oder außer Kraft zu setzen. Sie müssen also explizit zum Ausdruck bringen, dass Sie die von Homebrew installierte Version von curl anstelle der Standardversion des Systems verwenden möchten. Dazu stellen Sie sicher, dass der Pfad der Homebrew-Installation an erster Stelle in Ihrem Systempfad steht. Der Standardpfad für Homebrew-Installationen unter macOS ist /opt/homebrew (Sie können Ihren Homebrew-Pfad mit dem Befehl brew --prefix überprüfen) und Sie können Ihrem Pfad die Homebrew-Version mit dem folgenden Befehl voranstellen (unter Verwendung Ihres brew-Präfixes):

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

Hinweis: Frühere Versionen von Homebrew haben einen anderen Pfad verwendet, und frühere Versionen von macOS haben bash statt zsh verwendet.

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

curl --version

Sie sollten dann etwas wie das hier sehen:

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

Wenn Homebrew mit der Version 8.4.0 von curl aktualisiert wird, können Sie einfach den Befehlbrew install curl erneut ausführen, um die neueste Version zu erhalten. 

Wir werden diesen Beitrag aktualisieren, sobald die Version 8.4.0 für Homebrew veröffentlicht wird.

Aktualisierung von cURL unter Windows

Auf Windows 10 (Build 1803) und höher ist curl bereits vorinstalliert, allerdings in einer älteren Version. Um zu testen, ob Sie curl haben und welche Version Sie verwenden, müssen Sie die Eingabeaufforderung öffnen. Klicken Sie auf das Menü „Start“ und geben Sie cmd auf Ihrer Tastatur ein. In der Eingabeaufforderung geben Sie curl --version ein, um zu sehen, ob Sie curl installiert haben und welche Version davon. Alles, was kleiner als 8.4.0 ist, muss 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

Außerdem sollten Sie überprüfen, ob Sie die vorinstallierte Version von curl unter Windows oder eine separate curl-Installation verwenden. Überprüfen Sie dies, indem Sie where curl in Ihrer Eingabeaufforderung eingeben. Wenn der im Ergebnis angezeigte Pfad C:\\Windows\\System32 enthält, dann verweist er auf die vorinstallierte Version von curl:

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

Sobald Sie festgestellt haben, ob Sie curl installiert haben, welche Version Sie verwenden und ob es sich um die vorinstallierte Version oder eine separate Installation handelt, verfügen Sie über alle Informationen, die Sie für ein Update auf die neueste Version benötigen. Die vorinstallierte Version von curl wird von Microsoft zur Verfügung gestellt und verwaltet und kann daher nur über ein von Microsoft veröffentlichtes Windows Update sicher aktualisiert werden. Sie können nach einer offiziellen Aktualisierung für Windows suchen, indem Sie auf Ihr Startmenü klicken, „Windows Update“ eingeben und die Option „Nach Updates suchen“ auswählen. Dadurch wird die App „Einstellungen“ geöffnet und die Ansicht „Windows Update“ angezeigt. Dort können Sie auf die Schaltfläche „Nach Updates suchen“ klicken, um die neuesten von Microsoft veröffentlichten Aktualisierungen abzurufen, darunter wahrscheinlich auch die gepatchte Version von curl.

Außerhalb des offiziellen Windows Updates haben Sie einige Möglichkeiten, auf die neueste Version zu aktualisieren und diese anstelle der vorinstallierten Version zu verwenden. Bei all diesen Optionen müssen Sie Ihre PATH-Umgebungsvariablen ändern. Wenn Ihnen das unangenehm ist, sollten Sie, wie oben erwähnt, auf ein offizielles Windows Update warten.

Die Installation einer neueren Version von curl unter Windows kann auf verschiedene Weise erfolgen: 

Der schnellste und einfachste Weg, curl unter Windows zu installieren/aktualisieren, ist Winget.

Installation von cURL über Winget

Führen Sie in Ihrer Eingabeaufforderung winget install curl.curl aus. Dadurch wird curl über das Verzeichnis der Winget-Pakete installiert und zu Ihrer Umgebungsvariablen User Path hinzugefügt. Wenn Sie jedoch curl --version, ausführen, wird standardmäßig das auf Ihrem System vorinstallierte curl verwendet und nicht die neu installierte Version. 

Suchen Sie den curl-Wert, den Winget zu Ihrer User Path-Variable hinzugefügt hat, und kopieren Sie ihn. Fügen Sie ihn dann als oberste Priorität zu Ihrer System Path-Variable hinzu (über „C:\\Windows\\system32“). Sie sollte in etwa so aussehen wie die folgende:

blog-fix-curl-environ-var

Kehren Sie anschließend zu Ihrer Eingabeaufforderung zurück und führen Sie refreshenv aus, damit die Änderungen Ihrer Umgebungsvariablen übernommen werden. Führen Sie anschließend curl --version aus, um zu überprüfen, ob nun die neueste Version von curl verwendet wird, die Winget für Sie installiert hat.

Installation von cURL über Chocolatey

Installieren Sie zunächst Chocolatey, falls Sie es noch nicht haben. Weitere Informationen dazu finden Sie in der Dokumentation von Chocolatey. Nachdem es installiert wurde und einsatzbereit ist, können Sie den folgenden Befehl von der Eingabeaufforderung/dem Terminal aus als Administrator ausführen:

choco install curl
blog-fix-curl-admin-command

Sie sind jedoch noch nicht fertig. Wenn Sie curl --version ausführen, werden Sie feststellen, dass immer noch die vorherige/ältere Version angezeigt wird. Um dies zu beheben, müssen Sie Ihre Systemumgebungsvariablen aktualisieren. Klicken Sie auf Ihr Startmenü, geben Sie Systemumgebungsvariablen bearbeiten ein und wählen Sie die erste Option aus. Sobald sich das Fenster „Systemeigenschaften“ öffnet, klicken Sie auf die Schaltfläche Umgebungsvariablen…, woraufhin sich ein neues Fenster mit dem Titel Umgebungsvariablen öffnet. Suchen Sie in diesem Fenster den Abschnitt Systemvariablen und finden Sie den Eintrag für Path unter der Spalte Variable.

blog-fix-curl-system-var-path

Klicken Sie auf die Schaltfläche Bearbeiten…, um den Wert zu bearbeiten und suchen Sie den Eintrag für chocolatey unter C:\\ProgramData\\chocolatey\\bin. Wählen Sie diesen Eintrag aus und verwenden Sie die Schaltfläche Aufwärts bewegen, um ihn an den Anfang der Liste zu verschieben, und klicken Sie dann auf OK.

Geben Sie nun in der Eingabeaufforderung/im Terminal refreshenv ein, um die Änderungen, die Sie an Ihren Umgebungsvariablen vorgenommen haben, zu übernehmen. Führen Sie danach erneut curl --version aus und Sie sollten sehen, dass die aktualisierte Version nun verwendet wird. Sie können auch where curl ausführen, um die beiden installierten Instanzen von curl auf Ihrem Rechner zu sehen: die erste sollte der Installationsort Ihrer neuen Version sein und die zweite sollte den Installationsort des Systems anzeigen. Jetzt können Sie die neue Version von curl verwenden.

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

Aktualisieren von cURL unter Linux

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

Die Aktualisierung von curl unter Linux hängt weitgehend davon ab, welchen Paketmanager Ihre Distribution verwendet, aber diese Befehle sollten Ihnen eine Vorstellung davon geben, wie Sie je nach Distribution vorgehen sollten. Im Allgemeinen werden Sie den Paketmanager wahrscheinlich anweisen, den Paketindex-Cache zu aktualisieren und dann eine neue Version zu installieren. Je nach Distribution würden Sie das tun:

  • Für apt basierte Distributionen, wie Debian oder Ubuntu:

    • Aktualisieren Sie die Indizes: apt-get update

    • Neueste Version installieren: apt-get upgrade curl

  • Für Snap-Pakete (hauptsächlich Ubuntu):

    • Installieren Sie die neueste Version: snap install curl

  • Für Distributionen, die dnf verwenden, wie RHEL, Rocky und Fedora:

    • Checken Sie nach Aktualisierungen: dnf check-update

    • Installieren Sie die neueste Version: dnf install curl

  • Und für apk auf Alpine:

    • Aktualisieren Sie die Indizes: apk update

    • Installieren Sie die neueste Version: apk add curl

Beachten Sie, dass eine aktualisierte Version nur dann zu erhalten ist, wenn die verschiedenen Distributionen ihre Paketquellen aktualisieren. Wenn Sie nach der Ausführung des entsprechenden Befehls für Ihre Distribution curl --version, ausführen und die 8.4.0 nicht sehen, überprüfen Sie Ihren Pfad, um sicherzustellen, dass keine andere Version vor ihr installiert ist. Alternativ können Sie auch curl - Download aufrufen, um eine kompilierte Binärdatei für Ihre Plattform zu 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, und da sich diese Version zuerst in meinem Pfad befindet, wird sie von diesem abgeholt. Entfernen Sie die ältere Version oder nehmen Sie sie aus Ihrem Pfad, um das Problem zu lösen.

Haben Sie Mut? Bauen Sie curl selbst!

Der letzte Build aus dem Quellcode ergibt die Version 8.4.0-DEV. Es gibt zwar keine Garantie dafür, dass der neueste Code den Fix für die Schwachstelle mit hohem Schweregrad enthält, aber wenn Sie mit der Erstellung aus dem Quellcode vertraut sind, können Sie die absolut neueste Version erst am 11\. Oktober erhalten.

In diesem Abschnitt befassen wir uns mit der Erstellung auf einem M1 Mac mit MacOS Ventura. Das Entwicklerteam unter der Leitung von Daniel Stenberg (badger auf GitHub) hat einen bemerkenswerten Job gemacht, um die Erstellung von curl auf verschiedenen Betriebssystemen zu erleichtern.

In der Installations-Dokumentation gibt es einen Abschnitt über die Erstellung und Installation für Mac, der bei uns sofort funktioniert hat. Hinweis: Damit dies funktioniert, müssen Sie die Xcode Befehlszeilentools installiert haben.

Ich habe das Folgende ausgeführt, um curl zu erstellen:

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 bestätigt:

./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 dieses neu kompilierte curl dann in ein lokales ~/bin-Verzeichnis oder an einen anderen Ort in Ihrem Pfad als das Standardverzeichnis curl verschieben, bis Ihre Distribution bzw. Ihr Betriebssystem eine Aktualisierung bereitstellt. Sobald eine Aktualisierung verfügbar ist, empfehlen wir Ihnen, dieses zu übernehmen und defekte Kopien zu entfernen, um zukünftigen Schwachstellen vorzubeugen.

wordpress-sync/feature-screenshot-mockup

Sie möchten Snyk in Aktion erleben?

Snyk interviewed 20+ security leaders who have successfully and unsuccessfully built security champions programs. Check out this playbook to learn how to run an effective developer-focused security champions program.