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