規避漏洞的(de)防範措施和(hé)定期升級

2021-11-30
浏覽次數:
返回列表

規避漏洞的(de)防範措施和(hé)定期升級


緩沖區(qū)溢出漏洞


當軟件程序試圖讀取或寫入超出範圍的(de)緩沖區(qū)時(shí),就會發生緩沖區(qū)溢出。它可(kě)能導緻覆蓋或在現有代碼中附加數據。緩沖區(qū)溢出可(kě)使攻擊者執行代碼、更改程序流、讀取敏感數據或使系統崩潰等。


包括:


接受長(cháng)度不受限制的(de)輸入


允許從無效索引對(duì)數組進行讀取操作


緩沖區(qū)溢出漏洞通(tōng)常發生在體系結構和(hé)設計、實施或操作階段。這(zhè)一漏洞最常見于 C,C ++ 和(hé) Assembly 程序,可(kě)以以任何缺少内存管理(lǐ)支持的(de)語言出現。


如何防範?


盡可(kě)能選擇一種防止或降低此漏洞風險的(de)語言,例如:Java 或 Perl。不要禁用(yòng)溢出保護,例如在 C# 中。與環境中的(de)易受攻擊的(de)本機代碼交互時(shí),即使是“免疫”語言也(yě)可(kě)能會産生錯誤。


爲了(le)防止利用(yòng)緩沖區(qū)溢出漏洞,可(kě)以使用(yòng)包含功能或擴展名以限制輸入的(de)編譯器。例如, Visual Studio 或 StackGuard。還(hái)可(kě)以使用(yòng)工具在内存中随機排列程序組件。使地址更難以識别或預測,從而使攻擊者難以利用(yòng)特定組件。


最後,在創建代碼時(shí),确保正确分(fēn)配了(le)緩沖區(qū)空間。另外,使用(yòng)允許限制輸入大(dà)小的(de)方法和(hé)功能。


對(duì)輸入的(de)驗證


當用(yòng)戶輸入在接受時(shí)未得(de)到驗證或驗證不足時(shí),就會發生輸入驗證不當。不正确的(de)驗證可(kě)以使攻擊者執行惡意代碼、更改程序流、訪問敏感數據或濫用(yòng)資源分(fēn)配。


包括:


假設攻擊者無法訪問隐藏的(de)表單字段


僅驗證輸入的(de)長(cháng)度而不是内容


通(tōng)常發生在架構、設計和(hé)實施階段。它可(kě)以在任何接受外部數據的(de)語言或系統中發生。


預防措施


應該對(duì)任何用(yòng)戶采取“零信任”原則,并假設所有輸入都是有害的(de),直到證明(míng)安全爲止。使用(yòng)白名單以确保輸入内容僅包含可(kě)接受的(de)格式和(hé)内容。


在驗證輸入時(shí),長(cháng)度、類型、語法和(hé)對(duì)邏輯的(de)符合性(即輸入具有語義意義)。可(kě)以使用(yòng)多(duō)種工具來(lái)确保進行充分(fēn)的(de)驗證,例如 OWASP ESAPI 驗證 API 和(hé) RegEx。使用(yòng)這(zhè)些工具來(lái)驗證所有輸入源,包括環境變量,查詢,文件,數據庫和(hé) API 調用(yòng)。


确保在客戶端和(hé)服務器端都執行檢查。可(kě)以繞過客戶端驗證,因此需要仔細檢查。如果繞過客戶端驗證,則在服務器端捕獲輸入可(kě)以幫助你識别攻擊者的(de)操縱。在進行任何必要的(de)組合或轉換後,請驗證輸入。


信息洩露


當有意或無意将數據提供給潛在攻擊者時(shí),就會發生信息洩露。數據可(kě)以包含敏感信息,也(yě)可(kě)以向攻擊者提供有關可(kě)以在攻擊中利用(yòng)的(de)軟件或環境的(de)信息。


信息公開的(de)示例包括:


顯示文件或程序完整路徑的(de)錯誤


錯誤消息暴露了(le)數據庫中用(yòng)戶的(de)存在


信息洩漏漏洞通(tōng)常發生在開發的(de)體系結構和(hé)設計或實施階段。任何語言都可(kě)能發生這(zhè)些漏洞。


預防措施


爲防止信息洩露,應該設計程序體系結構以将敏感信息包含在具有明(míng)确信任邊界的(de)區(qū)域中。确保使用(yòng)訪問控制來(lái)保護和(hé)限制“安全”區(qū)域與端點之間的(de)連接。


爲了(le)最大(dà)程度地利用(yòng)漏洞,請驗證錯誤消息和(hé)用(yòng)戶警告中是否包含不必要的(de)信息。還(hái)應該限制來(lái)自 URL 和(hé)通(tōng)信标頭的(de)敏感信息。例如,模糊完整的(de)路徑名或 API 密鑰。


權限認證不當


如果未正确分(fēn)配、跟蹤、修改或驗證用(yòng)戶權限和(hé)憑據,則會發生不正确的(de)權限或身份驗證。這(zhè)些漏洞可(kě)使攻擊者濫用(yòng)權限,執行受限任務或訪問受限數據。


包括:


不可(kě)逆轉的(de)臨時(shí)權限升級。


通(tōng)過黑(hēi)名單而不是白名單來(lái)限制權限。


允許較低的(de)權限級别影(yǐng)響較高(gāo)的(de)權限帳戶,例如:重置管理(lǐ)員(yuán)密碼。


無限制的(de)登錄嘗試或會話(huà)限制。


權限或身份驗證漏洞通(tōng)常在開發的(de)體系結構和(hé)設計,實施或操作階段引入。任何語言都可(kě)能發生這(zhè)些漏洞。


預防措施


應該将最小權限原則應用(yòng)于軟件和(hé)系統交互的(de)所有用(yòng)戶和(hé)服務。通(tōng)過在整個(gè)程序和(hé)環境中應用(yòng)訪問控制來(lái)限制用(yòng)戶和(hé)實體的(de)功能。将權限限制爲僅用(yòng)戶或服務所需的(de)那些資源。


此外,将高(gāo)級權限分(fēn)成多(duō)個(gè)角色。分(fēn)離有助于限制“高(gāo)級用(yòng)戶”,并降低攻擊者濫用(yòng)訪問權限的(de)能力。還(hái)可(kě)以應用(yòng)多(duō)因素身份驗證方法來(lái)防止攻擊者繞過系統或獲得(de)輕松的(de)訪問權限。


減少一般漏洞的(de)措施


除了(le)采取針對(duì)特定漏洞的(de)措施外,還(hái)應該采取一些措施來(lái)總體上減少漏洞。例如:


關注威脅情報


時(shí)刻關注威脅情報,了(le)解新漏洞、新補丁、新舉措,防範于未然。


進行漏洞評估


對(duì)軟件進行定期的(de)滲透測試,提高(gāo)軟件安全性,在攻擊者之前發現潛在漏洞的(de)存在,并做(zuò)好相應的(de)應對(duì)措施。


搜索