複製鏈接
請複製以下鏈接發送給好友

軟件漏洞

鎖定
軟件開發者開發軟件時的疏忽,或者是編程語言的侷限性,比如c語言家族比java效率高但漏洞也多,電腦系統幾乎就是用c語言編的,所以常常要打補丁。 軟件漏洞有時是作者日後檢查的時候發現的,然後修正;還有一些人專門找別人的漏洞以從中做些非法的事,當作者知道自己的漏洞被他人利用的時候就會想辦法補救。
多年以來,在計算機軟件(包括來自第三方的軟件,商業的和免費的軟件)中已經發現了不計其數能夠削弱安全性的缺陷(bug)。黑客利用編程中的細微錯誤或者上下文依賴關係,已經能夠控制Linux,讓它做任何他們想讓它做的事情。
中文名
軟件漏洞
外文名
bug
起    因
編程語言侷限性
修復方法
更新

軟件漏洞最常見漏洞

緩衝區溢出是一種常見的編程錯誤,也是一種牽扯到複雜因素的錯誤。開發人員經常預先分配一定量的臨時內存空間,稱為一個緩衝區,用以保存特殊信息。如果代碼沒有仔細地把要存放的數據大小同應該保存它的空間大小進行對照檢查,那麼靠近該分配空間的內存就有被覆蓋的風險。熟練的黑客輸入仔細組織過的數據就能導致程序崩潰,更糟糕的話能執行代碼。
軟件漏洞 軟件漏洞
幸虧近年來緩衝區溢出攻擊發生的顯著數量提高了編程界對這個問題的認識。雖然緩衝區溢出仍然在出現,但它們經常會被很快發現和糾正,特別在開放源代碼應用中更是如此。像Java.Net這樣的比較新的編程體系都包含自動檢查數據大小,防止發生緩衝區溢出的機制。
緩衝區溢出是稱為輸入有效性漏洞的更大一類軟件安全缺陷下的一個子類。幾乎所有的程序都接受某種類型的用户輸入(例如,命令行參數或者HTML表格)。如果代碼沒有嚴格檢查輸入的格式和內容是否合適,就開始處理數據,那麼就會發生問題。考慮下面這個簡單的例子:
這段代碼的意圖可能是打印/var/www/html下某個HTML文件的內容,/var/www/html是Red Hat服務器上Apache的httpd服務程序默認的文檔根目錄。這段代碼接受用户輸入的一個文件名,把它作為參數傳給open函數。不過,如果一個惡意的用户把../../../etc/shadow當作參數輸入的話,就會顯示出/etc/shadow的內容,並可能根據這些內容破譯出root密碼!
作為一名系統管理員,您該如何防止這種情況發生呢?幾乎無可奈何,至少在確定出缺陷(bug),併發布解決它的補丁之前是這樣。緊盯補丁和安全性公告的發佈,這是大多數系統管理員工作的一個重要部分。大多數Linux發行版本都帶自動打補丁的工具,如Fedora上的yum、DebianUbuntu上的apt-get。利用這些工具能讓您的站點避免出現軟件的安全漏洞問題。

軟件漏洞編程錯誤

大多數IT安全事件(如補丁程序網絡攻擊等)都與軟件編程錯誤有關,在過去的三年中,非盈利調研機構MITRE和美國系統網絡安全協會( SANS Institute)發現了700多處常見的軟件編程錯誤,經過安全專家的篩選,最終公佈了以下25大軟件編程錯誤:
1. 錯誤的輸入驗證
2. 不正確的編碼或轉義輸出
3. 維持SQL查詢結構(SQL注入)錯誤
4. 維持網頁結構(跨站點腳本)錯誤
5. 維持操作系統命令結果(操作系統命令注入)錯誤
6. 明文傳送敏感信息
7. 跨站點請求偽造
8. 資源競爭(Race condition)
9. 錯誤信息泄露
10. 限定緩衝區內操作失敗
11. 外部控制重要狀態數據
12. 外部控制文件名或路徑
13. 不可信搜索路徑
14. 控制代碼生成錯誤(代碼注入)
15. 下載未經完整性檢查的代碼
16. 錯誤的資源關閉或發佈
17. 不正確的初始化
18. 錯誤計算
19. 可滲透防護
20. 使用被破解的加密算法
21. 硬編碼密碼
22. 對核心資源的錯誤權限分配
23. 隨機值的錯誤利用
24. 濫用特權操作
25. 客户端執行服務器端安全