Linux最新0day的幕后故事和技術分析
原創(chuàng)【51CTO.com獨家特稿】我們應該知道不存在絕對完美的安全,沒有一個絕對安全的程序。總之,安全是一個過程,而不是一個產(chǎn)品。Linux在過程方面的安全是相當出色的,這也是它極大安全的原因。這有一個例子。
7月16號,一個名叫Brad Spengler的安全方面的程序員,他設計了一個開源網(wǎng)絡和一個叫grsecurity的服務器安全程序,這個程序全面披露了安全郵件列表——Linux內(nèi)核2.6.30版的安全漏洞。
根據(jù)SANS英特網(wǎng)風暴中心的說法,關于這個漏洞比較簡潔的表述是:“在進行網(wǎng)上或大規(guī)模運算時,代碼的脆弱就表現(xiàn)出來了。簡言之,開發(fā)者初始化了一個可以為NULL的變量。并緊接著正確地檢查這個新變量在附近幾行代碼中的值,如果是0(NULL),他就返回一個錯誤。”
但是,從技術的觀點來說這是有趣的地方。程序員這樣寫的代碼看起來是沒錯的。只有在使用gcc“編譯器開始處理這個變量,優(yōu)化代碼,編譯器會發(fā)現(xiàn)變量已經(jīng)被賦值(如果是0)并且從編譯好的代碼中移除。換個說法,編譯器會把變量引入到二進制碼,不存在源代碼中。這將會引起內(nèi)核嘗試去讀/寫0x00000000的數(shù)據(jù),這使攻擊者能映射到用戶區(qū),最終破解程序。”
聽起來很嚇人,是不是?你看,因為它在底層工作,這個漏洞可以繞開安SELinux(安全增強的Linux),突破其它Linux安全程序。但實際上,這完全沒有那么的值得驚慌失措。
首先,為了攻擊一臺這樣的計算機,你必須先擁有一個很高的Linux權限才能使用開發(fā)工具。其次,你需要重新開始編寫一個程序,并把利用代碼加入其中。
這不像在Windows下,你只要錯誤的點下某些網(wǎng)頁或是打開一封帶附件的郵件,你的電腦馬上就會感染上惡意軟件或是和僵尸軟件等威脅。你幾乎真要嘗試用這個方法打開你的Linux計算機來消滅它。
但是,這個漏洞也許怎么都不能發(fā)揮作用。你看,同樣是相似的溢出問題,也許潛伏著更大的危險的——使用PulseAudio時(一個流行的Linux和Windows媒體服務器)發(fā)生了溢出問題——在六月被修復了——這是重點,。
所以,如果你使用最新版的Linux內(nèi)核,Linux 2.6.31-rc3,你應該感覺極好。
無論如何,事情的關鍵點并不在于技術細節(jié)。而是在于對開源軟件,問題很快被大家發(fā)現(xiàn)并且被修復。舉個例子,周三時,F(xiàn)irefox 3.5有重要的安全漏洞被揭發(fā),但周五時,F(xiàn)irefox 3.5.1就修復了這個漏洞。
在周一,微軟的IE瀏覽器同樣有一個主要的安全漏洞被披露,但現(xiàn)在還沒有看到補丁出現(xiàn)。這不足為奇。Windows和其他微軟程序的有些安全漏洞在幾個月、幾年后仍然沒有補丁發(fā)布。至少,在去年年末,微軟修復了一個存在了七年的漏洞——我不騙你。而且,讓我們不要忘記,一個叫MyDoom的惡意軟件——最早出現(xiàn)在2004年,到現(xiàn)在還可以在Windows電腦上用來進行DDoS(分布式拒絕服務)攻擊。
簡而言之,所有開源軟件比同類的商業(yè)軟件更安全,因為開源的特性使安全漏洞的查找和修復快速得多。如果微軟真關注它的軟件安全,那么它在周四就應該對漏洞進行修補,它應該開放代碼,從而是安全問題得到控制。可是,這種事情是不可能發(fā)生的。所以,現(xiàn)在和將來,F(xiàn)OSS(自由及開源軟件)都會在安全方面更勝一籌。
【51CTO.COM 獨家特稿,轉載請注明出處及作者!】
【編輯推薦】