專欄丨大東話安全之Linux 的「幽靈」漏洞

編者按:網絡空間安全近年來日漸成為公眾關注的焦點,中科院之聲特意邀請業內專家“大東”開設“大東話安全”專欄,以《安天威脅通緝令2016撲克牌》為線索,一張撲克牌對應一個網絡病毒,講述54個不同的網絡病毒和網絡安全故事,以及如何進行針對性防禦的建議。

一、病毒通緝令

专栏丨大东话安全之Linux 的“幽灵”漏洞

小白:燃燒吧!小宇宙!就算把我燒成骷髏!那我也是帥骷髏~~~

大東:小白興奮個啥勁兒呢。

小白:大東東,你看這張牌,它的內心獨白一定是這樣的!

大東:咱們小白學傻了吧。

小白:好吧,大東東快講講,這是啥。

大東:這是幽靈。它的名字是“CVE-2015-0235”,這個漏洞可以允許攻擊者遠程獲取操作系統的最高控制權限,影響大部分的 Linux 操作系統。

小白:哦,這麼厲害……

二、Linux 漏洞

大東:小白啊,你上次安裝 Linux 系統是什麼時候來著?

小白:大概…兩週前?

大東:當時為什麼要選擇 Linux 系統?

小白:因為我覺得使用 Linux 操作系統很帥啊,操作只要用一條命令就可以解決,簡直裝逼神器。而且現在 Windows 總是今天一個病毒明天一個漏洞的,用著覺得很心慌,但我就沒有聽過 Linux 上有過什麼病毒的~

大東:首先,我要說的是安全是相對的。其次,你知道為啥你覺得 Linux 上不會有漏洞麼?

小白:為什麼?

大東:那是因為你不知道它不安全的地方在哪兒啊。

小白:所以 Linux 其實……

大東:是的。想了解一下這個漏洞麼?

小白:我熱愛學習!所以大東東你說吧。

大東:行~首先需要說的是在 Linux 上的一個運行庫——“glibc”。glibc 是一個 C 語言運行庫,是 Linux 系統中最底層的接口,幾乎其它任何運行庫都依賴於它。 glibc 除了封裝 Linux 操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。

专栏丨大东话安全之Linux 的“幽灵”漏洞

glibc庫

小白:噢~就是一個操作系統和用戶之間的中間人。

大東:glibc 囊括了幾乎所有的 UNIX 通行的標準,可以想象其內容包羅萬象,像一個支架一般撐起整個操作系統。可以算是 Linux 操作系統的基石。

小白:所以這個基石出問題了麼?

大東:2015年年初,Qualys 公司在進行內部代碼審核時,發現了一個在 glibc 中某個函數導致的緩衝區溢出漏洞。

小白:緩衝區溢出漏洞,這個是啥?

大東:計算機程序一般都會使用到一些內存,這些內存或是程序內部使用,或是存放用戶的輸入數據,這樣的內存一般稱作緩衝區。溢出則是指盛放的東西超出容器容量而溢出來了,在計算機程序中,就是數據使用到了被分配內存空間之外的內存空間。

小白:噢…那緩衝區溢出就是存放用戶輸入數據的地方滿了?

大東:緩衝區溢出,簡單的說就是計算機對接收的輸入數據沒有進行有效的檢測,向緩衝區內填充數據時超過了緩衝區本身的容量,而導致數據溢出到被分配空間之外的內存空間,溢出的數據覆蓋了其他內存空間的數據。

专栏丨大东话安全之Linux 的“幽灵”漏洞

輸入數據過大導致內存溢出

小白:那緩衝區溢出的漏洞會造成什麼危害呢?

大東:緩衝區溢出的漏洞的話,比較輕的那種就是會導致程序崩潰。假設你在玩一個遊戲,你玩著玩著遊戲突然蹦一個窗口,告訴你遊戲停止工作了,然而你都沒有保存,那怎麼辦?

专栏丨大东话安全之Linux 的“幽灵”漏洞

小白:no!!那嚴重的會怎麼樣?

