當前位置:安全行業動態 → 正文

常見的軟件漏洞以及如何避免這些問題

責任編輯:cres |來源:企業網D1Net  2020-03-03 14:06:23 本文摘自:愛碼農

隨著數據泄露的增加,創建和維護安全軟件對于每個組織都至關重要。盡管并非所有攻擊都可以預期或預防,但可以通過消除軟件漏洞來避免許多攻擊。在本文中,您將了解一些最常見的軟件漏洞以及如何避免這些問題。您還將學習一些通用的優秀實踐,以確保您的軟件和數據保持安全。
 
解決常見軟件漏洞
 
以下漏洞只是MITRE的 2019年CWE最危險的25個最嚴重軟件錯誤列表中列出的幾個漏洞。盡管攻擊者已廣為人知并使用了許多此類問題,但它們仍繼續包含在軟件中。
 
緩沖區溢出
 
當您的程序試圖讀取或寫入超出范圍的緩沖區時,就會發生緩沖區溢出。它可能導致覆蓋或在現有代碼中附加數據。緩沖區溢出可使攻擊者執行代碼,更改程序流,讀取敏感數據或使系統崩潰。
 
緩沖區溢出漏洞的示例包括:
 
· 接受長度不受限制的輸入
 
· 允許從無效索引對數組進行讀取操作
 
緩沖區溢出漏洞的包含通常發生在體系結構和設計,實施或操作階段。這些漏洞最常見于C,C ++和Assembly程序,但可以以任何缺少內存管理支持的語言出現。
 
緩沖區溢出的漏洞預防措施
 
盡可能選擇一種防止或降低此漏洞風險的語言,例如Java或Perl。如果這是一個選項,請不要禁用溢出保護,例如在C#中。此外,請記住,與環境中的易受攻擊的本機代碼交互時,即使是“免疫”語言也可能會產生錯誤。
 
為了防止利用緩沖區溢出漏洞,可以使用包含功能或擴展名以限制輸入的編譯器。例如,Visual Studio或StackGuard。您還可以使用工具在內存中隨機排列程序組件。這使得地址更難以識別或預測,從而使攻擊者難以利用特定組件。
 
創建代碼時,請確保正確分配了緩沖區空間。另外,請使用允許您限制輸入大小的方法和功能。
 
輸入驗證不正確
 
當用戶輸入在接受時未得到驗證或驗證不足時,就會發生輸入驗證不當。不正確的驗證可以使攻擊者執行惡意代碼,更改程序流,訪問敏感數據或濫用資源分配。
 
驗證不當的示例包括:
 
· 假設攻擊者無法訪問隱藏的表單字段
 
· 僅驗證輸入的長度而不是內容
 
包含不正確的驗證通常發生在架構,設計和實施階段。它可以在任何接受外部數據的語言或系統中發生。
 
輸入驗證不當的漏洞預防措施
 
您應該對任何用戶應用“零信任”原則,并假設所有輸入都是有害的,直到證明安全為止。使用白名單以確保輸入內容僅包含可接受的格式和內容。
 
在驗證輸入時,請評估長度,類型,語法和對邏輯的符合性(即輸入具有語義意義)。您可以使用多種工具來確保進行充分的驗證,例如OWASP ESAPI驗證API和RegEx。使用這些工具來驗證所有輸入源,包括環境變量,查詢,文件,數據庫和API調用。
 
確保在客戶端和服務器端都執行檢查。可以繞過客戶端驗證,因此您需要仔細檢查。如果繞過客戶端驗證,則在服務器端捕獲輸入可以幫助您識別攻擊者的操縱。在進行任何必要的組合或轉換后,請驗證輸入。
 
信息公開
 
當有意或無意將數據提供給潛在攻擊者時,就會發生信息泄露。數據可以包含敏感信息,也可以向攻擊者提供有關可以在攻擊中利用的軟件或環境的信息。
 
