漏洞[1]或脆弱性[2](英語:Vulnerability),是指電腦系統安全方面的缺陷,使得系統或其應用數據的保密性、完整性、可用性、訪問控制等面臨威脅。
在《GB/T 25069-2010 資訊保安技術 術語》,將脆弱性定義為「資產中能被威脅所利用的弱點」[2]。
許多安全漏洞是程式錯誤導致的,此時可叫做安全錯誤(英語:Security bug),但並不是所有的安全隱患都是程式安全錯誤導致的。
- 複雜:大型的複雜系統會增加缺陷以及未預期檔案系統權限的可能性[3][4]。
- 熟悉:使用常見、著名的程式,軟件,作業系統及硬件,若沒有經常更新系統,容易被攻擊者找到缺陷進行攻擊.[5]
- 互連:越來越多的實體連接、特權、通訊埠、通訊協定以及服務,每一項都會增加系統被攻擊的可能性[6]。
- 密碼管理缺陷:電腦用戶的密碼若強度不足,可能會用暴力法破解[7]。電腦用戶將密碼放在電腦軟件可以存取的地方。用戶在不同的程式和網站上使用相同的密碼[3]
- 基本作業系統設計缺陷:操作系統設計者選擇去強化用戶管理或程式管理上的非最佳政策。例如使用預設允許政策的作業系統,給每一個用戶和軟件完整的權限可以存取整台電腦[3]。作業系統的缺陷讓病毒以及惡意軟件可以以管理者的身份執行指令[8]
- 瀏覽網站;有些網站可能會有有害的間諜軟件或廣告軟件,在瀏覽後會自動安裝在電腦中。在瀏覽這些網站後,電腦即受到這些軟件的影響,可能會將個人資料傳送給第三方[9]
- 程式錯誤:軟件開發者在軟件中留下了可利用的漏洞,攻擊者可以用這個漏洞來濫用應用程式[3]
- 不適當的輸入驗證:程式假設所有用戶的輸入都是安全的,沒有檢查用戶輸入的程式,可能會因為無意或刻意的輸入而造成問題,例如緩衝區溢位、SQL注入等問題[3]
- 沒有從過去的錯誤中記取教訓[10][11]:例如大部份在IPv4通訊協定軟件上被發現的漏洞,又在IPv6版本中的重複出現[12]
研究已經證實大部份資訊系統中,最脆弱的部份是用戶、操作者、設計者或是其他的人[13];因此在分析時,人可能有不同的角色,例如資產、威脅、資訊資源等。社會工程學是目前越來越受重視的安全議題。
Ross Anderson. Why Cryptosystems Fail. Technical report, University Computer Laboratory, Cam-
bridge, January 1994.
Neil Schlager. When Technology Fails: Significant Technological Disasters, Accidents, and Failures of
the Twentieth Century. Gale Research Inc., 1994.
Hacking: The Art of Exploitation Second Edition
Kiountouzis, E. A.; Kokolakis, S. A. Information systems security: facing the information society of the 21st century. London: Chapman & Hall, Ltd. ISBN 0-412-78120-4.