Linux kernel · Security

Manage Kernel Vulnerabilities in the Software Development Life Cycle – 透過軟體開發生命周期管理 Kernel Vulnerabilities

2020 年在 Cybersec 的技術會議上分享如何透過軟體開發生命周期管理 kernel vulnerabilities

常見的軟體開發生命周期包含了:

  1. 需求分析 (Requirement Analysis)
  2. 設計 (Design)
  3. 實作 (Implementation)
  4. 測試 (Testing)
  5. 維護/ 改版 (Maintenance/ Evolution)

產品開發中常見的謬誤是 – Vulnerabilities 或 CVE 只要在維護/ 改版階段再來處理就好了, 但這樣的觀念忽略掉越後期處理 vulnerabilities 成本會越高.

除了修改難度加高外, 研發人員也會疲於奔命在現有專案以及舊有專案維護上進行工作切換, 更不用說通常 vulnerabilities 都來的又急又快, 長期來說會嚴重傷害研發人員身心健康.

所以說, 比較好的做法是以系統性方法來管理 kernel vulnerabilities, 在軟體開發生命周期每個階段中都考慮 vulnerabilities 相關元素, 這樣做除了降低維護成本外, 也能讓研發資源好好地被配置.

以下根據個人經驗, 列出每個開發階段如何加入vulnerabilities 管理元素

  1. 需求分析 (Requirement Analysis)
    • 好好定義出真正的產品/ 應用需求, 以提供資訊給設計階段來選取 kernel 
  2. 設計 (Design)
    • 根據產品/ 應用需求來選取並使用相對適合的 kernel 類型以及版本
    • 使用定版 kernel, 而不是滾動中的版本 (rolloing version)
  3. 實作 (Implementation)
    • 遵循 “upstream first" policy, 所有的修改盡量都送到上游, 以避免因時間累積大量 in-house patch, 導致維護上的困難
    • 最佳化 kernel configuration, 沒用到或不需要的選項全部關閉.
  4. 測試 (Testing)
    • 善用自動化工具, 除了確保軟體品質外, 也能降低進版測試的人力/ 物力成本
  5. 維護/ 改版 (Maintenance/ Evolution)
    • 可使用 vulnerability scanning tool 來即時監控 kernel vulnerabilities 狀態.

更多相關資訊, 可參考以下投影片.

 

發表迴響