ASVS 應用程式安全驗證標準(五)、Level 2

ASVS Level 2 人工驗證(Manual Verification)
Level 2 適合牽扯到個人金流、企業交易、信用卡資訊、個人身分資料的應用程式。除了使用正確的 安全控制措施(Security Control) 同時控制措施也能有效的運作。面對的威脅主要來自病毒、蠕蟲、使用現成工具的攻擊者。檢驗範圍除了應用程式本身,也包括第三方API的能否提供相同的安全功能。

Level 2 又分為 2A 和 2B ,兩者都能涵蓋 Level 2 的要求項目,差別在於檢測的方法不同。2A 著重人工滲透測試( Penetration Test ),2B則著重在人工原始碼檢查( Code Review )。雖然 Level 1 是 Level 2 的子集合,同樣的要求雖然在 Level 1已經通過自動化工具的檢測,但 Level 2 要以人工滲透測試或原始碼檢查才算通過。因為自動化工具只能檢測出應用程式的漏洞,又稱為負向驗證。工具無法提供足夠的證明這些要求細項是否通過正向驗證。

人工檢測不代表不能使用自動化工具。即使這些工具或許有能力找出應用程式的漏洞,但只能用來幫助分析員找出和評估哪些安全控制措施該接受檢測。

ASVS Level 2 MVC架構範例
ASVS Level 2 的要求項目:
檢測範圍:
  • L2.1 應用程式本身的程式碼。(不包含third party libraries、 framework。)
  • L2.2 應用程式引用的的第三方框架(framework)、函式庫(libraries)和服務的安全性功能。
安全控制措施的行為要求:
  • L2.3 確認所有執行安全檢查的安全控制措施都遵照白名單 (White List Approach) 的模式執行。
  • L2.4 確認所有執行安全檢查的安全控制措施遇到安全事件時,這些檢查都不能被繞路通過。
安全控制措施的使用要求:
  • L2.5 確認所有的安全元件都佈署在應用程式需要的地方,且都以集中控管的方式實作在伺服器端的應用程式中。
安全控制措施的實作要求:
  • 無。
安全控制措施的驗證要求:
  • L2.6 依照"驗證要求細項(Detail Verification Requirements)"確認人工滲透測試的結果。
  • L2.7 依照"驗證要求細項"確認人工原始碼檢查的結果。
檢測報表的要求:
  • L2.8  檢測報表須包含:應用程式安全架構─元件群組化的高階架構(例如 MVC), 加上"驗證報表要求(Verification Reporting Requirements)"的檢測結果。
在 Level 2 ,應用程式的元件可定義為由單一的或一組的原始檔、函式庫、執行檔所組成的高階架構(例如 MVC、企業功能模組和資料層)。你可以在上面看到MVC架構的範例圖。重點是,終端使用者(end user)的執行路徑必須整理出來,紀錄在文件中。雖然不是所有的路徑都會被檢查。

下次將為你介紹 2A 和 2B 的要求細項。

參考資料
----
http://en.wikipedia.org/wiki/Security_controls
http://en.wikipedia.org/wiki/Penetration_test
http://blog.darkthread.net/post-2007-02-16-darkthread-s-code-review-theory.aspx
http://zh.wikipedia.org/zh-tw/MVC
https://www.owasp.org/index.php/How_to_meet_verification_reporting_requirements

留言

這個網誌中的熱門文章

資安JAVA(十一):X-XSS-Protection

資安JAVA(十):X-Content-Type-Options

資安JAVA(十二):Log Forging