規避漏洞的防範措施和定期升級
規避漏洞的防範措施和定期升級
緩沖區溢出漏洞
當軟件程序試圖讀取或寫入超出範圍的緩沖區時,就會發生(shēng)緩沖區溢出。它可能導緻覆蓋或在現有代碼中(zhōng)附加數據。緩沖區溢出可使攻擊者執行代碼、更改程序流、讀取敏感數據或使系統崩潰等。
包括:
接受長度不受限制的輸入
允許從無效索引對數組進行讀取操作
緩沖區溢出漏洞通常發生(shēng)在體(tǐ)系結構和設計、實施或操作階段。這一(yī)漏洞最常見于 C,C ++ 和 Assembly 程序,可以以任何缺少内存管理支持的語言出現。
如何防範?
盡可能選擇一(yī)種防止或降低此漏洞風險的語言,例如:Java 或 Perl。不要禁用溢出保護,例如在 C# 中(zhōng)。與環境中(zhōng)的易受攻擊的本機代碼交互時,即使是“免疫”語言也可能會産生(shēng)錯誤。
爲了防止利用緩沖區溢出漏洞,可以使用包含功能或擴展名以限制輸入的編譯器。例如, Visual Studio 或 StackGuard。還可以使用工(gōng)具在内存中(zhōng)随機排列程序組件。使地址更難以識别或預測,從而使攻擊者難以利用特定組件。
最後,在創建代碼時,确保正确分(fēn)配了緩沖區空間。另外(wài),使用允許限制輸入大(dà)小(xiǎo)的方法和功能。
對輸入的驗證
當用戶輸入在接受時未得到驗證或驗證不足時,就會發生(shēng)輸入驗證不當。不正确的驗證可以使攻擊者執行惡意代碼、更改程序流、訪問敏感數據或濫用資(zī)源分(fēn)配。
包括:
假設攻擊者無法訪問隐藏的表單字段
僅驗證輸入的長度而不是内容
通常發生(shēng)在架構、設計和實施階段。它可以在任何接受外(wài)部數據的語言或系統中(zhōng)發生(shēng)。
預防措施
應該對任何用戶采取“零信任”原則,并假設所有輸入都是有害的,直到證明安全爲止。使用白(bái)名單以确保輸入内容僅包含可接受的格式和内容。
在驗證輸入時,長度、類型、語法和對邏輯的符合性(即輸入具有語義意義)。可以使用多種工(gōng)具來确保進行充分(fēn)的驗證,例如 OWASP ESAPI 驗證 API 和 RegEx。使用這些工(gōng)具來驗證所有輸入源,包括環境變量,查詢,文件,數據庫和 API 調用。
确保在客戶端和服務器端都執行檢查。可以繞過客戶端驗證,因此需要仔細檢查。如果繞過客戶端驗證,則在服務器端捕獲輸入可以幫助你識别攻擊者的操縱。在進行任何必要的組合或轉換後,請驗證輸入。
信息洩露
當有意或無意将數據提供給潛在攻擊者時,就會發生(shēng)信息洩露。數據可以包含敏感信息,也可以向攻擊者提供有關可以在攻擊中(zhōng)利用的軟件或環境的信息。
信息公開(kāi)的示例包括:
顯示文件或程序完整路徑的錯誤
錯誤消息暴露了數據庫中(zhōng)用戶的存在
信息洩漏漏洞通常發生(shēng)在開(kāi)發的體(tǐ)系結構和設計或實施階段。任何語言都可能發生(shēng)這些漏洞。
預防措施
爲防止信息洩露,應該設計程序體(tǐ)系結構以将敏感信息包含在具有明确信任邊界的區域中(zhōng)。确保使用訪問控制來保護和限制“安全”區域與端點之間的連接。
爲了最大(dà)程度地利用漏洞,請驗證錯誤消息和用戶警告中(zhōng)是否包含不必要的信息。還應該限制來自 URL 和通信标頭的敏感信息。例如,模糊完整的路徑名或 API 密鑰。
權限認證不當
如果未正确分(fēn)配、跟蹤、修改或驗證用戶權限和憑據,則會發生(shēng)不正确的權限或身份驗證。這些漏洞可使攻擊者濫用權限,執行受限任務或訪問受限數據。
包括:
不可逆轉的臨時權限升級。
通過黑名單而不是白(bái)名單來限制權限。
允許較低的權限級别影響較高的權限帳戶,例如:重置管理員(yuán)密碼。
無限制的登錄嘗試或會話(huà)限制。
權限或身份驗證漏洞通常在開(kāi)發的體(tǐ)系結構和設計,實施或操作階段引入。任何語言都可能發生(shēng)這些漏洞。
預防措施
應該将最小(xiǎo)權限原則應用于軟件和系統交互的所有用戶和服務。通過在整個程序和環境中(zhōng)應用訪問控制來限制用戶和實體(tǐ)的功能。将權限限制爲僅用戶或服務所需的那些資(zī)源。
此外(wài),将高級權限分(fēn)成多個角色。分(fēn)離(lí)有助于限制“高級用戶”,并降低攻擊者濫用訪問權限的能力。還可以應用多因素身份驗證方法來防止攻擊者繞過系統或獲得輕松的訪問權限。
減少一(yī)般漏洞的措施
除了采取針對特定漏洞的措施外(wài),還應該采取一(yī)些措施來總體(tǐ)上減少漏洞。例如:
關注威脅情報
時刻關注威脅情報,了解新漏洞、新補丁、新舉措,防範于未然。
進行漏洞評估
對軟件進行定期的滲透測試,提高軟件安全性,在攻擊者之前發現潛在漏洞的存在,并做好相應的應對措施。