大東:緩衝區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址。帶來的危害一種是程序崩潰導致拒絕服務,另一種就是跳轉並且執行一段惡意代碼,比如得到系統權限!

我們這次說的存在於 glibc 庫中的緩衝區溢出漏洞就是屬於後者的,通過操作庫中的函數,將可能產生一個堆上的緩衝區溢出,本地和遠程均可行。

小白:那豈不是很危險?

大東:Qualys公司的工作人員後來開發了一套完整的針對 Exim 郵件服務器的攻擊 PoC(觀點驗證程序),測試中發現可以繞過所有現有保護,且通殺32位和64位的機器。

小白:看來 Linux 也不好混啊……

三、幽靈現身

小白:那出了這個問題以後,官方有啥動作嗎?

大東:第一個受攻擊版本是 glibc-2.2,發佈於2000年11月10日,也是相當有年頭了,這個漏洞其實在2013年5月21日就已經被修復了,也就是在glibc-2.17和 glibc-2.18的發行版之間。不幸的是,當時它並沒有被認為是一個安全威脅,導致了現在的大多數穩定版和長期支持版本依然暴露在漏洞影響下。

小白:所以這個庫的維護人員對他們這個漏洞是不是高危的心裡沒有一點數咯?

大東:但是也不用擔心,因為 Qualys 已經在網上公開了 POC 代碼,可以檢測是否存在漏洞。

小白:這個,咋用呀?

大東:先用 root 登錄系統,下載 ghost.c 代碼,然後在終端執行 #gcc ghost.c –o ghost 命令編譯文件,再使用 #./ghost命令執行測試。如果結果中顯示vulnerable,表示存在漏洞,顯示not vulnerable,表示不存在漏洞,無需進行補丁修復。

专栏丨大东话安全之Linux 的“幽灵”漏洞

ghost 測試

小白:哇,這個 Qualys 還是挺負責的嘛~

大東:還有一種方法是查看系統中的 glib c庫的版本,版本在 Glibc 2.2 ~ Glibc 2.18範圍內存在漏洞,對於 centOS 執行 #rpm -qa|grep glibc 而對於 Ubuntu 就執行 #dpkg -l|grep libc6 就好了。

小白:我對於 Linux 這種可以使用終端執行命令的操作系統還是很膜拜的~~

大東:所以知道了系統中是否存在漏洞了以後,我們就可以針對性地修復漏洞啦,對於 Centos/RHEL/5,6 的升級方法就是終端執行 #yum updateglibc。

专栏丨大东话安全之Linux 的“幽灵”漏洞

Centos/RHEL/ 5,6 glibc升級

小白:一條命令就能修復,簡直太友好~~

大東:而對於 ubuntu10.04、12.04 還有 Debian 等系統,在終端中執行 #sudo apt-get update 或者 #sudo apt-getdist-upgrade 就可以修復啦。

专栏丨大东话安全之Linux 的“幽灵”漏洞

ubuntu10/debain glibc升級

小白:這樣就完了,真是棒。

大東:別忘了後期檢查的工作,升級完後,建議重啟服務器,然後執行 #./ghost測試漏洞是否還存在。

专栏丨大东话安全之Linux 的“幽灵”漏洞

修復成功

小白:得嘞~現在看來 Linux 系統也不安全。

大東:安全都是相對的,沒有絕對的安全。

四、話說漫威

大東:你看,這幽靈像不像章魚博士。

小白:哪個章魚?

大東:漫威世界反派之一,他是個科學家,能力是可以操作後背上的四隻強而有力的電子機械手臂。

专栏丨大东话安全之Linux 的“幽灵”漏洞

章魚博士

小白:看起來像是個科學怪人……

大東:章魚博士專注於基因變異研究,蜘蛛俠、綠魔、蜥蜴博士等都是來自他製作的基因藥劑,還組建了罪惡六人組向蜘蛛俠復仇。

小白:嗯…他研發的成果促成了其他英雄的誕生,這點倒是有點兒像是 glibc 那個漏洞嘛。

大東:沒想到小白也能 get 到我的點。

小白:我怎麼一點都不想 get 呢……


分享到:


相關文章: