安全資訊系統開發(SSDLC)

SSDLC

  • 在系統開發過程中,個階段就加入安全上的考量
  • 確保在各階段都有相對應的安防護措施

為何需要SecureSDLC?

  • 資安事件頻傳
  • 作業系統漏洞
  • 資料庫配置錯誤
  • SQL Injection
  • 軟體漏洞導致資安風險
  • 漏洞年年成長
  • 修補措施及中後期處理、被動反應,且越後期修補成本越高
    cost

軟體安全面向

soft secure

SSDLC (Secure Software Development Life Cycle)階段

SSDLC

需求

設計

威脅建模 Threat Modeling

  • 採用系統化的方法,以攻擊者的角度,識別可能影響軟體系統的威席並進行評估
  • 基於對架構與設計的了解,識別與評估威脅後,已風險高低的順序對威脅發展適當的控制措施。
    tmp
威脅建模步驟:
  • 繪出架構 Diagram
  • 定義威脅 Identify Threats
  • 採取對應的控制措施 Mitigate
  • 驗證 Validate

繪出架構(Diagram)

定義威脅類型(Identify Threats):

  • STRIDE方法
    STRIDE

  • 繪製完架構後,就可以結合STRIDE製作出對應的威脅列表:
    DFD&STRIDE

採取對應的控制措施 Mitigations

mitigations
* S-身份認證
* T 完整性
* R 不可否認性
* I 機密性
* D 可用性
* E 授權
列出威脅列表之後,接下來就可以依據這些威脅來計算風險因子。可以透過DREAD方式來對威脅項目評估風險高低計算:

DREAD
  • 風險 Risk = 發生可能性 Probability of Occurrence x 影響Impace
  • 風險 = (可重製性 + 可刺探性 + 可發現性) X (可能傷害 + 影響人數)
  • DREAD 來自五個風險相關的英文縮寫:
      - D(DamagePotential)可能傷害
      - R(Reproducibility)可重製性
      - E(Exploitability)可刺探性
      - A(AffectedUsers)影響使用者數
      - D(Discoverability
    )可發現性

dread

結合上述元素,就可得出風險值排序:
risk

風險值找出來後,就可以加上控制措施,完成防禦:
mitigations

驗證 Validate

  • 威脅項目:
    validate

相關工具

完整性

  • Windows 下使用power shell 驗證檔案 sha值:
Get-FileHASH C:\Labs\Tool\IISCrypto.exe -Algorithm SHA512 | Format-List
Get-FileHASH C:\Labs\DB\Injection.txt -Algorithm SHA512 | Format-List
// Email 驗證 Reg
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

可用性

  • 備份目標
      - 應用程式備份
      - 儲存檔案備份
      - 資料庫備份
      - 憑證備份
     * 備份週期
     * 備份位置
     * 儲存備份加密
     * 雲端備份服務
      - 自我隨需服務
      - 寬頻網路存取
      - 資源共享

開發

  • 發展控制措施
  • 避免常見弱點

身份驗證

確認使用者的身份識別確如其所宣告的主題。
* 常見弱點
- A2 Broken Authentication and session
* 常見控制措施
- 登入錯誤達一定次數後,進行帳戶鎖定
    - 設定可錯誤次數及鎖定時間(建議30分鐘)
    - 鎖定對象限制為帳號,來源UP
    - 紀錄已錯誤次數,上次成功登入時間
    - 帳號登入超過錯誤次數時,進行鎖定
- 密碼正確雜湊儲存
- 強制密碼長度並定期更換
    - 密碼長度大於12個字元
    - 包含英文大小寫
- 採多重因素認證(Multifactor)
    - 你知道的
    - 你擁有的
    - 你本身有的
    - 你的位置
      - IP位置
- 重要交易行為要求再次身份驗證,並以Captcha機制防堵自動化程式
- 良好的使用者管理機制

  • .NET 連線密碼加解密方式:
使用命令提示字元切換至
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319

連線字串加密方法
aspnet_regiis.exe -pef connectionStrings "C:\Labs\SourceCode\SSDLCSample\SSDLCSample"

連線字串解密方法
aspnet_regiis.exe -pdf connectionStrings "C:\Labs\SourceCode\SSDLCSample\SSDLCSample"

測試

弱點掃描或PT(動態分析)

源碼檢測(靜態分析)

維運部署

  • 組件強化
  • 元件更新

WAF

IPS

參考資料

  • 相關標準
    • NIST SP800-64 美國國家標準與技術研究院所提出,針對系統開發生命週期的安全標準
    • ISO/IEC 27034
      • 第一套針對軟體開發安全性所需之流程與框架之國際標準
      • 針對軟體開發生命週期提供一實作之指引
  • 方法論
    • Microsoft SDL
    • Cigital Security Touchpoints
    • OWASP-CLASP
    • OWASP SAMM