GSS 資安電子報0010期【SAMM軟體安全的新轉機 】

一群國際的軟體安全專家致力保護軟體安全,他們創辦了OWASP (Open Web Application Project),它是全球免費且開放的社群,專注於加強應用程式軟體安全,目標在提供企業豐富且正確的資訊,以協助企業針對各項安全風險做適當的決策。

此外,這群安全專家亦支持開放的Security Assurance Maturity Model (安全成熟度模型,以下簡稱SAMM),亦稱作OpenSAMM。由軟體安全先驅Pravir Chandra所創立,SAMM扮演一個架構(framework)的角色,協助企業針對各個特別的風險制訂因應策略。

由「好的構想」到「商業必需」

Chandra在開始著手撰寫SAMM前,便注意企業與IT間關係的轉變趨勢。他發現,軟體安全已經由一個「好的構想」轉變成「商業必需」,且產業已經累積了足夠的經驗,供作彼此比對並討論哪些方法確實可行。

當Chandra初步構思SAMM的架構時,回顧過去他擔任軟體安全顧問的經驗,並將個人及他人經驗整合轉換成一套簡明且容易瞭解的軟體安全成熟度架構。
Chandra由三個主要的構思來發展SAMM:

  • 組織行為的轉變十分緩慢。成功的軟體安全計畫必須由小的、可重複的動作所組成,而且在邁向遠程目標的每一階段,都提供明確的結果。
  • 沒有單一可套用所有組織的解決方案。不同的組織有不同的風險組合,SAMM的設計便是讓不同的組織依據其情形調整SAMM內容,以符合不同組織特有的風險情形。
  • 有關安全活動的指導內容務必明確規範。在進行及評估軟體安全時「簡要、定義明確、以及可量化」是關鍵因素。

SAMM模型是如何運作的?

Chandra將SAMM比喻為一盒樂高組合玩具。他將商業功能以及開發流程細分為不同的實踐方案,而且組織可據以遵循以確保其軟體是安全的。當這些實踐方案被正確的組合,組織就會擁有一套有效、可管理的軟體安全計畫。

Chandra補充「在SAMM模型中,我們採用12項安全實踐步驟,並為以下四類的產業定義範本:軟體開發商及廠商、線上服務提供商、金融服務機構以及政府單位。每一個產業範本代表不同的風險情形以及解決方法。

組織必須瞭解,適用於他們的安全實踐方案應該如何對應到他們的軟體開發步驟。「SAMM提供一套可重複實施且均衡並重的方法強化組織的安全計畫。如果最開始你什麼都沒有,你先選擇三個想要加強的實踐方案。在下個改善週期中(譬如六個月)再選擇其他的實踐方案組合」

四個重要的「商業功能」

SAMM在其模型的最高階定義了四個重要的商業功能(business functions):

  • 控管(Governance):在組織階層管理整體軟體開發流程的各項活動。尤其著重軟體開發期間跨部門的運作以及組織層面的商業流程。
  • 建構(Construction):包括威脅評估、定義安全需求,以及建構安全的軟體開發架構供開發人員使用。
  • 驗證(Verification):檢查及測試軟體開發過程中所產生的各項中繼產品(artifacts)譬如程式碼。
  • 部署(Deployment):管理發佈軟體的流程、弱點管理、環境強化、上線時期軟體管理。

每個「商業功能」再細分為三項「安全實踐」(security practices)

SAMM將每個「商業功能」細分為三項「安全實踐」:
「控管」包含以下三項安全實踐:

  • 策略及衡量指標(strategy & metrics):定義軟體安全整體策略以及相關流程與活動。定義可量化且可以與組織真正商業風險對應的安全目標。
  • 政策及法規遵循(policy & compliance):瞭解外部法規、建立軟體安全政策及標準。透過定期審查,確認軟體開發符合公司安全政策及法規。
  • 教育訓練及指南文件(education & guidance):提供參與軟體生命週期的程式開發人員足夠的知識及資源,以設計、開發、部署安全的軟體。

