分析Unix主機系統(tǒng)安全漏洞存在的必然性
◆操作系統(tǒng)體系結(jié)構(gòu)的安全隱患
這是計算機系統(tǒng)脆弱性的根本原因。如Unix系統(tǒng)的許多版本升級開發(fā)都是采用打補丁(Patch)的方式進行的,這種方式黑客同樣也可以使用。另外,操作系統(tǒng)的程序可以動態(tài)鏈接,包括I/O驅(qū)動程序與系統(tǒng)服務(wù),但這同樣為黑客提供了可乘之機。如黑客可將磁帶設(shè)備的軟鏈接點/dev/rmt/0進行修改,添加某種后門程序,那么當用戶執(zhí)行tar cvf /dev/rmt/0 *這類命令的時候,可能激活該后門程序從而導致漏洞的產(chǎn)生??墒遣僮飨到y(tǒng)支持程序動態(tài)鏈接和數(shù)據(jù)動態(tài)交換又是現(xiàn)代操作系統(tǒng)集成和擴展必備的功能,因而出現(xiàn)了自相矛盾之處。
◆進程創(chuàng)建和遠程過程調(diào)用(RPC)的安全隱患一方面,Unix操作系統(tǒng)支持遠程加載程序,另一方面,它又可以創(chuàng)建進程,支持在網(wǎng)絡(luò)節(jié)點上創(chuàng)建和激活遠程進程,并且被創(chuàng)建的進程能夠繼承父進程的權(quán)限。這兩點結(jié)合在一起就為黑客在遠程服務(wù)器上安裝"間諜"軟件提供了可能。
◆系統(tǒng)守護進程的安全隱患
守護進程實際上是一組系統(tǒng)進程,它們總是等待相應條件的出現(xiàn),一旦條件滿足,進程便繼續(xù)進行下去。這些進程特性是黑客能夠利用的。值得注意的是,關(guān)鍵不是守護程序本身,而是這種守護進程是否具有與操作系統(tǒng)核心層軟件同等的權(quán)利。
實際上,在Unix剛剛開發(fā)出來的時候,安全性還并不是它主要關(guān)注的因素。它的安全模型是為局域網(wǎng)環(huán)境下的小型或中等規(guī)模的工作組所設(shè)計的。1988年的Internet蠕蟲事件就是一個明顯的證據(jù):在系統(tǒng)級別上的安全措施是非常不夠的。盡管蠕蟲事件導致Carnegie Mellon大學計算機緊急情況反應小組(Computer Emergence Response Team,CERT)的成立,并加強了系統(tǒng)供應商和系統(tǒng)管理員的安全意識,但現(xiàn)在人們對于安全問題的認識和準備還是遠遠落后于各種專業(yè)或業(yè)余黑客的能力和決心。幸運的是,現(xiàn)在有很多的OEM附加安全部件和第三方產(chǎn)品可以為承擔風險的WWW、FTP、Email Unix服務(wù)器提供足夠的保障。
◆應用軟件在安全設(shè)計上的滯后性
目前Internet上運行的很多應用軟件在最初設(shè)計的時候根本或很少考慮到要抵擋黑客的攻擊。為局域網(wǎng)設(shè)計的Client/Server結(jié)構(gòu)的應用程序在未做任何修改的情況下,直接聯(lián)到了Internet環(huán)境下,然后便面臨著被攻擊。即使這些軟件獲得了防火墻和其他安全手段的保護,這種危險依舊存在。實踐表明,不管一個應用軟件看起來可能會有多么安全,由于用來開發(fā)和運行這個程序的工具甚至用來保護它的組件都可能具有安全漏洞,使得該軟件的安全可能變得非常脆弱。也就是說,軟件安全是一個系統(tǒng)工程,系統(tǒng)各相互作用的組件必須放在安全這個統(tǒng)一的標尺去衡量、開發(fā)和使用維護。比如對于系統(tǒng)調(diào)用函數(shù)get(),如果孤立地去考察它,并沒有致命的安全漏洞。但是當黑客借助特權(quán)程序利用get()函數(shù)不檢查參數(shù)長度的缺陷,制造緩沖區(qū)溢出,并轉(zhuǎn)而執(zhí)行一個Shell,則普通用戶就變成了root用戶??梢?,在一個相互作用的系統(tǒng)里,小小的設(shè)計缺陷可能導致致命的漏洞。
◆應用軟件在安全評估上的困難性
由于在Internet上運行的諸如WWW、Email等服務(wù)軟件代碼規(guī)模較大、設(shè)計復雜,要從理論上證明這類復雜程序的安全性,以目前的技術(shù)手段,還是一個有待突破的世界難題。現(xiàn)在評估軟件安全性的常用方法,就是在具體使用中去檢測,甚至借助黑客們的攻擊來發(fā)現(xiàn)軟件的安全漏洞并加以修補。
【編輯推薦】