GIT 的整數切取與溢位弱點(CVE-2016-2315、CVE-2016-2324)

Red Hat 產品安全部門已得知 GIT 中的弱點,其中的整數切取弱點(CVE-2016-2315)與整數溢位弱點(CVE-2016-2324)會導致以堆疊為基礎的緩衝區溢位,並導致遠端執行程式碼。

總覽

GIT 使用特別的格式,在伺服器與客戶端交換軟體庫資訊。這已知是「packfile」格式。

攻擊者可以用特別建立的 packfile,在送往有弱點的伺服器或客戶端時,在處理時能啟動整數切取或溢位,最後導致記憶體損毀。

背景

GIT 是分散式版本控制系統,有著去中心化的架構。與中心化的版本控制系統(客戶端—伺服器模式)相比,GIT 能確定每個 GIT 軟體庫的工作版本都是一樣的複製版本,有著完整的歷史。這不僅允許使用者工作、貢獻專案,而不需要有推送變更至官方軟體庫的權限,也允許使用者在沒有網路連線時運作。

受影響的版本

Red Hat 已發佈且支援的 Red Hat Enterprise Linux(RHEL)與 Red Hat 軟體集(Red HAt Software Collection)之 GIT 版本都受到影響,如〈解決方案〉一節所述之產品。除此之外,所有上游的 GIT 版本(2.4.11、2.5.5、2.6.6、2.74 之前)都會受到這些漏洞的影響。

攻擊的描述與衝擊

這些弱點的成因是「revision.c」原始檔的「path_name()」函數中,整數切取與整數溢位的問題,這函數會由 GIT 所取用來處理路徑資訊。這函數的弱點無法完整乾淨地處理可能收到的惡意資料,這些惡意資料是攻擊者所特別製造、發送的 GIT packfile;這可能會導致記憶體損毀,並可能執行惡意程式碼。

packfile 格式會由 GIT 的內部使用,以有效率地交換軟體庫資訊。GIT 使用多種 helper 工具來產生 packfile,並在 GIT 的端點上發送、收取這些 packfile;而攻擊者可以使用特別製造的 packfile,其中包含了長路徑名稱(231 位元組,大約是 2 GByte)或是路徑元素的樹,可以在處理「path_name()」函數時,啟動這些弱點。

這樣的 packfile 已被人建立、且公諸於世。這可以用來攻擊用戶端與伺服器端。

為了要攻擊有此弱點的伺服器,攻擊者必須要裝作是 GIT 用戶端,並發送特別製造的 packfile 至有弱點的伺服器端,例如是「push」操作的一部份。有弱點的伺服器會收到來自惡意的 GIT 用戶端之惡意 packfile,同時在處理所包含的路徑資訊時,啟動「path_name()」函數的弱點。通常,這種操作需要身分認證。攻擊者必須成功地通過身分認證,才能讓攻擊成功。

要攻擊客戶端,攻擊者要設定 GIT 伺服器之惡意 GIT 軟體庫,並欺騙對此不懷疑的使用者複製這個軟體庫。用戶端會從伺服器上下載惡意的 packfile,然後在試圖處理這 packfile 時啟動這弱點。

雖然原始、未壓縮的 packfile 大概需要 2 GBytes(因為這需要大量的路徑資料),這並不表示攻擊者必須要在網路上發送好幾個 GBytes 的資料。由於 packfile 格式內部所使用的壓縮方式,以及根據傳輸機制(例如 SSH)所使用的壓縮方式,可能只需要 200 MBytes 的網路傳輸資料就可以實現這弱點。

解決方法

建議所有 GIT 使用者升級這些套件,其中包含了向後支援的升級檔,以修正這些問題。在套用這項更新前,請確定可套用至您系統的相關勘誤檔已經套用至系統上。

產品 套件 建議
Red Hat Enterprise Linux 6 git [RHSA-2016-0496](https://rhn.redhat.com/errata/RHSA-2016-0496.html)
Red Hat Enterprise Linux 7 git [RHSA-2016-0496](https://rhn.redhat.com/errata/RHSA-2016-0496.html)
Red Hat 軟體集 git19-git [RHSA-2016-0497](https://rhn.redhat.com/errata/RHSA-2016-0497.html)

常見問題集

我有一台 GIT 伺服器。這有什麼影響?

如果攻擊者能推送惡意資料至 GIT 軟體庫,這台伺服器就會暴露在弱點下。如果這需要身分認證,攻擊者就必須成功地通過身分認證才行。

我有一台 GIT 用戶端。這有什麼影響?

攻擊者會欺騙使用者,複製不受信任或受侵害的 GIT 軟體庫,而暴露在此弱點下。

Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.