影響 Linux 系統安全基石的 glibc 嚴重漏洞

Michael Kerner發表於2016-06-20

編者按:這個訊息是幾個月前曝出的,也許我們該對基礎軟體的安全問題更加重視。

谷歌披露的一個嚴重漏洞影響到了主流的 Linux 發行版。glibc 的漏洞可能導致遠端程式碼執行。

幾個月前,Linux 使用者都在競相給一個可以使系統暴露在遠端程式碼執行風險中的核心 glibc 開放原始碼庫的嚴重漏洞打補丁。這個 glibc 的漏洞編號被確定為 CVE-2015-7547,題為“getaddrinfo 基於堆疊的緩衝區溢位”。

glibc,或 GNU C 庫,是一個開放原始碼的 C 和 C++ 程式語言庫的實現,是每一個主流 Linux 發行版的一部分。谷歌工程師們在他們試圖連線到某個主機系統時發生了一個段錯誤導致連線崩潰,偶然發現了 CVE-2015-7547 問題。進一步的研究表明, glibc 有缺陷而且該崩潰可能實現任意遠端程式碼執行的條件。

谷歌在一篇部落格文章中寫道, “當 getaddrinfo() 庫函式被使用時,glibc 的 DNS 客戶端解析器易受基於堆疊緩衝區溢位的攻擊,使用該功能的軟體可能透過攻擊者控制的域名、攻擊者控制的 DNS [域名系統] 伺服器,或透過中間人攻擊方式(MITM)進行破壞。”

其實利用 CVE-2015-7547 問題並不簡單,但它是可能的。為了證明這個問題能被利用,谷歌釋出了論證一個終端使用者或系統是否易受攻擊的概念驗證(POC)程式碼到 GitHub 上。

GitHub 上的 POC 網頁說“伺服器程式碼會觸發漏洞,因此會使客戶端程式碼崩潰”。

Duo Security 公司的高階安全研究員 Mark Loveless 解釋說 CVE-2015-7547 的主要風險在於依賴於 DNS 響應的基於 Linux 客戶端的應用程式。

Loveless 告訴 eWEEK “需要一些特定的條件,所以不是每個應用程式都會受到影響,但似乎一些命令列工具,包括流行的 SSH[安全 Shell] 客戶端都可能觸發該漏洞,我們認為這是嚴重的,主要是因為對 Linux 系統存在的風險,但也因為潛在的其他問題。”

其他問題可能包括一種透過電子郵件觸發呼叫易受攻擊的 glibc 庫 getaddrinfo() 攻擊的風險。另外值得注意的是,該漏洞被發現之前已存在於程式碼之中多年。

谷歌的工程師不是第一或唯一發現這個 glibc 安全風險的團體。這個問題於 2015 年 7 月 13 日首先被報告給了 glibc 的 bug跟蹤系統。該缺陷的根源可以更進一步追溯到在 2008 五月釋出的 glibc 2.9 的程式碼提交時首次引入缺陷。

Linux 廠商紅帽也獨立找到了 glibc 中的這個 bug,而且是在 2016 年 1 月 6 日,谷歌和紅帽開發人員證實,他們作為最初與上游 glibc 的維護者私下討論的部分人員,已經獨立在為同一個漏洞工作。

紅帽產品安全首席軟體工程師 Florian Weimer 告訴 eWEEK “一旦確認了兩個團隊都在為同一個漏洞工作,我們會合作進行可能的修復,緩解措施和迴歸測試,我們還會共同努力,使測試覆蓋儘可能廣,捕捉程式碼中的任何相關問題,以幫助避免今後更多問題。”

由於缺陷不明顯或不易立即顯現,我們花了幾年時間才發現 glibc 程式碼有一個安全問題。

Weimer 說“要診斷一個網路元件的漏洞,如 DNS 解析器,當遇到問題時通常要看抓到的資料包的蹤跡,在這種情況下這樣的抓包不適用,所以需要一些實驗來重現觸發這個 bug 的確切場景。”

Weimer 補充說,一旦可以抓取資料包,就會投入大量精力到驗證修復程式中,最終完成迴歸測試套件一系列的改進,有助於上游 glibc 專案。

在許多情況下,安全增強式 Linux (SELinux) 的強制訪問安全控制可以減少潛在漏洞風險,但是這個 glibc 的新問題例外。

Weimer 說“由於攻擊者提供的任意程式碼的執行,會對很多重要系統功能帶來風險。一個合適的 SELinux 策略可以遏制一些攻擊者可能會做的損害,並限制他們訪問系統,但是 DNS 被許多應用程式和系統元件使用,所以 SELinux 策略只提供了針對此問題有限的遏制。”

在揭露漏洞的今天,現在有一個可用的補丁來減少 CVE-2015-7547 的潛在風險。


via: http://www.eweek.com/security/linux-systems-patched-for-critical-glibc-flaw.html

作者:Michael Kerner 譯者:robot527 校對:wxy

本文由 LCTT 原創翻譯,Linux 中國 榮譽推出

相關文章