GLSA-202210-09:Rust:多個弱點

critical Nessus Plugin ID 166161

語系:

說明

遠端主機受到 GLSA-202210-09 中所述的弱點影響 (Rust:多個弱點)

- 在 Rust 1.50.0 版之前的標準程式庫中,read_to_end() 不會在不安全的內容中驗證 Read 的傳回值。此錯誤可導致緩衝區溢位。(CVE-2021-28875)

- 在 Rust 1.52.0 版之前的標準程式庫中,Zip 實作有一個錯誤的安全性問題。當基礎迭代器發生錯誤時 (在某些情況下),
程式會針對相同的索引多次呼叫 __iterator_get_unchecked()。由於未滿足 TrustedRandomAccess 特質的安全性需求,此錯誤可導致記憶體安全違規。(CVE-2021-28876)

- 在 Rust 1.51.0 之前版本的標準程式庫中,Zip 實作會在嵌套時針對相同的索引多次呼叫 __iterator_get_unchecked()。由於未滿足 TrustedRandomAccess 特質的安全性需求,此錯誤可導致記憶體安全違規。(CVE-2021-28877)

- 在 Rust 1.52.0 之前版本的標準程式庫中,next_back() 和 next() 一起使用時,Zip 實作會針對相同的索引 (在某些情況下) 多次呼叫 __iterator_get_unchecked()。由於未滿足 TrustedRandomAccess 特質的安全性需求,此錯誤可導致記憶體安全違規。(CVE-2021-28878)

- 在 Rust 1.52.0 之前版本的標準程式庫中,由於存在整數溢位問題,Zip 實作會報告大小不正確。再次使用已消耗的 Zip 迭代器時,此錯誤可導致緩衝區溢位。
(CVE-2021-28879)

- 在 1.53.0 之前的 Rust 版本中,library/std/src/net/parser.rs 未正確考量 IP 位址字串開頭的無關零字元,由於非預期的八進位轉譯,(在某些情況下) 允許攻擊者繞過以 IP 位址為基礎的存取控制。(CVE-2021-29922)

- 在 Rust 1.52.0 之前版本的標準程式庫中,如果釋放元素錯誤,Vec: : from_iter 函式中會發生重複釋放。(CVE-2021-31162)

- Dell EMC Avamar Server 19.4 版的 AvInstaller 中存在純文字密碼儲存弱點。本機攻擊者可能會利用此弱點,造成特定的使用者憑證遭到洩漏。攻擊者或可利用洩漏的憑證,以遭入侵帳戶的權限存取有弱點的應用程式。(CVE-2021-36317)

- Dell EMC Avamar 18.2、19.1、19.2、19.3、19.4 版中存在純文字密碼儲存弱點。高權限使用者可能利用此弱點,造成程式完全中斷。
(CVE-2021-36318)

- ** 爭議 ** 在 Unicode 規格 14.0 和之前所有版本的雙向演算法中發現一個問題。它允許透過控制序列對字元進行視覺重新排序,這可用於特製原始程式碼,以呈現與編譯器和解譯器提取的 token 邏輯順序不同的邏輯。攻擊者可利用此弱點為接受 Unicode 的編譯器編碼原始程式碼,進而以隱形方式將目標弱點引入人工檢閱者程式。注意:Unicode Consortium 提供以下替代方法來呈現此問題。在國際文字的本質中發現一個問題,其可影響實作 Unicode 標準和 Unicode 雙向演算法 (所有版本) 支援的應用程式。由於文字顯示行為的緣故,當文字包含從左到右和從右到左的字元時,token 的視覺順序可能與其邏輯順序不同。
此外,爲了完全支援雙向文字的需求而需要的控製字元可能進一步混淆 token 的邏輯順序。除非此問題得到緩解,否則攻擊者可透過特製的原始程式碼,造成人工檢閱者感知到的 token 順序與編譯器/解譯器等要處理的順序不符。Unicode Consortium 已在其「Unicode 技術報告 #36:Unicode 安全性注意事項」文件中記錄此類弱點。Unicode Consortium 也在「Unicode 技術標準 #39」的 「Unicode 安全性機制」和 Unicode 標準附件 #31「Unicode 識別碼和模式語法」中提供此類問題的緩解指南。此外,BIDI 規格允許應用程式以減輕程式文字中具有誤導性的視覺重新排序的方式來自訂實作。請參閱 Unicode 標準附件 #9「Unicode 雙向演算法」中的 HL4。
(CVE-2021-42574)

