深入淺出分析Linux系統核心漏洞的問題(轉)

ba發表於2007-08-16
深入淺出分析Linux系統核心漏洞的問題(轉)[@more@]  與Windows相比,Linux被認為具有更好的安全性和其他擴充套件效能。這些特性使得Linux在作業系統領域異軍突起,得到越來越多的重視。隨著Linux應用量的增加,其安全性也逐漸受到了公眾甚或駭客的關注。那麼,Linux是否真的如其支援廠商們所宣稱的那樣安全呢?

  Linux核心精短、穩定性高、可擴充套件性好、硬體需求低、免費、網路功能豐富、適用於多種cpu等特性,使之在作業系統領域異軍突起。其獨特的魅力使它不僅在pc機上佔據一定的份額,而且越來越多地被使用在各種嵌入式裝置中,並被當作專業的路由器,防火牆,或者高階的伺服器OS來使用。各種型別的Linux發行版本也如雨後春筍般冒了出來,國內更是掀起了Linux的使用熱潮,很多政府部門因安全需要也被要求使用Linux。正是因為Linux被越來越多地使用,其安全性也漸漸受到了公眾的關注,當然,也更多地受到了駭客的關注。通常,我們討論Linux系統安全都是從Linux安全配置的角度或者Linux的安全特性等方面來討論的,而這一次我們轉換一下視角,從Linux系統中存在的漏洞與這些漏洞產生的影響來討論Linux的安全性。

  首先來說明一下這次我們討論Linux系統安全的範圍,其實通常我們所說的Linux是指GNU/Linux系統,Linux是系統中使用的作業系統核心。這一次我們重點從Linux系統核心中存在的幾類非常有特點的漏洞來討論Linux系統的安全性。

  許可權提升類漏洞

  一般來說,利用系統上一些程式的邏輯缺陷或緩衝區溢位的手段,攻擊者很容易在本地獲得Linux伺服器上管理員許可權root;在一些遠端的情況下,攻擊者會利用一些以root身份執行的有缺陷的系統守護程式來取得root許可權,或利用有缺陷的服務程式漏洞來取得普通使用者許可權用以遠端登入伺服器。目前很多Linux伺服器都用關閉各種不需要的服務和程式的方式來提升自身的安全性,但是隻要這個伺服器上執行著某些服務,攻擊者就可以找到許可權提升的途徑。下面是一個比較新的導致許可權提升的漏洞。

  do_brk()邊界檢查不充分漏洞在2003年9月份被Linux核心開發人員發現,並在9月底釋出的Linux kernel 2.6.0-test6中對其進行了修補。但是Linux核心開發人員並沒有意識到此漏洞的威脅,所以沒有做任何通報,一些安全專家與駭客卻看到了此漏洞蘊涵的巨大威力。在2003年11月駭客利用rsync中一個未公開的堆溢位與此漏洞配合,成功地攻擊了多臺Debian與Gentoo Linux的伺服器。

  下面讓我們簡單描述一下該漏洞。該漏洞被發現於brk系統呼叫中。brk系統呼叫可以對使用者程式的堆的大小進行操作,使堆擴充套件或者縮小。而brk內部就是直接使用do_brk()函式來做具體的操作, do_brk()函式在調整程式堆的大小時既沒有對引數len進行任何檢查(不檢查大小也不檢查正負),也沒有對addr+len是否超過TASK_SIZE做檢查。這樣我們就可以向它提交任意大小的引數len,使使用者程式的大小任意改變以至可以超過TASK_SIZE的限制,使系統認為核心範圍的記憶體空間也是可以被使用者訪問的,這樣的話普通使用者就可以訪問到核心的記憶體區域。透過一定的操作,攻擊者就可以獲得管理員許可權。這個漏洞極其危險,利用這個漏洞可以使攻擊者直接對核心區域操作,可以繞過很多Linux系統下的安全保護模組。

  此漏洞的發現提出了一種新的漏洞概念,即透過擴充套件使用者的記憶體空間到系統核心的記憶體空間來提升許可權。當發現這種漏洞時,透過研究我們就認為核心中一定還會存在類似的漏洞,果然幾個月後駭客們又在Linux核心中發現與brk相似的漏洞。透過這次成功的預測,更證實了對這種新型的概念型漏洞進行研究很有助於安全人員在系統中發現新的漏洞。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961592/,如需轉載,請註明出處,否則將追究法律責任。

相關文章