「建構」包括以下三項安全實踐:

  • 威脅評估(threat assessment):依據正開發軟體的各項功能以及執行環境的各種情形,辨識及瞭解專案層面的風險。藉由分析每個專案可能面臨威脅的詳細資料,組織將更有效率決定實施安全活動的優先順序。
  • 安全需求(security requirements):事先明訂軟體應有的安全規範,以供內部及委外軟體開發團隊遵循。
  • 安全架構(security architecture):透過事先加強軟體設計流程,並利用framework、security services、design pattern等,讓組織擁有軟體安全的架構,在預設的情況便可開發安全的軟體。

「驗證」包括以下三項安全實踐:

  • 設計審查(design review):評估軟體的設計及架構是否存在安全相關的問題。協助組織在軟體開發階段的早期便發現架構層面的問題,可避免日後因為安全因素需要重構軟體的龐大支出。
  • 程式碼審查(code review):審查程式碼發掘是否存有安全漏洞。可採用自動化技術大幅增加覆蓋率及程式碼審查的效率。
  • 安全測試(security testing):在程式執行階段檢查以發掘安全問題。可採用自動化技術大幅增加覆蓋率及程式碼審查的效率。

「部署」包括以下三項安全實踐:

  • 弱點管理(vulnerability management):建立一致性的流程,依據內部及外部的弱點報告管理弱點,以限制風險的暴露。
  • 環境強化(environment hardening):對軟體於執行階段的各項作業環境進行控制,以保護已部署應用程式的安全。
  • 運作致能(operational enablement):將開發完成軟體的相關安全資訊提供給軟體操作員或使用者,讓他們能正確的設定、部署、執行組織所開發的軟體。

目標與成熟度

每一個安全實踐都列出了3個可以改善的目標(objective)。3個目標代表3級成熟度,例如完成第一個目標就是成熟度第一級。

成熟度分級如下:
0: 起步點,沒有達到任何目標
1: 有初步認識,達到部分目標
2: 加強功能達成的有效性
3: 對功能有深入的了解和掌握,能大規模地推行功能的要求

由於12項安全實踐都各自擁有三個不同等級的成熟度,可供組織據以衡量,因此SAMM可協助組織瞭解本身軟體安全成熟度的整體狀況,並可協助組織作為建立未來改善規劃藍圖(roadmap)的依據。

每一個成熟度依據以下6項評核標準決定:

  1. 目標(objective):關於該等級成熟度的所需達成安全目標的一段簡要說明。
  2. 活動(activities):欲達到該等級成熟度所需採取的活動。
  3. 結果(results):達到該成熟度後可獲得的功效以及可交付項目。
  4. 成功指標(success metrics):每一項成熟度的範例衡量指標。
  5. 成本(costs):每一個成熟度所需付出的心力。
  6. 人員(personnel):預估需要投注的人力。

SAMM可協助組織對其軟體安全初始計畫建立基準線,並針對如何發展該項初始計畫制訂策略性決定。Chandra表示:「我非常歡迎各界對此SAMM計畫提出寶貴意見,此外,我正與其他組織合作,思考如何將現有的安全及法規對應至SAMM中。我們的主要目標之一是由業界上的安全專家得到回饋意見,以協助我們改善此模型。」Chandra的目標之一是透過蒐集大量業界的安全實踐實際結果資料,再將這些資料對應回SAMM中。這樣的計畫將可協助組織將自己安全成熟度的狀況與其他同類型的組織相互比較。

欲瞭解更多與SAMM有關的資訊,請造訪http://www.opensamm.org/網站。

Fortify — 軟體安全的根源

Fortify Software產品可保護組織免於因關鍵應用軟體存在安全問題而導致威脅。Fortify產品已獲領先的軟體公司和Fortune前500大的IT組織使用。Fortify已發展出領先業界且獲得專利的技術,該技術從內到外的將安全引入到軟體應用程式中,使安全成為軟體固有的本質,藉由在佈署前消除應用程式中的漏洞,應用程式可保護自己免受攻擊。你可以通過訪問www.fortify.com以進一步瞭解Fortify以及它的軟體安全產品。