本日更新將專案中的首頁更新成 API 列表,可透過 github 更新。
程式碼:
https://github.com/fei3363/ithelp_web_security_2024/commit/0e3aee1505f643cb085aa4d01403830e9fb4ee76
漏洞網址:http://nodelab.feifei.tw/
以下將介紹安全軟體開發生命週期,本篇著重於"需求階段"且參考專案管理相關文章,相關連結可以看文章最下方。
安全軟體開發生命週期(SSDLC) 將安全原則和實踐整合進傳統的 SDLC 中,目標是確保從需求階段開始就將安全納入考量,並貫穿整個開發週期。
傳統軟體開發生命週期(SDLC) 是用於描述資訊系統從需求收集到最後上線部署維運的整個過程。SDLC 適用於軟體、硬體或軟硬體結合的系統。
根據資安管理法有提到的附表十─資通系統防護基準修正規定資安管理法─附表十資通系統防護基準修正規定
可以分成幾個階段:
有些規範可能會把部署跟維護分開。
透過在軟體生命週期的每個階段實施 OWASP SAMM 模型中的安全實務,組織可以建立一個更安全、更可靠的軟體開發流程,並降低安全風險。
名詞 | SDLC | SSDLC |
---|---|---|
定義 | 軟體開發生命週期,是一個用於規劃、建立、測試和部署軟體系統的框架。 | 安全軟體開發生命週期,是在 SDLC 的每個階段都整合了安全考量的軟體開發流程。 |
目標 | 以有效率的方式交付高品質的軟體產品。 | 開發兼顧功能性和安全性需求的軟體產品。 |
安全 | 可能將安全視為一個獨立的階段或測試行為,在開發後期才進行。 | 將安全融入到每個階段,從一開始就考慮安全問題。 |
測試 | 主要關注功能測試,確保軟體按預期運作。 | 包含安全測試,例如威脅建模、程式碼審查和滲透測試,以識別和減輕安全風險。 |
文件 | 可能包含與安全相關的政策和標準,但可能不夠全面。 | 強調安全文件的建立和維護,例如安全需求、設計文件和測試報告。 |
團隊 | 開發團隊通常負責安全相關的任務。 | 可能需要資安專家參與,例如安全架構師和滲透測試人員。 |
成本 | 在開發後期發現和修復安全漏洞的成本可能很高。 | 透過在早期階段解決安全問題,可以降低整體開發成本。 |
重點說明:
編號 | 姓名 | 職稱 | 單位 | 內部/外部 | 專案角色 | 責任 | 權限級別 | 主要關注點 | 溝通頻率 | 聯絡方式 | 安全需求 | 期望 | 影響力 | 態度 | 備註 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
S001 | 王大明 | 專案經理 | 資訊部 | 內部 | 專案管理者 | 整體專案管理、資源分配、進度追蹤 | 高 | 專案進度、風險管理、預算控制 | 每日 | wang.dm@example.com | 確保專案符合資安法規 | 如期完成專案,符合預算 | 高 | 支持 | 每週五下午進行專案進度會議 |
S002 | 李小芬 | 資安架構師 | 資安部 | 內部 | 安全顧問 | 制定安全策略、審查安全設計 | 高 | 系統安全性、合規性 | 每週 | lee.sf@example.com | 實施最新的 OWASP Top 10 防護措施 | 建立堅固的安全架構 | 高 | 支持 | 需要定期進行安全培訓 |
S003 | 張明華 | 技術主管 | 研發部 | 內部 | 開發團隊負責人 | 技術決策、程式碼審查、任務分配 | 中高 | 程式碼品質、技術實現、開發效率 | 每日 | chang.mh@example.com | 確保程式碼中不包含敏感資訊 | 提高開發效率和程式碼品質 | 中 | 支持 | 負責每週的程式碼審查會議 |
S004 | 陳小玉 | 資料庫管理師 | 資料部 | 內部 | 資料庫專家 | 資料庫設計、最佳化和安全 | 中高 | 資料完整性、效能、資料安全 | 每週 | chen.sy@example.com | 實施資料加密和存取控制 | 確保資料庫高效能和安全性 | 中 | 中立 | 需要定期進行資料庫安全稽核 |
S005 | 林大方 | QA 經理 | 品保部 | 內部 | 測試負責人 | 功能測試、安全測試 | 中 | 軟體品質、漏洞發現 | 每日 | lin.df@example.com | 執行全面的安全測試計畫 | 確保軟體無重大漏洞 | 中 | 支持 | 每兩週提交一次測試報告 |
S006 | 黃小琳 | DevOps 工程師 | 維運部 | 內部 | 維運專家 | 配置開發環境、自動化部署 | 中高 | CI/CD、環境安全、監控 | 每週 | huang.sl@example.com | 實施安全的 CI/CD 流程 | 建立穩定且安全的部署流程 | 中 | 支持 | 負責維護部署腳本和監控系統 |
S007 | 吳大維 | 法務經理 | 法務部 | 內部 | 法律顧問 | 確保合規性、審查法律風險 | 中 | 資料保護法規、智慧財產權 | 月度 | wu.dw@example.com | 確保系統符合個資法要求 | 降低法律風險 | 中 | 中立 | 需要在重要決策前諮詢 |
S008 | 趙美美 | 客戶代表 | 客戶公司 | 外部 | 使用者代表 | 提供需求、回饋 | 低 | 功能需求、使用者體驗 | 雙週 | chao.mm@client.com | 保護客戶資料隱私 | 系統易用性高,回應速度快 | 低 | 支持 | 每月進行一次需求確認會議 |
S009 | 謝大業 | 執行長 | 管理主管 | 內部 | 贊助者 | 戰略決策、資源審批 | 最高 | ROI、戰略對齊、風險管理 | 月度 | hsieh.dy@example.com | 確保整體系統安全性 | 提升公司競爭力,符合長期策略 | 高 | 支持 | 需要每季度彙報專案進度 |
找方法:選擇適合專案開發方法,確保方法能有效整合安全考量
基於資安管理法有提到的附表十資通系統防護基準修正規定資安管理法─附表十資通系統防護基準修正規定,整理以下的問題清單:
可參考 【閒聊】嘗試用客戶需求表、需求追溯表來取代系統需求規格_SRS撰寫
這篇文章有提到幾個方法
參考這篇文章整合資安相關需求的範例如下:
需求編號 | 需求描述 | 來源 |
---|---|---|
RM-01 | 實現安全的使用者認證系統 | 客戶會議紀錄 |
RM-02 | 加密敏感資料傳輸 | 內部安全評估 |
RM-03 | 實施跨網站指令碼(XSS)防護 | 客戶安全要求 |
RM-04 | 防止 SQL injection 攻擊 | 內部安全評估 |
RM-05 | 實現安全的連線管理 | 客戶會議紀錄 |
需求編號 | 系統需求描述 | 關聯客戶需求 |
---|---|---|
RM-01-01 | 實現多因素驗證 | RM-01 |
RM-01-02 | 密碼原則:至少12字元,包含大小寫字母、數字和特殊字元 | RM-01 |
RM-02-01 | 使用HTTPS協定加密所有資料傳輸 | RM-02 |
RM-03-01 | 實施內容安全政策(CSP) | RM-03 |
RM-03-02 | 對使用者輸入進行嚴格驗證和轉義 | RM-03 |
RM-04-01 | 使用參數化查詢防止 SQL injection 攻擊 | RM-04 |
RM-05-01 | 實現安全的連線ID生成和管理 | RM-05 |
RM-05-02 | 實現連線逾時機制 | RM-05 |
需求編號 | 模組/功能描述 | 技術實現 |
---|---|---|
RM-01-01 | 多因素驗證模組 | 使用Passport.js實現多種驗證策略 |
RM-01-02 | 密碼驗證模組 | 使用zxcvbn函式庫進行密碼強度檢查 |
RM-02-01 | HTTPS設定 | 使用Let's Encrypt取得SSL憑證,設定Express.js強制HTTPS |
RM-03-01 | CSP中介軟體 | 使用helmet函式庫設定內容安全政策 |
RM-03-02 | 輸入驗證中介軟體 | 使用express-validator進行輸入驗證 |
RM-04-01 | 資料庫查詢層 | 使用Sequelize ORM實現參數化查詢 |
RM-05-01 | 連線管理模組 | 使用express-session配合Redis儲存連線資料 |
RM-05-02 | 連線逾時處理 | 在express-session中設定rolling: true和maxAge選項 |
需求編號 | 估算工時(小時) | 備註 |
---|---|---|
RM-01-01 | 16 | 包括設計和實現多因素驗證流程 |
RM-01-02 | 8 | 實現和測試密碼原則 |
RM-02-01 | 4 | 設定HTTPS和測試 |
RM-03-01 | 4 | 設定和測試CSP |
RM-03-02 | 12 | 實現全面的輸入驗證系統 |
RM-04-01 | 8 | 重構資料庫存取層,實現參數化查詢 |
RM-05-01 | 12 | 實現安全的連線管理系統 |
RM-05-02 | 4 | 設定和測試連線逾時機制 |
總估算工時:68小時
客戶需求 | 系統需求 | 技術實現 | 估算工時 |
---|---|---|---|
RM-01 | RM-01-01, RM-01-02 | Passport.js, zxcvbn | 24 |
RM-02 | RM-02-01 | Let's Encrypt, Express.js HTTPS | 4 |
RM-03 | RM-03-01, RM-03-02 | helmet, express-validator | 16 |
RM-04 | RM-04-01 | Sequelize ORM | 8 |
RM-05 | RM-05-01, RM-05-02 | express-session, Redis | 16 |
項目 | 安全基準 | 變更請求 | 變更理由 | 安全影響評估 | 風險評估 | 緩解措施 | 核准狀態 | 核准人 | 實施日期 | 回復計畫 | 後續審查日期 |
---|---|---|---|---|---|---|---|---|---|---|---|
密碼政策 | 最少8字元,包含大小寫和數字 | 增加到12字元,必須包含特殊字元 | 提高密碼強度,應對新的安全威脅 | 提高帳號安全性,可能增加使用者不便 | 中等:使用者可能選擇更容易記住但不安全的密碼 | 提供密碼管理工具,進行使用者教育 | 已核准 | 資安長 | 2024-03-15 | 如出現大量登入失敗,回復到原政策 | 2024-04-15 |
資料加密 | AES-128加密所有敏感資料 | 升級到AES-256 | 符合新產業標準 | 加強資料保護,可能影響系統效能 | 低:升級過程中可能出現資料不一致 | 進行全面測試,準備資料移轉計畫 | 待審核 | - | - | 保留舊加密方法30天,以便快速回復 | - |
存取控制 | 以角色為基礎的存取控制(RBAC) | 實施細粒度的存取控制(ABAC) | 提供更靈活和精確的權限管理 | 加強存取控制,但增加管理複雜性 | 高:可能導致權限配置錯誤 | 進行詳細的權限對應和測試 | 已拒絕 | 資安長 | - | - | - |
網路防火牆 | 僅開放必要連接埠 | 增加深度封包檢測(DPI)功能 | 加強對複雜攻擊的防禦能力 | 提高網路安全性,可能影響網路效能 | 中等:可能誤判合法流量 | 進行全面的基準測試和最佳化 | 已核准 | 資訊長 | 2024-04-01 | 保留舊設定備份,如效能下降嚴重可快速還原 | 2024-05-01 |
日誌記錄 | 記錄所有登入嘗試 | 增加API呼叫和資料存取日誌 | 提高系統活動的可見性和可追蹤性 | 加強稽核能力,但增加儲存和處理需求 | 低:可能記錄敏感資訊 | 實施日誌加密和存取控制 | 待審核 | - | - | 分階段實施,先在測試環境驗證 | - |
SSDLC 在幫助開發團隊從專案初期就將資訊安全納入考量,提高軟體品質並降低安全風險。
需求階段可以利用以下步驟開始資安相關的考量:
在SSDLC中,「找對人」這個步驟主要目的是什麼?
A. 招募新的開發人員
B. 識別關鍵利害關係人
C. 尋找資安顧問公司
D. 組織團隊建立活動
答案: B
解析: 「找對人」步驟的主要目的是識別關鍵利害關係人,並了解他們的資訊安全需求。這有助於確保在軟體開發過程中考慮到所有相關方的安全考量。
下列哪一項不是建立開發團隊時應考慮的要素?
A. 為每位成員分配明確的職責
B. 指派一位資安專家到團隊中
C. 確保所有成員都是全端工程師
D. 建立一個多元化的團隊
答案: C
解析: 建立開發團隊時,重點在於組建多元化的團隊,明確分配職責,並包含資安專家。並非所有成員都需要是全端工程師,相反,不同專長的成員可以互補,形成更強大的團隊。
在選擇開發方法時,下列哪一項不是SSDLC考慮的因素?
A. 專案規模
B. 時間限制
C. 安全需求
D. 開發人員的星座
答案: D
解析: 選擇適合的開發方法時,應考慮專案規模、時間限制、預算和安全需求等因素。開發人員的星座並非相關因素,不應影響開發方法的選擇。
在SSDLC的「問問題」步驟中,下列哪一個不是建議詢問的安全相關問題?
A. 哪些資料需要保護?
B. 有哪些潛在的威脅?
C. 如何減輕這些威脅?
D. 競爭對手使用什麼程式語言?
答案: D
解析: 在需求訪談階段,應該詢問與資訊安全直接相關的問題,如需要保護的資料、潛在威脅及其緩解方法。競爭對手使用的程式語言並非安全相關問題,不屬於此階段應詢問的範圍。
在SSDLC的變更管理流程中,下列哪一項不是必要的考量?
A. 評估變更對軟體安全性的潛在影響
B. 在實施變更前審查和更新安全需求
C. 確保所有變更都由最高管理層親自批准
D. 建立資安基準(baseline)
答案: C
解析: 變更管理流程中,需要評估變更對安全性的影響,審查安全需求,並建立資安基準。然而,並非所有變更都需要最高管理層親自批准,這可能會導致流程效率低下。應該建立適當的授權機制,根據變更的影響程度決定審批層級。
專案範疇管理-蒐集需求
資安管理法─附表十資通系統防護基準修正規定
【閒聊】嘗試用客戶需求表、需求追溯表來取代系統需求規格_SRS撰寫
專案整合管理-實施整合變更控制