亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

野指針:小小的程序錯誤導致嚴重安全漏洞
2008-01-28   

在過去,相當普遍的稱為野指針(dangling pointers)的程序錯誤經常被看作是質量控制問題而不是安全因素。例如在2005年,一個在IIS5.1上的野指針問題被報告給微軟,但是兩年多仍沒有發布修復補丁,而這種類型的bug完全有可能破壞系統或者引起一個嚴重的安全威脅。

野指針出現在當程序員創建、使用,然后釋放內存中一個對象但卻沒有相應改變對象指針的值時——在這種情況下,產生了一個無效指針。結果是指針錯誤地指向了一個已使用的內存位置。當這個指針指向的不再一個合法的對象時,就被認為是“野指針”。因為這個被野指針指向的內存,可能包含完全不同的數據。當一個程序錯誤地通過野指針訪問對象時,不可預期的行為就可能會出現。

最近IBM宣稱,在線風險管理公司Watchfire的專家們已經找到一個方法來控制野指針并且使它們指向特定的內存位置。通過發送一個特別精心設計的URL給服務器,研究人員喬納森•埃佛克和Adi Sharabani發現它們可以破壞一個目標機器并且可以在它上面運行他們自己的加殼代碼。用這種方法,一個攻擊者可以遠程控制或入侵任何一臺機器,只要這臺機器有一個野指針在它的應用程序中,用大致相同的方法攻擊者也可以進行緩沖區溢出攻擊。

我們可以看到緩沖區溢出攻擊是多么有破壞性和有效性。當一個攻擊者可以隨便修改計算機內存時,毀壞數據結構、信息泄漏、加大權限和執行惡意代碼都是可能出現的后果。盡管野指針在許多成熟的程序中可能被發現,黑客們還是集中關注于網絡應用程序,因為在這些程序中包含大量的敏感數據。

野指針很難被程序員定位,因為它們經常是在創造很久后才破壞不相關的數據或者造成系統不穩定。這些bug在低級語言譬如C和C++中很普遍。在像Java和C#高級語言中,野指針是不可能發生的。因為(在Java和C#中),當一個對象被銷毀時,指針會被自動處理,并且不用的單元也被回收。不使用這種自動處理指針語言的開發者們需要重新評估他們的應用程序開發步驟。所有的指針在使用后都需要被置為空指針。

靈活的指針是很流行的數據類型,因為它可以很好控制內存。一個靈活的指針很典型的要涉及從計算到回收對象。涉及計算的機器計算那個指向相同對象的指針,一旦計算等于0,對象將被刪除。

一些別的防止野指針的方法包括“墓碑方法”和“鎖鑰算法”。一旦一個對象被廢棄,一個相關的墓碑被自動產生來廢棄與之相關的指針。在“鎖鑰算法”設想中,指針訪問是通過比較一組有序的關鍵字中的兩個值來決定的。另外有價值的產品比如Valgrind是一組調試設備,Boehm-Demers-Weiser是一種廢棄回收的工具,它可以整理代碼,同樣可以幫助預防野指針。

因為野指針不再被認為是一個良性問題,開發者們需要調整軟件開發步驟以避免野指針出現在產品代碼中。因為這個問題遠離開質量控制階段變得太嚴重,保護措施應該被開發周期早期。使用用高級語言開發,進度會相對的順利些。對那些使用其它語言開發而處于開發和維護中的程序來說,使用上文提到過的最優方法值得推薦。


熱詞搜索:

上一篇:計算機安全知識連載:避免社會工程攻擊
下一篇:補丁跟蹤管理:手工還是自動

分享到: 收藏