GitHub/官方:Git 修補六項安全漏洞——遞迴複製惡意倉庫可執行程式碼;建議升至 2.56.1 或對應維護版

重點摘要

GitHub 於二零二六年十一月十日公開說明,Git 專案發布更新,修補六項安全漏洞,其中 CVE-2026-111760 可在遞迴複製由攻擊者控制的惡意倉庫時執行攻擊者指定的程式碼。官方建議把 Git 升級至 2.56.1,或所屬維護系列的對應修補版本,並同步更新內建 Git 的應用程式。GitHub 表示,github.com、GitHub Enterprise Cloud 及具備資料所在地選項的 Enterprise Cloud 已部署修補;GitHub Enterprise Server 亦已提供對應版本,建議管理員盡快升級。來源真實性已驗證:一級來源為 GitHub 官方網誌與 Git 專案安全諮詢 GHSA-vp2w-7xxj-jvxr,並以官方發布說明 2.50.2/2.56.1 交叉核對六個編號與修補版本。

GitHub/官方:Git 修補六項安全漏洞——遞迴複製惡意倉庫可執行程式碼;建議升至 2.56.1 或對應維護版

GitHub 於二零二六年十一月十日公開說明,Git 專案發布更新,修補六項安全漏洞,其中 CVE-2026-111760 可在遞迴複製由攻擊者控制的惡意倉庫時執行攻擊者指定的程式碼。官方建議把 Git 升級至 2.56.1,或所屬維護系列的對應修補版本,並同步更新內建 Git 的應用程式。GitHub 表示,github.com、GitHub Enterprise Cloud 及具備資料所在地選項的 Enterprise Cloud 已部署修補;GitHub Enterprise Server 亦已提供對應版本,建議管理員盡快升級。來源真實性已驗證:一級來源為 GitHub 官方網誌與 Git 專案安全諮詢 GHSA-vp2w-7xxj-jvxr,並以官方發布說明 2.50.2/2.56.1 交叉核對六個編號與修補版本。

GitHub/官方:Git 修補六項安全漏洞——遞迴複製惡意倉庫可執行程式碼;建議升至 2.56.1 或對應維護版

GitHub 於二零二六年十一月十日在官方網誌發布〈Git security vulnerabilities announced〉,由 GitHub 職員軟件工程師 Elijah Newren 撰文,說明 Git 專案當日公開修補六項安全漏洞,涵蓋遞迴複製、參考名稱處理、合併、二進制修補檔與匯入路徑。文中寫明,修補已納入 Git 2.56.1,並回溯至 2.55.1、2.54.1、2.53.1、2.52.1、2.51.3 與 2.50.2;官方建議更新至 2.56.1,或所屬維護系列的對應修補版本,同時更新任何內建 Git 的應用程式。同一編號的專案安全諮詢 GHSA-vp2w-7xxj-jvxr 亦於十一月十日公開,標題為「Recursive clones are susceptible to Remote Code Execution」,嚴重程度標為 High,CVSS 3.1 基礎分數為 8.0,向量為 AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H。本文只轉述官方已載明的版本、編號、評分與觸發條件,不臆造在野利用、受害規模或尚未公開的利用程式細節。

一、核心事件:公開修補包含遞迴複製即可執行程式碼的漏洞

技術細節

六項編號之中,官方把 CVE-2026-111760 作為最需優先理解的一項。GitHub 網誌與安全諮詢均指出:Git 在把檔案寫入工作樹前會檢查路徑,包括拒絕覆寫其本身的倉庫中繼資料;但索引處理存在整數截斷,可令極長路徑以一個名稱通過驗證,隨後卻以較短名稱寫入。攻擊者可利用此差異,把子模組的 .git 檔(gitfile)換成符號連結,指向載有惡意設定或掛鉤的目錄;當 Git 其後使用該目錄時,便可能在遞迴複製過程中執行攻擊者控制的程式碼。修補方式是在路徑長度可被截斷之前,拒絕過長的索引項目路徑。安全諮詢進一步寫明,攻擊者控制的倉庫(由攻擊者自行託管,而非一般程式碼託管平台上的倉庫)可被特製以觸發此缺陷;諮詢目前相信,此問題只在使用 --recurse-submodules 選項時可被觸發,並提醒不要從不可信來源複製倉庫。

