如何防范Linux操作系統下緩沖區溢出攻擊 |
發布時間: 2012/6/18 20:49:09 |
雖然Linux病毒屈指可數,但是基于緩沖區溢出(BufferOverflow)漏洞的攻擊還是讓眾多Linux用戶大吃一驚。所謂“世界上第一個Linux病毒”??reman,嚴格地說并不是真正的病毒,它實質上是一個古老的、在Linux/Unix(也包括Windows等系統)世界中早已存在的“緩沖區溢出”攻擊程序。reman只是一個非常普通的、自動化了的緩沖區溢出程序,但即便如此,也已經在Linux界引起很大的恐慌。 緩沖區溢出漏洞是一個困擾了安全專家30多年的難題。簡單來說,它是由于編程機制而導致的、在軟件中出現的內存錯誤。這樣的內存錯誤使得黑客可以運行一段惡意代碼來破壞系統正常地運行,甚至獲得整個系統的控制權。 Linux系統特性 利用緩沖區溢出改寫相關內存的內容及函數的返回地址,從而改變代碼的執行流程,僅能在一定權限范圍內有效。因為進程的運行與當前用戶的登錄權限和身份有關,僅僅能夠制造緩沖區溢出是無法突破系統對當前用戶的權限設置的。因此盡管可以利用緩沖區溢出使某一程序去執行其它被指定的代碼,但被執行的代碼只具有特定的權限,還是無法完成超越權限的任務。 但是,Linux(包括Unix)系統本身的一些特性卻可以被利用來沖破這種權限的局限性,使得能夠利用緩沖區溢出獲得更高的、甚至是完全的權限。主要體現在如下兩方面: 1.Linux(包括Unix)系統通過設置某可執行文件的屬性為SUID或SGID,允許其它用戶以該可執行文件擁有者的用戶ID或用戶組ID來執行它。如果該可執行文件的屬性是root,同時文件屬性被設置為SUID,則該可執行文件就存在可利用的緩沖區溢出漏洞,可以利用它以root的身份執行特定的、被另外安排的代碼。既然能夠使得一個具有root權限的代碼得以執行,就能夠產生一個具有超級用戶root權限的Shell,那么掌握整個系統的控制權的危險就產生了。 2.Linux(包括Unix)中的許多守護進程都是以root權限運行。如果這些程序存在可利用的緩沖區溢出,即可直接使它以root身份去執行另外安排的代碼,而無須修改該程序的SUID或SGID屬性。這樣獲得系統的控制權將更加容易。 隨著現代網絡技術的發展和網絡應用的深入,計算機網絡所提供的遠程登錄機制、遠程調用及執行機制是必須的。這使得一個匿名的Internet用戶有機會利用緩沖區溢出漏洞來獲得某個系統的部分或全部控制權。實際上,以緩沖區溢出漏洞為攻擊手段的攻擊占了遠程網絡攻擊中的絕大多數,這給Linux系統帶來了極其嚴重的安全威脅。 本文出自:億恩科技【www.vbseamall.com】 |