GLSA-202312-15:Git:多個弱點

critical Nessus Plugin ID 187314

語系:

說明

遠端主機受到 GLSA-202312-15 中所述的弱點影響 (Git:多個弱點)

- Git 是分散式修訂控制系統。gitattributes 是一種允許定義路徑屬性的機制。使用者可藉由新增「.gitattributes」檔案至存放庫來定義這些屬性,其中包含一組檔案模式以及應針對符合此模式的路徑設定的屬性。剖析 gitattributes 時,若存在大量路徑模式,或單一模式存在大量屬性,或宣告的屬性名稱巨大,則可能發生多個整數溢位。透過可能屬於提交歷程記錄的特製「.gitattributes」檔案可觸發這些溢位弱點。從檔案中剖析 gitattributes 時,Git 會以無訊息方式分割長度超過 2KB 的行,但從索引剖析這些屬性時則不會。因此,失敗模式取決於此檔案存在於工作樹狀結構中、索引中還是兩者中皆存在。此整數溢位問題可導致任意堆積讀取和寫入,進而可能導致遠端程式碼執行。此問題已在 2023 年 1 月 17 日發佈的版本中修補,回溯至 v2.30.7。建議使用者升級。目前沒有任何因應措施可解決此問題。(CVE-2022-23521)

- Git for Windows 是一個 Git 分支,其中包含 Windows 專屬修補程式。此弱點會影響在多使用者機器上工作的使用者,其中未受信任的相關方對同一個硬碟具有寫入權限。這些未受信任的相關方可建立資料夾 `C: \.git`,當搜尋 Git 目錄時,本該在存放庫外部執行的 Git 作業將會存取該資料夾。然後,Git 會套用上述 Git 目錄中的任何組態。設定 `GIT_PS1_SHOWDIRTYSTATE` 的 Git Bash 使用者也容易受到影響,因為這些使用者只需啟動 PowerShell 即可安裝 posh-gitare。Visual Studio 等 IDE 使用者容易遭受攻擊的原因是,他們在建立新專案時即會讀取並套用 `C: \.git\config` 中指定的組態。使用 Git 分支的 Microsoft 使用者只要啟動 Git Bash,就會受到影響。此問題已在 Git for Windows 2.35.2 版本中得到修正。針對無法升級的使用者,可採取的因應措施是在執行 Git 命令的所有驅動器上建立資料夾 `.git`,並從這些資料夾移除讀取/寫入存取權。
或者,可以定義或延伸 `GIT_CEILING_DIRECTORIES` 以涵蓋使用者設定檔的 _parent_ 目錄,例如 `C: \Users` (如果使用者設定檔位於 `C: \Users\my-user-name` 中) 。(CVE-2022-24765)

-Git 是一款分散式版本控制系統。 2.37.1、2.36.2、2.35.4、2.34.4、2.33.4、2.32.3、2.31.4 和 2.30.5 版之前的 Git 在所有平台中都容易受到權限提升弱點影響。不知情的使用者仍可能受到 CVE-2022-24765 中報告的問題影響,例如,以 Root 身分瀏覽屬於他們的共用 tmp 目錄時,攻擊者可在該目錄中建立 git 存放庫。 2.37.1、2.36.2、2.35.4、2.34.4、2.33.4、2.32.3、2.31.4 和 2.30.5 版包含針對此問題的修補程式。若要避免受到範例中所述弱點的影響,最簡單的方法是避免以 Root (或 Windows 中的系統管理員) 身分執行 git,並在需要時最大限度地減少其使用。雖然沒有一般性因應措施,但可以移除任何已存在的此類存放庫,並以 Root 身分建立一個存放庫以阻止任何未來的攻擊,以此強化系統,使其免受範例中所述弱點影響。(CVE-2022-29187)

-Git 是一款開放原始碼的可擴充分散式修訂控制系統。 2.30.6、2.31.5、2.32.4、2.33.5、2.34.5、2.35.5、2.36.3 和 2.37.4 之前版本容易將敏感資訊洩漏給惡意執行者。執行本機複製時 (複製的來源和目標在同一個磁碟區) ,Git 會透過建立來源內容的永久連結或直接複製 (如果已透過「--no-hardlinks」停用永久連結),將來源的「$GIT_DIR/objects」目錄內容複製到目標位置。惡意執行者可誘騙受害者使用指向受害者計算機上敏感資訊的符號連結來複製存放庫。具體做法可以是讓受害者在同一計算機上複製惡意存放庫,若受害者使用「--recurse-submodules」選項進行複制,則讓他們透過任何來源的子模組,複製作為空白存放庫內嵌的惡意存放庫。
Git 不會在「$GIT_DIR/objects」目錄中建立符號連結。2022 年 10 月 18 日發佈的版本已修補此問題,並向後移植至 v2.30.x 版本。可能的因應措施:避免在共用計算機上使用「--local」最佳化複製不受信任的存放庫,方法是將「--no-local」選項傳遞給「git clone」,或從使用「file: //」配置的 URL 複製。或者,避免使用「--recurse-submodules」從不受信任的來源複製存放庫,或執行「git config --global protocol.file.allow user」。(CVE-2022-39253)

