◆作業系統體繫結構的安全隱患
這是電腦系統脆弱性的根本原因。如Unix系統的許多版本升級開發都是採用打補丁(Patch)的方式進行的,這種方式駭客同樣也可以使用。另外,作業系統的程式可以動態連結,包括I/O驅動程式與系統服務,但這同樣為駭客提供了可乘之機。如駭客可將磁帶裝置的軟連結點/dev/rmt/0進行修改,添加某種後門程式,那麼當使用者執行tar cvf /dev/rmt/0 *這類命令的時候,可能啟用該後門程式從而導致漏洞的產生。可是作業系統支援程式動態連結和資料動態交換又是現代作業系統整合和擴充必備的功能,因而出現了自相矛盾之處。
◆進程建立和遠端程序呼叫(RPC)的安全隱患一方面,Unix作業系統支援遠程載入程式,另一方面,它又可以建立進程,支援在網路節點上建立和啟用遠程進程,並且被建立的進程能夠繼承父進程的許可權。這兩點結合在一起就為駭客在遠程伺服器上安裝"間諜"軟體提供了可能。
◆系統守護進程的安全隱患
守護進程實際上是一組系統進程,它們總是等待相應條件的出現,一旦條件滿足,進程便繼續進行下去。這些進程特性是駭客能夠利用的。值得注意的是,關鍵不是精靈本身,而是這種守護進程是否具有與作業系統核心層軟體同等的權利。
實際上,在Unix剛剛開發出來的時候,安全性還並不是它主要關注的因素。它的安全模型是為區域網路環境下的小型或中等規模的工作群組所設計的。1988年的Internet蠕蟲事件就是一個明顯的證據:在系統層級上的安全措施是非常不夠的。儘管蠕蟲事件導致Carnegie Mellon大學電腦緊急情況反應小組(Computer Emergence Response Team,CERT)的成立,並加強了系統供應商和系統管理員的安全意識,但現在人們對於安全問題的認識和準備還是遠遠落後於各種專業或業餘駭客的能力和決心。幸運的是,現在有很多的OEM附加安全組件和第三方產品可以為承擔風險的WWW、FTP、Email Unix伺服器提供足夠的保障。
◆應用軟體在安全設計上的滯後性
目前Internet上啟動並執行很多應用軟體在最初設計的時候根本或很少考慮到要抵擋駭客的攻擊。為區域網路設計的Client/Server結構的應用程式在未做任何修改的情況下,直接聯到了Internet環境下,然後便面臨著被攻擊。即使這些軟體獲得了防火牆和其他安全手段的保護,這種危險依舊存在。實踐表明,不管一個應用軟體看起來可能會有多麼安全,由於用來開發和運行這個程式的工具甚至用來保護它的組件都可能具有安全性漏洞,使得該軟體的安全可能變得非常脆弱。也就是說,軟體安全是一個系統工程,系統各相互作用的組件必須放在安全這個統一的尺規去衡量、開發和使用維護。比如對於系統調用函數get(),如果孤立地去考察它,並沒有致命的安全性漏洞。但是當駭客藉助特權程式利用get()函數不檢查參數長度的缺陷,製造緩衝區溢位,並轉而執行一個Shell,則普通使用者就變成了root使用者。可見,在一個相互作用的系統裡,小小的設計缺陷可能導致致命的漏洞。
◆應用軟體在安全評估上的困難性
由於在Internet上啟動並執行諸如WWW、Email等服務軟體代碼規模較大、設計複雜,要從理論上證明這類複雜程式的安全性,以目前的技術手段,還是一個有待突破的世界難題。現在評估軟體安全性的常用方法,就是在具體使用中去檢測,甚至藉助駭客們的攻擊來發現軟體的安全性漏洞並加以修補。