So aktualisieren Sie cURL
Micah Silverman
11. Oktober 2023
0 Min. LesezeitAm 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:
Über einen Windows-Paketmanager (wie Homebrew für macOS):
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:
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
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.
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.
Beginnen Sie mit Capture the Flag
Lernen Sie, wie Sie Capture the Flag-Herausforderungen lösen, indem Sie sich unseren virtuellen 101-Workshop auf Abruf ansehen.