- Git 是一個開放原始碼的可擴充分散式修訂控制系統。「git shell」是一個受限的登入 shell,可用來透過 SSH 實作 Git 的推送/提取功能。在 2.30.6、2.31.5、2.32.4、2.33.5、2.34.5、2.35.5、2.36.3 和 2.37.4 之前版本中,將命令引數分割成陣列的函式未正確使用「int」來表示數量陣列中的項目數,惡意執行者可藉此刻意造成傳回值溢位,進而引致任意堆積寫入。由於隨後產生的陣列會傳遞至「execv()」,因此攻擊者可以藉此在受害者的計算機上從遠端執行程式碼。請注意,受害者必須先允許以登入 shell 來存取「git shell」,才會容易受到此攻擊。2.30.6、2.31.5、2.32.4、2.33.5、2.34.5、2.35.5、2.36.3 和 2.37.4 版已修補此問題,建議使用者升級至最新版本。
停用透過遠端登入存取「git shell」是可行的短期因應措施。(CVE-2022-39260)

- Git 是分散式修訂控制系統。「git log」可以使用其「--format」規範以任意格式顯示提交。此功能也會透過「export-subst」gitattribute 洩漏給「git archive」。處理填補運算子時,「pretty.c: : format_and_pad_commit()」中會發生整數溢位,其中「size_t」 被錯誤儲存為「int」,然後作為位移新增到「memcpy()」。使用者藉由執行叫用提交格式化機器的命令 (例如,「git log --format=...」) 可直接觸發此溢位弱點。也可以藉由 git 封存透過 export-subst 機制間接觸發此弱點,這會在 git 封存期間展開存放庫內檔案的格式規範。此整數溢位問題可導致任意堆積寫入,進而可能導致遠端程式碼執行。此問題已在 2023 年 1 月 17 日發佈的版本中修補,回溯至 v2.30.7。建議使用者升級。無法升級的使用者應停用未受信任的存放庫中的「git 封存」。如果您透過「git daemon」洩漏 git 封存,請執行「git config --global daemon.uploadArch false」將其停用。(CVE-2022-41903)

- Git 是一款修訂版控制系統。使用特製的存放庫,2.39.2、2.38.4、2.37.6、2.36.5、2.35.7、2.34.7、2.33.7、2.32.6、2.31.7 和 2.30.8 版之前的 Git 可遭誘騙使用其本機複製最佳化,即使在使用非本機傳輸時亦然。雖然 Git 會中止來源 `$GIT_DIR/objects` 目錄包含符號連結的本機複製,但 `objects` 目錄本身可能仍為符號連結。這兩者可結合起來,在惡意存放庫運作中副本內包含以受害者檔案系統上已知路徑為基礎的任意檔案,進而允許以類似 CVE-2022-39253 的方式洩漏資料。已準備好修正,並將出現在 v2.39.2 v2.38.4 v2.37.6 v2.36.5 v2.35.7 v2.34.7 v2.33.7 v2.32.6、v2.31.7 和 v2.30.8 中。如果升級難以實行,有可用的兩個短期因應措施。避免從具有 `--recurse-submodules` 的未受信任來源複製存放庫。
請改為考慮在不以遞回方式複制子模組的情況下複製存放庫,並在每一層執行 `git submodule update`。在此之前,請檢查每個新的 `.gitmodules` 檔案,以確保其中未包含可疑的模組 URL。(CVE-2023-22490)

- Git (一種修訂版控制系統) 在 2.39.2、2.38.4、2.37.6、2.36.5、2.35.7、2.34.7、2.33.7、2.32.6、2.31.7 和 2.30.8 之前的版本中容易受到路徑遊走影響。透過將特製輸入提供給 `git apply`,工作樹狀結構之外的路徑可以被覆寫為執行 `git apply` 的使用者。已準備好修正,並將出現在 v2.39.2、v2.38.4、v2.37.6、v2.36.5、v2.35.7、v2.34.7、v2.33.7、v2.32.6、v2.31.7 和 v2.30.8 中。因應措施是使用 `git apply --stat` 在套用前檢查修補程式;避免套用會建立符號連結然後在符號連結之外建立檔案的內容。
(CVE-2023-23946)

