Debian DLA-711-1:curl 安全性更新

critical Nessus Plugin ID 94941

概要

遠端 Debian 主機缺少一個安全性更新。

說明

CVE-2016-8615 如果寫入 cookie 狀態的 cookie jar 檔案在後續要求中重新讀取和使用,惡意的 HTTP 伺服器可以在該 cookie jar 檔案中插入任意網域的新的 cookie。此問題是和將 cookie 載入記憶體的函式有關,其會使用「fgets()」函式將指定檔案逐行讀入固定大小的緩衝區中。如果因為目的地緩衝區過小導致 fgets() 叫用無法將整行內容讀入該緩衝區,它會截斷輸出。這麼一來,惡意伺服器傳送的特長 cookie (名稱 + 值) 會儲存在檔案中,造成之後可局部讀取並正確特製該 cookie,使得其被視為另一個伺服器的 cookie。CVE-2016-8616 重複使用連線時,curl 會將使用者名稱和密碼與現有的連線進行不區分大小寫的比較。這表示如果對於有連線範圍憑證的通訊協定,存在具有適當憑證的未使用的連線,攻擊者若知道不區分大小寫的正確密碼,即可藉此重複使用該連線。CVE-2016-8617 在 libcurl 的 base64 編碼函式中,輸出緩衝區會在未檢查輸入資料大小的情況下作如下配置:malloc( insize * 4 / 3 + 4 ) 在使用者空間採用 32 位元位址的系統上 (如 x86、ARM、x32),如果資料輸入的大小至少達到 1 GB,運算式中的乘法計算會繞回。如果發生此情況,會導致輸出緩衝區配置過小,但是會寫入完整結果,因而造成覆寫輸出緩衝區背後的記憶體。若系統是採用 64 位元版本型的「size_t」,則不受此問題影響。CVE-2016-8618 稱作 curl_maprintf() 的 libcurl API 函式會遭到誘騙執行雙重釋放,這是因為使用 32 位元「size_t」變數的系統上有不安全的「size_t」乘法所致。內部還有其他很多情況可能會使用到此函式。若系統是採用 64 位元版本型的「size_t」,則不受此問題影響。CVE-2016-8619 在 curl 的 Kerberos 驗證機制實作中,會使用 security.c 的「read_data()」函式來填補必要的 krb5 結構。從通訊端讀取其中一個長度欄位時,它無法確保傳送至 realloc() 的長度參數並未設為 0。CVE-2016-8621 「curl_getdate」將給定的日期字串轉換為數字時間戳記,且它支援使用很多不同的格式和可能性來表示日期與時間。內部在剖析像是 HTTP cookie (可能來自遠端伺服器) 時亦會使用到基礎日期剖析函式,且提出條件式 HTTP 要求時也有可能使用到此函式。CVE-2016-8622 libcurl 中的 URL 百分號編碼解碼函式稱作「curl_easy_unescape」。在內部,即使此函式已設定為配置大於 2GB 的解除逸出目的地緩衝區,它仍會以帶正負號的 32 位元整數變數傳回新長度,因此長度會被截斷或是被截斷並轉變為負數值。如此會導致 libcurl 寫入超出了其堆積型緩衝區。CVE-2016-8623 libcurl 明確允許使用者在不同執行緒所利用的數個簡易句柄共用 cookie。收集要傳送到伺服器的 cookie 時,比對函式會收集所有要傳送的 cookie,並在之後立即釋放 cookie 鎖定。然而該函式只會將含有 *references* 的清單傳回到原始的名稱、值、路徑等字串。因此,如果另一個執行緒很快地取得鎖定並將其中一個原始 cookie 結構連同其字串一起釋放,可能會發生釋放後使用錯誤並導致資訊洩漏。另一個執行緒亦可從單獨 HTTP 回應或 API 呼叫來取代 cookie 內容。CVE-2016-8624 主機名稱部份結尾是「#」字元時,curl 無法正確剖析 URL 的授權單位元件,且反而會遭到誘騙而連線到不同的主機。比方說如果您使用的 URL 剖析器會在使用 curl 提出要求前,遵照 RFC 規定檢查允許網域,這就有可能帶來安全性的影響。針對 Debian 7「Wheezy」,這些問題已在 7.26.0-1+wheezy17 版本中修正。建議您升級 curl 套件。注意:Tenable Network Security 已直接從 DLA 安全性公告擷取前置描述區塊。Tenable 已盡量在不造成其他問題的前提下,嘗試自動清理並將其格式化。

解決方案

升級受影響的套件。

另請參閱

https://lists.debian.org/debian-lts-announce/2016/11/msg00018.html

https://packages.debian.org/source/wheezy/curl

Plugin 詳細資訊

嚴重性: Critical

ID: 94941

檔案名稱: debian_DLA-711.nasl

版本: 2.8

類型: local

代理程式: unix

已發布: 2016/11/18

已更新: 2021/1/11

支援的感應器: Agentless Assessment, Frictionless Assessment Agent, Nessus Agent, Nessus

風險資訊

VPR

風險因素: Medium

分數: 5.9

CVSS v2

風險因素: High

基本分數: 7.5

時間分數: 5.5

媒介: CVSS2#AV:N/AC:L/Au:N/C:P/I:P/A:P

CVSS v3

風險因素: Critical

基本分數: 9.8

時間分數: 8.5

媒介: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

時間媒介: CVSS:3.0/E:U/RL:O/RC:C

弱點資訊

CPE: p-cpe:/a:debian:debian_linux:curl, p-cpe:/a:debian:debian_linux:libcurl3, p-cpe:/a:debian:debian_linux:libcurl3-dbg, p-cpe:/a:debian:debian_linux:libcurl3-gnutls, p-cpe:/a:debian:debian_linux:libcurl3-nss, p-cpe:/a:debian:debian_linux:libcurl4-gnutls-dev, p-cpe:/a:debian:debian_linux:libcurl4-nss-dev, p-cpe:/a:debian:debian_linux:libcurl4-openssl-dev, cpe:/o:debian:debian_linux:7.0

必要的 KB 項目: Host/local_checks_enabled, Host/Debian/release, Host/Debian/dpkg-l

可輕鬆利用: No known exploits are available

修補程式發佈日期: 2016/11/17

弱點發布日期: 2018/7/31

參考資訊

CVE: CVE-2016-8615, CVE-2016-8616, CVE-2016-8617, CVE-2016-8618, CVE-2016-8619, CVE-2016-8621, CVE-2016-8622, CVE-2016-8623, CVE-2016-8624