- ** 爭議 ** 在 Unicode 規格 14.0 和之前所有版本的字元定義中發現一個問題。該規格允許攻擊者使用在視覺上與目標識別碼相同的同形文字產生原始程式碼識別碼,例如函式名稱。攻擊者可利用此弱點,透過對抗性識別碼定義在上游軟體中注入程式碼,然後在下游軟體中以誘騙方式叫用。注意:Unicode Consortium 提供以下替代方法來呈現此問題。在國際文字的本質中發現一個問題,其可影響實作 Unicode 標準 (所有版本) 支援的應用程式。除非採取緩解措施,否則攻擊者可使用在視覺上與目標識別碼相同但實際不同的同質字元來產生原始程式碼識別碼。透過這種方式,攻擊者可在上游軟體中注入人類檢閱者無法偵測到的對抗性識別碼定義,並在下游軟體中以誘騙方式叫用。Unicode Consortium 已在其「Unicode 技術報告 #36:Unicode 安全性注意事項」文件中記錄此類安全性弱點。Unicode Consortium 也在「Unicode 技術標準 #39」的 「Unicode 安全性機制」中提供此類問題的緩解指南。(CVE-2021-42694)

- Rust 是一種多範式、通用的程式設計語言,專為效能和安全性而設計,特別是安全並行性。Rust 安全性回應工作組得知,「std: : fs: : remove_dir_all」標準程式庫函式容易受到啟用符號連結之爭用情形的影響 (CWE-363)。攻擊者可利用此安全性問題,誘騙有權限的程式刪除其無法存取或刪除的檔案和目錄。Rust 1.0.0 版至 Rust 1.58.0 版會受到此弱點影響,其中 1.58.1 版包含一個修補程式。請注意,下列建構目標不提供可用的 API 來適當緩解攻擊造成的影響。因此,即使使用修補過的工具鏈(macOS 10.10 之前版本 (Yosemite) 和 REDOX),這些目標仍會受到影響。我們建議所有使用者盡快更新至 Rust 1.58.1,尤其是開發預期在有權限的內容中執行程式 (包括系統程序和 setuid 二進位檔) 的人員,因為這些人受此問題影響的風險最高。請注意,於呼叫 remove_dir_all 之前在程式碼庫中新增檢查不會緩解弱點造成的影響,因為這些檢查也容易受到 remove_dir_all 本身之類的爭用情形影響。現有的緩解措施可在爭用情形之外正常運作。(CVE-2022-21658)

- Cargo 是 rust 程式設計語言的套件管理員。下載套件後,Cargo 會在磁碟上的 ~/.cargo 資料夾中解壓縮其原始程式碼,使其可供其構建的 Rust 專案使用。為了記錄擷取成功的時間,Cargo 會在擷取所有檔案後,在所擷取的原始程式碼根目錄下的 .cargo-ok 檔案中寫入 ok。據發現,Cargo 允許套件包含 Cargo 會擷取的 .cargo-ok 符號連結。然後,當 Cargo 嘗試向 .cargo-ok 寫入 ok 時,它實際上會將符號連結所指向檔案的前兩個位元組替換為 ok。
攻擊者可藉此損毀使用 Cargo 解壓縮套件的計算機上的一個檔案。請注意,由於建構指令碼和程序巨集,Cargo 允許在建構階段執行程式碼。此公告中的弱點允許攻擊者以更難以追蹤的方式執行部分可能的損害。如果您想避免受到攻擊,您的相依性仍必須受到信任,這是因為攻擊者可以使用版本指令碼和程序巨集執行相同的攻擊。所有 Cargo 版本都存在此弱點。於 9 月 22 日發佈的 Rust 1.64 中包含對此弱點的修正。
由於該弱點只是實現惡意建置指令碼或程序巨集功能的有限方式,我們決定不發佈反向移植安全性修正的 Rust point 版本。
現已提供適用於 Rust 1.63.0 的修補程式檔案 使用者可在 wg-security-response 存放庫中取得,以便構建自己的工具鏈。減輕風險 我們建議替代登錄檔的使用者謹慎下載,只在其專案中包含受信任的相依性。請注意,即使已修正這些弱點,由於建置指令碼和程序巨集,Cargo 仍允許在構建時執行任意程式碼:無論這些弱點如何,惡意相依性都能夠造成損害。多年前,crates.io 已實作伺服器端檢查,以拒絕這些類型的套件,並且 crates.io 上沒有套件可利用這些弱點。但是,crates.io 使用者在選擇其相依性時仍需謹慎,因為此處的設計也允許攻擊者觸發遠端程式碼執行攻擊。(CVE-2022-36113)