- Git 是一款修訂版控制系統。在低於 2.30.9、2.31.8、2.32.7、2.33.8、2.34.8、2.35.8、2.36.6、2.37.7、2.38.5、2.39.3 和 2.40.1 的版本中,透過向「git apply --reject」提供特製的輸入,可以藉助部分控制的內容 (對應於來自指定修補程式的遭拒絕區塊) 覆寫工作樹狀結構之外的路徑。 2.30.9、2.31.8、2.32.7、2.33.8、2.34.8、2.35.8、2.36.6、2.37.7、2.38.5、2.39.3 和 2.40.1 版現已提供修正。因應措施是,從不受信任的來源套用修補程式時,避免將「git apply」與「--reject」搭配使用。在套用前使用「git apply --stat」檢查修補程式;避免套用在與「*.rej」檔案對應的連結處會產生衝突的項目。 (CVE-2023-25652)

- 在 Git for Windows (Git 的 Windows 連接埠) 中,安裝程式未隨附任何當地語系化訊息。因此,預期 Git 完全不會本地化訊息,並略過 gettext 初始化。
但是,由於 MINGW 套件中的變更,「gettext()」函式的隱含初始化不再使用執行階段前置詞,而是使用硬式編碼路徑 「C: \mingw64\share\locale」以尋找本地化訊息。由於任何經過驗證的使用者都有權在「C: \」(因為「C: \mingw64」通常不存在) 中建立資料夾,低權限使用者可能將假的訊息放置在「git.exe」會在 2.40.1版中擷取訊息的位置。此弱點相對難以遭惡意利用,且需要發動社交工程攻擊。例如,複製結尾的合法訊息可遭到惡意修改,以要求使用者將其網頁瀏覽器導向惡意網站,而使用者可能會認為該訊息來自 Git 且是合法的。不過,它確實需要攻擊者的本機寫入存取權,這會降低此攻擊媒介產生影響的可能性。 2.40.1 版包含針對此問題的修補程式。您可以使用一些因應措施。不要在具有共用帳戶的 Windows 機器上工作,或建立一個「C: \mingw64」資料夾,並將其留空。具有管理權限的使用者可移除在「C: \`. (CVE-2023-25815)

- Git 是一款修訂版控制系統。在低於 2.30.9、2.31.8、2.32.7、2.33.8、2.34.8、2.35.8、2.36.6、2.37.7、2.38.5、2.39.3 和 2.40.1 的版本中,帶有超 1024 個字元的子模組 URL 的特製「.gitmodules」檔案可用來惡意利用「config.c: : git_config_copy_or_rename_section_in_file()」中的錯誤。嘗試移除與該子模組相關聯的組態區段時,此錯誤可用於將任意組態插入使用者的「$GIT_DIR/config」中。當攻擊者插入指定要執行的可執行檔的組態值 (例如「core.pager」、「core.editor」、「core.sshCommand」等) 時,這可導致遠端程式碼執行。 2.30.9、2.31.8、2.32.7、2.33.8、2.34.8、2.35.8、2.36.6、2.37.7、2.38.5、2.39.3 和 2.40.1 版現已提供修正。因應措施是,避免在未受信任的存放庫上執行「git submodule deinit」,或避免在未事先檢查「$GIT_DIR/config」中的任何子模組區段的情況下執行。(CVE-2023-29007)

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

解決方案

建議所有 Git 使用者皆升級至最新版本:

# emerge --sync # emerge --ask --oneshot --verbose >=dev-vcs/git-2.39.3

另請參閱

https://security.gentoo.org/glsa/202312-15

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

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

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

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

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

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

Plugin 詳細資訊

嚴重性: Critical

ID: 187314

檔案名稱: gentoo_GLSA-202312-15.nasl

版本: 1.0

類型: local

已發布: 2023/12/27

已更新: 2023/12/27

支援的感應器: Nessus

風險資訊

VPR

風險因素: Medium

分數: 6.7

CVSS v2

風險因素: Medium

基本分數: 6.9

時間分數: 5.7

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

CVSS 評分資料來源: CVE-2022-29187

CVSS v3

風險因素: Critical

基本分數: 9.8

時間分數: 9.1

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

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

CVSS 評分資料來源: CVE-2022-41903

弱點資訊

CPE: p-cpe:/a:gentoo:linux:git, cpe:/o:gentoo:linux

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

可被惡意程式利用: true

可輕鬆利用: Exploits are available

修補程式發佈日期: 2023/12/27

弱點發布日期: 2022/4/12

參考資訊

CVE: CVE-2022-23521, CVE-2022-24765, CVE-2022-29187, CVE-2022-39253, CVE-2022-39260, CVE-2022-41903, CVE-2023-22490, CVE-2023-23946, CVE-2023-25652, CVE-2023-25815, CVE-2023-29007