Curl 8.9.0 重磅發布:260 個錯誤修復和多項改進
瑞典開源開發者Daniel Stenberg 宣布發布Curl 8.9.0 版本,這是該項目發展史上的一個重要里程碑。此版本包含驚人的260 個錯誤修復、11 項更改和2 個安全修復。
目錄
Curl 是開源生態系統中最古老和最成熟的軟件之一。
Curl 8.9.0 是該軟件的第258 個版本,展示了該項目對改進和創新的持續承諾。
新版本包含11 項更改和令人印象深刻的260 個錯誤修復,為該項目創下了記錄。這些改進來自80 位貢獻者(包括38 位新手)的423 次提交。此版本還收到了47 位作者的貢獻,其中16 位是首次貢獻者,這展示了該項目不斷壯大的社區。
這使得貢獻者的總數達到令人印象深刻的3209 位,迄今為止已有1288 位作者為該項目做出了貢獻。
以下是Curl 8.9.0 版本統計的簡要總結:
安全仍然是Curl 的首要任務。 8.9.0 版本解決了兩個漏洞: CVE-2024-6197和CVE-2024-6874 。這些修復進一步增強了Curl 的安全特性。
第一個漏洞, CVE-2024-6197 ,是ASN1 解析器中的一個中等嚴重性問題。此漏洞涉及在utf8asn1str 函數中釋放堆棧緩衝區。
當utf8asn1str 函數檢測到無效字段並返回錯誤時,libcurl 的ASN1 解析器中會出現此問題。不幸的是,它還會在4 字節的局部堆棧緩衝區上調用free()。
第二個漏洞, CVE-2024-6874 ,是一個與URL API 中的punycode 轉換相關的低嚴重性問題。
此問題出現在libcurl 的URL API 函數curl_url_get() 中,該函數提供punycode 到IDN 的轉換。當轉換正好為256 字節的名稱時,當構建為使用macidn IDN 後端時,libcurl 會讀取堆棧緩衝區之外的內容。然後,轉換函數會完全填充提供的緩衝區,但不會以null 結尾。
Curl 8.9.0 引入了幾個新的命令行選項來增強其功能。用戶現在可以使用--ip-tos 選項設置IP 服務類型/流量類別。
--mptcp 選項啟用多路徑TCP 連接,這可能會提高網絡性能。
對於本地網絡管理,--vlan-priority 選項允許設置IP 流量的VLAN 優先級字段。
最後,--keepalive-cnt 選項允許用戶指定在將連接標記為失效之前的keepalive 探測次數。
此更新為Curl 的功能帶來了各種增強。 GnuTLS和WolfSSL現在都支持CA 緩存,這可以顯著加快串行TLS 連接的速度。
MbedTLS添加了對CURLOPT_CERTINFO 的支持,允許應用程序檢索證書信息。
URL API引入了CURLU_NO_GUESS_SCHEME 以更好地進行方案檢測。此外,用戶現在可以同時將連接綁定到接口和IP,從而在網絡配置中提供更大的靈活性。
Curl 8.9.0 引入了一個新的curl_easy_setopt() 選項和四個新的命令行選項。這些新增功能擴展了Curl 的功能,為用戶提供了更多工具和靈活性。
此版本包含創紀錄的260 個錯誤修復,這是Curl 長期歷史上最多的一次。這些改進涵蓋了各個領域,包括對CMake和配置腳本的許多增強。
文檔和幫助功能已得到改進,以提供更好的用戶體驗。團隊解決了DNS over HTTPS (DoH) 實現中的內存洩漏和崩潰問題。
HTTPS、QUIC 和TLS 連接的處理得到了改進。此版本還包括對各種操作系統和SSL 庫的更好支持,使Curl 在不同平台上更加通用。
以下是此版本中一些重要的錯誤修復:
憑藉眾多錯誤修復、新選項和安全增強功能,此版本確保Curl 仍然是強大的可靠數據傳輸工具。
您始終可以從curl.se下載新的Curl 版本。由於此版本是新的,因此尚未為大多數Linux 發行版打包。但不用擔心。您可以使用GNU Stow從源代碼安裝最新的Curl。
1 . 確保您的系統軟件包數據庫是最新的。
<code>sudo apt update # Debian/Ubuntu 系统sudo yum update # CentOS/RHEL 系统sudo dnf update # Fedora 系统sudo pacman -Syu # Arch Linux 系统</code>
2 . 如果尚未安裝必要的開發工具,請安裝它們。
<code>sudo apt install build-essential # Debian/Ubuntu sudo yum groupinstall "Development Tools" # CentOS/RHEL sudo dnf groupinstall "Development Tools" # Fedora sudo pacman -S base-devel # Arch Linux</code>
如果您想使用OpenSSL 後端編譯Curl,您還需要安裝OpenSSL 開發庫。例如,在基於Debian 的系統上,您可以使用以下命令安裝OpenSSL 開發庫:
<code>sudo apt install libssl-dev</code>
如果您想使用GnuTLS 後端編譯Curl,請在基於Debian 的系統上安裝以下內容:
<code>sudo apt install libgnutls28-dev libgnutls30</code>
3 . 安裝GNU Stow。
<code>sudo pacman -S stow # Arch Linux sudo apt install stow # Debian/Ubuntu sudo yum install stow # 旧版CentOS/RHEL sudo dnf install stow # 最新Fedora/RHEL/AlmaLinux/Rocky Linux</code>
4 . 從其官方releases頁面下載最新的Curl 源代碼並解壓縮。
<code>wget https://github.com/curl/curl/releases/download/curl-8_9_0/curl-8.9.0.tar.gz tar xvf curl-8.9.0.tar.gz</code>
5 . 使用前綴配置構建。
進入解壓縮的目錄:
<code>cd curl-8.9.0</code>
使用TLS 後端和安裝目錄配置構建,以便由GNU Stow 管理。
<code>./configure --with-ssl --prefix=/usr/local/stow/curl-8.9.0</code>
如果您想使用GnuTLS 配置Curl,請改用以下命令:
<code>./configure --with-gnutls --prefix=/usr/local/stow/curl-8.9.0</code>
6 . 編譯軟件。
<code>make</code>
7 . 安裝Curl 8.9.0
<code>sudo make install</code>
8 . 使用GNU Stow 將Curl 添加到您的PATH。
更改為stow 目錄並使用stow 管理安裝。
<code>cd /usr/local/stow sudo stow curl-8.9.0</code>
9 . 驗證Curl 是否已正確安裝並可用。
<code>curl --version</code>
示例輸出:
<code>curl 8.9.0 (x86_64-pc-linux-gnu) libcurl/8.9.0 GnuTLS/3.7.1 zlib/1.2.11 libidn2/2.3.0 Release-Date: 2024-07-24 Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS HSTS HTTPS-proxy IDN IPv6 Largefile libz NTLM SSL threadsafe TLS-SRP UnixSockets</code>
由於Curl 8.9.0 的發布週期延長,開發者表示下一個版本8.10.0 將縮短週期。
他還補充說,Curl 8.10.0 的功能窗口只有兩週,這可能會影響可以合併的新功能和更改的數量。
儘管如此,仍有大量待合併的請求請求正在等待發布窗口打開。
如果一切順利, Curl 8.10.0預計將於2024 年9 月11 日發布。即將發布的版本將延續Curl 著稱的改進和創新傳統。
更多詳細信息,請查看官方發行說明:
相關閱讀:
請注意,圖片的格式保持不變,因為我沒有修改輸入文本中圖片的格式信息。 我使用了類似的標題和描述來保持文章大意不變。
以上是Curl 8.9.0發布:新功能,錯誤修正以及如何安裝的詳細內容。更多資訊請關注PHP中文網其他相關文章!