- Cargo 是 rust 程式設計語言的套件管理員。據發現,Cargo 並未限制從壓縮封存擷取的資料量。攻擊者可將特製的套件上傳至替代登錄檔,該套件可擷取超過其大小的資料 (也稱為 zip 炸彈),進而耗盡使用 Cargo 下載套件的計算機上的磁碟空間。請注意,由於建構指令碼和程序巨集,Cargo 允許在建構階段執行程式碼。此公告中的弱點允許攻擊者以更難以追蹤的方式執行部分可能的損害。如果您想避免受到攻擊,您的相依性仍必須受到信任,這是因為攻擊者可以使用版本指令碼和程序巨集執行相同的攻擊。所有 Cargo 版本都存在此弱點。於 9 月 22 日發佈的 Rust 1.64 中包含對此弱點的修正。由於該弱點只是實現惡意建置指令碼或程序巨集功能的有限方式,我們決定不發佈反向移植安全性修正的 Rust point 版本。現已提供適用於 Rust 1.63.0 的修補程式檔案 使用者可在 wg-security-response 存放庫中取得,以便構建自己的工具鏈。
我們建議替代登錄檔的使用者謹慎下載,只在其專案中包含受信任的相依性。請注意,即使已修正這些弱點,由於建置指令碼和程序巨集,Cargo 仍允許在構建時執行任意程式碼:無論這些弱點如何,惡意相依性都能夠造成損害。多年前,crates.io 已實作伺服器端檢查,以拒絕這些類型的套件,並且 crates.io 上沒有套件可利用這些弱點。但是,crates.io 使用者在選擇其相依性時仍需謹慎,因為此處仍存在與建置指令碼和程序巨集相關的相同問題。
(CVE-2022-36114)

請注意,Nessus 並未測試這些問題,而是僅依據應用程式自我報告的版本號碼作出判斷。

解決方案

建議所有 Rust 使用者皆升級至最新版本: # emerge --sync # emerge --ask --oneshot
--verbose >=dev-lang/rust-1.63.0-r1 建議所有 Rust 使用者皆升級至最新版本:# emerge --sync # emerge --ask --oneshot --verbose >=dev-lang/rust-bin-1.64.0 此外,使用 Portage 3.0.38 或更新版本的使用者應重建 @golang-rebuild set:# emerge --ask --oneshot --verbose @rust-rebuild,以確保具有 Go 二進位檔的套件沒有包含弱點的程式碼以靜態方式連結至其二進位檔

另請參閱

https://security.gentoo.org/glsa/202210-09

https://bugs.gentoo.org/show_bug.cgi?id=782367

https://bugs.gentoo.org/show_bug.cgi?id=807052

https://bugs.gentoo.org/show_bug.cgi?id=821157

https://bugs.gentoo.org/show_bug.cgi?id=831638

https://bugs.gentoo.org/show_bug.cgi?id=870166

Plugin 詳細資訊

嚴重性: Critical

ID: 166161

檔案名稱: gentoo_GLSA-202210-09.nasl

版本: 1.3

類型: local

已發布: 2022/10/16

已更新: 2023/10/9

支援的感應器: Nessus

風險資訊

VPR

風險因素: High

分數: 7.3

CVSS v2

風險因素: High

基本分數: 7.5

時間分數: 5.9

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

CVSS 評分資料來源: CVE-2021-31162

CVSS v3

風險因素: Critical

基本分數: 9.8

時間分數: 8.8

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

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

弱點資訊

CPE: p-cpe:/a:gentoo:linux:rust, p-cpe:/a:gentoo:linux:rust-bin, cpe:/o:gentoo:linux

必要的 KB 項目: Host/local_checks_enabled, Host/Gentoo/release, Host/Gentoo/qpkg-list

可被惡意程式利用: true

可輕鬆利用: Exploits are available

修補程式發佈日期: 2022/10/16

弱點發布日期: 2021/4/11

參考資訊

CVE: CVE-2021-28875, CVE-2021-28876, CVE-2021-28877, CVE-2021-28878, CVE-2021-28879, CVE-2021-29922, CVE-2021-31162, CVE-2021-36317, CVE-2021-36318, CVE-2021-42574, CVE-2021-42694, CVE-2022-21658, CVE-2022-36113, CVE-2022-36114