其餘五項同樣來自官方說明,性質各異,但都與處理不可信輸入有關。CVE-2026-113408:以 Git protocol v2 複製空倉庫時,伺服器可宣告指向尚未有提交之分支的 HEAD 符號參考,舊版 Git 未先驗證其目標便在本地儲存;惡意伺服器若提供含路徑遍歷成分的名稱,在 files 參考後端下,其後更新分支的操作可寫出預期參考目錄之外。現已先驗證宣告目標,並一併驗證經 protocol v2 收到的其他參考名稱與符號參考目標。CVE-2026-114467:從訊息剔除 GPG 簽章時,舊版假設最多只有兩個簽章;特製、含兩個以上簽章的訊息可寫出固定大小堆疊陣列末端,可能在合併含此類標籤時造成記憶體損毀與拒絕服務,代使用者執行此類合併的託管服務亦可受影響。CVE-2026-114469:Git 會拒絕約一吉位元組以上的修補檔,但舊檢查只看輸入檔大小;二進制修補檔經壓縮編碼後,相對細小的輸入可展開超出該上限,造成越界讀取並令 Git 崩潰。CVE-2026-105437:合併結果所需記憶體的計算,在極大合併(包括大量衝突再加上很大的 conflict-marker-size)時可能溢位,令實際配置的緩衝區過小並寫出範圍之外,影響以 Git 合併不可信內容的應用與託管服務,以及本地合併。CVE-2026-114466:git fast-import 已限制部分可存取倉庫外檔案的指令,但 rewrite-submodules-from、rewrite-submodules-to 與 export-pack-edges 先前未受同等保護,可讀取任意檔案或建立/附加檔案;現在除非呼叫端明確啟用 --allow-unsafe-features,否則會拒絕從輸入串流提供這些功能,且官方提醒只應在信任產生該串流的程式時啟用。

官方發布說明 2.56.1 寫明,該版本彙入上述見於 2.50.2、2.51.3、2.52.1、2.53.1、2.54.1 與 2.55.1 的修補,以處理這六個編號。版本與編號均以 Git 專案發布說明及 GitHub 網誌為準。

就平台側,GitHub 網誌列明:github.com、GitHub Enterprise Cloud,以及具備資料所在地選項的 GitHub Enterprise Cloud,已部署這些漏洞的修補。GitHub Enterprise Server 的更新見於 3.19.15、3.20.11、3.21.9 與 3.22.4,建議管理員盡快升級。GitHub 並寫明,正在協調發布包含已修補 Git 的 GitHub Desktop 與 GitHub Copilot 應用程式;GitHub Codespaces 與 GitHub Actions 亦將獲得已修補的 Git 版本。官方強調,最有效的防護是安裝修補版本,並更新內含自備 Git 的應用,以及自動化與代為處理倉庫的服務所用的 Git。若未能立即更新,應只從可信伺服器複製,避免遞迴複製不可信倉庫,並避免合併不可信內容或標籤,或處理來自不可信來源的二進制修補檔與 fast-import 串流;這些權宜措施並不能代替安裝修補。

二、技術原理深度解析

遞迴複製會一併取出子模組。子模組工作樹裡的 .git 往往不是完整倉庫目錄,而是指向真實 Git 目錄的 gitfile。Git 依賴路徑檢查,避免工作樹寫入覆寫倉庫中繼資料;一旦索引路徑的長度在驗證與實際寫入之間被截斷,同一個索引項目就可以「檢查時是一個路徑、落盤時是另一個路徑」。攻擊者若能把 gitfile 換成指向惡意設定或掛鉤目錄的符號連結,隨後的遞迴複製便可能載入並執行那些掛鉤。這解釋了為何官方把此編號描述為遠端執行程式碼,同時又把攻擊複雜度標為 High、並要求使用者互動:觸發路徑是複製(且目前相信需加上遞迴子模組選項)由攻擊者控制的倉庫,而不是無互動的網絡自動中招。

其餘編號則顯示,版本控制工具在處理協定宣告、簽章剝離、巨型二進制修補、大型合併與匯入串流時,同樣面對邊界檢查不足的風險。路徑遍歷可把參考更新寫到非預期位置;固定大小陣列與整數溢位可造成記憶體損毀;只檢查壓縮前輸入大小,則會讓展開後的二進制修補檔繞過上限。對持續整合、程式碼託管與本地開發而言,這些路徑的共通點是:系統經常代使用者處理來自外部的倉庫、標籤、修補檔或匯入串流。官方並未把這六項全部描述為遠端執行,亦未宣稱已知遭利用;因此,技術評價應把「遞迴複製惡意倉庫可執行程式碼」視為已確認且評級最高的一項,同時把其餘項目理解為須一併修補的記憶體安全與路徑限制問題,而不把未獲官方證實的利用鏈寫成既成事實。

四、日常應用場景

1. 開發者與技術團隊

