安全軟件生命周期之規范性安全軟件生命周期流程:接觸點
接觸點
國際軟件安全顧問GaryMcGraw通過編纂構建安全產品的豐富行業經驗,提供了七個軟件安全接觸點。McGraw使用術語接觸點來指代可以納入安全軟件生命周期的軟件安全最佳實踐。McGraw區分了作為實現錯誤的漏洞和那些是設計缺陷的漏洞。實現錯誤是單段代碼中的局部錯誤,例如緩沖區溢出和輸入驗證錯誤,使發現和理解更容易。設計缺陷是代碼設計級別的系統性問題,例如以不安全的方式失敗的錯誤處理和恢復系統或錯誤地包含傳遞信任問題的對象共享系統。Kuhn等人[32]分析了來自美國國家漏洞數據庫(NVD)的2008-2016年漏洞數據,發現67%的漏洞是實施錯誤。七個接觸點有助于預防和檢測錯誤和缺陷。
下面描述了這七個接觸點,并根據McGraw多年來對每種實踐的效用的經驗按有效性順序提供,因此具有規范性:
1. 代碼審查(工具)。
代碼審查用于檢測實現錯誤。可以使用手動代碼審查,但要求審核員在嚴格檢查代碼之前了解安全漏洞。“使用工具進行代碼審查”(又名使用靜態分析工具或SAST)已被證明是有效的,可供工程師使用沒有專家安全知識。有關靜態分析的進一步討論,請參見第2.1.1節第9點。
2. 架構風險分析。
架構風險分析,也稱為威脅建模(請參閱第4節),用于預防和檢測設計缺陷。設計人員和架構師提供目標系統的高級視圖和假設文檔,并識別可能的攻擊。通過架構風險分析,安全分析師可以發現架構和設計缺陷并進行排序,以便開始緩解。例如,風險分析可以識別可能的攻擊類型,例如攔截和讀取數據的能力。這種識別將促使設計人員查看其所有代碼的流量,以查看攔截是否令人擔憂,以及是否有足夠的保護(即加密)。分析提示的審查是發現設計缺陷的原因,例如敏感數據被明文傳輸。
沒有系統是完全安全的,因此必須使用風險分析來確定安全工作的優先級,并將系統級問題與對構建軟件的業務至關重要的概率和影響措施聯系起來。風險敞口的計算方法是將不良事件發生的概率乘以與該事件相關的成本。
McGraw提出了架構風險分析的三個基本步驟:
?抗攻擊性分析。攻擊抵抗分析使用清單/系統方法考慮每個系統組件與已知威脅的關系,如第2.1.1節第4點中討論Microsoft威脅建模中所做的那樣。在分析過程中使用有關已知攻擊和攻擊模式的信息,識別體系結構中的風險并了解已知攻擊的可行性。如第2.1.1節第4點所述,合并基于STRIDE的攻擊的威脅建模是執行攻擊抵抗分析的示例過程。
? 歧義分析。模糊性分析用于捕獲發現新風險所需的創造性活動。模糊性分析需要兩個或更多經驗豐富的分析師在同一系統上并行執行單獨的分析活動。通過統一對多重分析的理解,分析師之間的分歧可以發現歧義、不一致和新的缺陷。
?弱點分析。弱點分析側重于了解與其他第三方組件中的安全問題相關的風險(請參閱第2.1.1節第7點)。這個想法是了解對第三方軟件的假設,以及當這些假設失敗時會發生什么。
風險識別、排名和緩解是貫穿整個軟件生命周期的持續過程,從需求階段開始。
3. 滲透測試。
滲透測試可以由架構風險分析的結果指導(請參閱第2.1.2節第2點)。有關滲透測試的進一步討論,請參見第2.1.1節,第11點。
4. 基于風險的安全測試。
安全測試必須包含兩種策略:(1)使用標準功能測試技術測試安全功能;(2)基于攻擊模式和架構風險分析結果的基于風險的測試(參見第2.1.2節第2點)和濫用案例(參見第2.1.2節第5點)。對于Web應用程序,安全功能的測試可以由OWASP應用程序安全驗證標準(ASVS)項目12開放標準指導,用于測試應用程序技術安全控制。ASVS還為開發人員提供了安全開發的要求列表。
利用軟件架構和構造、常見攻擊和攻擊者的心態知識指導測試非常重要。使用架構風險分析的結果,測試人員可以適當地關注攻擊可能成功的代碼區域。
基于風險的測試和滲透測試之間的區別在于方法的級別和測試的時間。滲透測試是在軟件完成并安裝在操作環境中時完成的。滲透測試是由外而內的黑盒測試。基于風險的安全測試可以在軟件完成甚至預集成之前開始,包括使用白盒單元測試和存根。兩者的相似之處在于,它們都應該以風險分析、濫用案例和功能安全要求為指導。
5. 濫用案例
這個接觸點編纂了“像攻擊者一樣思考”。用例描述了仁慈參與者對所需系統的行為。濫用案例[20]描述了系統在受到惡意行為者攻擊時的行為。為了開發濫用案例,分析師列舉了有動機攻擊系統的惡意行為者的類型。
對于每個不良行為者,分析師為不良行為者希望從系統中獲得的功能創建一個或多個濫用案例。然后,分析師考慮用例和濫用案例之間的交互,以加強系統。考慮一個汽車的例子。參與者是汽車的駕駛員,這個參與者有一個用例“駕駛汽車”。惡意行為者是偷車賊,其濫用案件是“偷車”。此濫用案例威脅到用例。為了防止盜竊,可以添加新的用例“鎖定汽車”,以減輕濫用情況并加強系統。
人為錯誤是造成大量違規行為的原因。系統分析師還應考慮善意用戶的行為,例如成為網絡釣魚攻擊的受害者,從而導致安全漏洞。這些行為可以被視為濫用案例[21],應該像濫用案例一樣進行分析,考慮濫用案例威脅的用例以及對系統進行強化以減輕濫用案例。
濫用和誤用案例分析確定的攻擊和緩解措施可用作安全要求的輸入(第2.1.1節第2點)。滲透測試(第2.1.1節第11點);以及基于風險的安全測試(第2.1.2節第4點)。
6. 安全要求。
有關安全要求的進一步討論,請參見第2.1.1節第2點。
7. 安全操作。
網絡安全可以與軟件安全集成,以增強安全態勢。無論其他接觸點的應用如何,攻擊都不可避免地會發生。了解攻擊者行為和成功攻擊的軟件是一種基本的防御技術。通過了解攻擊獲得的知識可以反饋到其他六個接觸點。
七個接觸點旨在隨著軟件產品的發展而多次循環。接觸點也是與過程無關的,這意味著實踐可以包含在任何軟件開發過程中。