信息公開的示例包括:
 
· 顯示文件或程序完整路徑的錯誤
 
· 錯誤消息暴露了數據庫中用戶的存在
 
包含信息公開漏洞通常發生在開發的體系結構和設計或實施階段。任何語言都可能發生這些漏洞。
 
信息暴露的漏洞預防措施
 
為防止信息泄露,您應設計程序體系結構以將敏感信息包含在具有明確信任邊界的區域中。確保使用訪問控制來保護和限制“安全”區域與端點之間的連接。
 
為了很大程度地利用漏洞,請驗證錯誤消息和用戶警告中是否包含不必要的信息。您還應該限制來自URL和通信標頭的敏感信息。例如,模糊完整的路徑名或API密鑰。
 
特權或認證不當
 
如果未正確分配,跟蹤,修改或驗證用戶權限和憑據,則會發生不正確的權限或身份驗證。這些漏洞可使攻擊者濫用特權,執行受限任務或訪問受限數據。
 
不當特權或身份驗證的示例包括:
 
· 不可逆轉的臨時特權升級。
 
· 通過黑名單而不是白名單來限制特權。
 
· 允許較低的特權級別影響較高的特權帳戶,例如重置管理員密碼。
 
· 無限制的登錄嘗試或會話限制。
 
特權或身份驗證漏洞通常在開發的體系結構和設計,實施或操作階段引入。任何語言都可能發生這些漏洞。
 
特權或身份驗證的漏洞預防措施
 
您應將最小特權原則應用于與您的軟件和系統交互的所有用戶和服務。通過在整個程序和環境中應用訪問控制來限制用戶和實體的功能。您應該將權限限制為僅用戶或服務所需的那些資源。
 
如果可能,將高級特權分成多個角色。分離有助于限制“高級用戶”,并降低攻擊者濫用訪問權限的能力。您還可以應用多因素身份驗證方法來防止攻擊者繞過系統或獲得輕松的訪問權限。
 
減少一般漏洞的優秀實踐
 
除了采取針對特定漏洞的措施外,您還應該采取一些措施來總體上減少漏洞。您可以從以下做法開始。
 
向威脅情報來源學習
 
監視和應用來自漏洞數據庫和獨立監督組(例如OWASP或NIST)的信息。這些資源可以在發現漏洞后為您提供有關漏洞的信息。這些資源通常包括有關如何解決或緩解當前存在的問題的信息。您可以應用此信息來確保正確修補了系統和組件。
 
仔細包括依賴性
 
確保僅在需要時才使用經過審查和信任的庫和框架。這些工具中的漏洞會傳輸到您的軟件,并且可以為攻擊者提供后門訪問。使用庫和框架時,請確保您了解可用的功能,并且知道任何已知的利用或漏洞。
 
進行漏洞評估
 
即使您遵循任何已知的優秀做法,也不要假定您的程序是安全的。您需要在運行時靜態測試代碼,以確保不會遺漏漏洞。將自動測試工具集成到您的開發環境中可以幫助您盡早發現漏洞。這些工具可以幫助您確保不會因時間限制而跳過測試,也不會因人為錯誤而忽略測試。
 
結論
 
軟件漏洞似乎是不可避免的,但大多數漏洞可以消除或至少減少。通過了解如何引入漏洞,您可以調整自己的做法和測試以在產品發布之前發現問題。
 
希望本文能幫助您了解一些最常見的漏洞。通過應用此處介紹的實踐和方法,可以減少攻擊者利用軟件中這些問題的機會。

關鍵字:軟件漏洞

本文摘自:愛碼農

常見的軟件漏洞以及如何避免這些問題 掃一掃
分享本文到朋友圈

關于我們聯系我們版權聲明友情鏈接廣告服務會員服務投稿中心招賢納士

企業網版權所有©2010-2020 京ICP備09108050號-6

^
gta5线上最赚钱的产业