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