開發者應把工作站、容器映像、持續整合執行器與自行編譯的 Git 對照官方列明的 2.56.1 或所屬維護系列修補版本,並檢查套件管理器、開發工具鏈與桌面客戶端是否仍綑綁舊版 Git。自動化若會以 --recurse-submodules 複製外部倉庫、合併外部標籤、套用二進制修補檔,或把不可信串流送入 git fast-import,應先完成更新,再處理來源不完全可信的樣本。官方已提醒,在未能立即更新前,不要遞迴複製不可信倉庫;這項權宜措施不能代替升級。

2. 企業與隱私敏感行業

金融、法律、醫療與政府承辦商若自行托管 GitHub Enterprise Server,應按官方列明的 3.19.15、3.20.11、3.21.9 或 3.22.4 規劃升級,並清點建置農場、程式碼掃描與發布流水線所用的 Git 版本。即使主要程式碼已放在 github.com 或 GitHub Enterprise Cloud(官方寫明這些服務已部署修補),員工筆電、堡壘主機與離線建置機仍可能安裝發行版套件中的舊 Git,須一併更新。供應鏈場景尤其相關:對外開源貢獻、複製供應商提供的範例倉庫,或在持續整合中自動拉取帶有子模組的依賴,都可能走到遞迴複製這條路徑。官方並未要求為此強制輪替憑證;目前最直接的防護,是安裝對應修補並更新內建 Git 的應用。

3. 一般用戶

個人開發者或小型團隊若使用系統套件、GitHub Desktop,或其他內建 Git 的工具,應依官方通道更新至 2.56.1 或所屬維護系列修補版本,並留意 GitHub Desktop 與 GitHub Copilot 應用程式的後續修補發行。完成更新前,應避免以遞迴子模組方式複製來路不明的倉庫,也不要對不可信內容執行合併、套用二進制修補檔或匯入串流。官方並未在此說明中描述具體釣魚文案或已知大規模攻擊;最穩妥的做法仍是完成更新,而不是依據未經核實的流傳步驟自行設定。

4. 香港與亞洲市場視角

香港不少企業、外判開發團隊與院校以 Git 作為日常協作與交付工具,持續整合主機亦普遍預設啟用子模組遞迴複製,以一次取齊依賴。本地若使用 GitHub Enterprise Server,或以自建執行器連接公開或私有倉庫,應把此次官方列明的伺服器版本與客戶端 Git 版本一併納入變更窗口,避免出現「託管平台已修、建置機未修」的缺口。亞洲供應鏈中,複製第三方套件或上游倉庫並啟用子模組並不罕見;在官方已公開遠端執行風險的前提下,更新窗口應優先處理會自動遞迴複製外部倉庫的流水線,而不是等待更多未公開的攻擊細節。

五、專業評價與潛在考量

優勢

此次公開把六項問題一次說清楚,並同時提供現行系列 2.56.1 與多條維護分支的修補,降低企業只鎖定某一大版本而無法升級的摩擦。GitHub 作為主要託管平台,已說明雲端服務完成部署,並為 GitHub Enterprise Server、Codespaces、Actions 及桌面應用列出後續或現成的修補安排,有助機構按資產類型分批處理。安全諮詢就 CVE-2026-111760 給出 High/8.0 的評分與完整向量,亦寫明目前相信的觸發條件(--recurse-submodules),便於團隊按實際指令與流水線判斷暴露面。

需要留意的地方

官方並未宣稱這些編號已知遭利用,也未提供受害數字;不能把「可執行程式碼」自動寫成大規模在野攻擊。諮詢把攻擊複雜度標為 High,並要求使用者互動,代表風險取決於是否複製不可信倉庫、以及是否啟用遞迴子模組,而不是所有 git clone 都等同中招。GitHub Desktop、Copilot 應用、Codespaces 與 Actions 的修補,網誌用「正在協調發布」或「亦將獲得」表述,機構不能假設所有綑綁 Git 的工具已在同一時間完成更新,必須按官方後續發行核對。權宜措施(只從可信伺服器複製、避免遞迴複製不可信倉庫等)被明確寫成不能代替安裝修補。本文亦不把 git-scm 網站上較早的版本標籤日期,當作這次公開披露的日期;公開說明與安全諮詢均以十一月十日為準。

結語

Git 是全球軟件供應鏈的基礎工具,一次遞迴複製若可被特製倉庫導向執行惡意掛鉤,影響的不只是單一開發者工作站,也包括持續整合與託管平台代為處理的流程。目前官方已給出明確版本清單與平台部署說明,優先工作是把 Git 升至 2.56.1 或對應維護版,並更新內建 Git 的應用與 GitHub Enterprise Server。香港企業若同時要檢視源碼托管、建置流水線與雲端邊界防護,可參考 YSK Limited 的雲端遷移與網絡安全(官網刊 99.99% SLA,https://ysk.hk/services/cloud-security)。


參考來源

延伸閱讀 · 相關服務與產品