安全測試與弱點掃描報告範本(Security Scan Report Template)

適用標準:OWASP Testing Guide v4.2、CVSS 3.1(Common Vulnerability Scoring System)、CWE
適用階段:測試驗證階段(Testing Phase)
負責角色:AppSec 工程師、資安測試人員、QA Lead


📑 章節目錄

  1. 文件資訊
  2. 測試摘要
  3. 測試範圍與方法
  4. 弱點總覽
  5. 弱點詳細報告
  6. 合規檢核結果
  7. 修復計畫
  8. 結論與建議
  9. 附錄

📝 範本


1. 文件資訊

項目內容
文件名稱[系統名稱] 安全測試報告
文件編號[專案代碼]-STR-[版本號]-[日期]
版本v[X.Y]
測試日期[YYYY-MM-DD] ~ [YYYY-MM-DD]
測試人員[AppSec 團隊 / 外部廠商]
審核者[CISO / 資安主管]
資料分級Confidential

2. 測試摘要

項目內容
測試類型[SAST / DAST / SCA / Penetration Test / 組合]
受測版本[Application version / Commit hash]
測試結果總評[✅ PASS / ⚠️ CONDITIONAL PASS / ❌ FAIL]
上線決策[可上線 / 修復後可上線 / 不可上線]

弱點統計

嚴重度數量已修復待修復接受風險
Critical[N][N][N][N]
High[N][N][N][N]
Medium[N][N][N][N]
Low[N][N][N][N]
Info[N]
Total[N][N][N][N]

3. 測試範圍與方法

3.1 測試範圍

項目內容
目標系統[系統名稱 + URL/IP]
測試範圍[In-scope modules / endpoints]
排除範圍[Out-of-scope,如第三方元件]
認證帳號[測試用帳號角色清單(不含密碼)]

3.2 測試方法

測試類型工具版本說明
SAST(靜態分析)[SonarQube / Checkmarx / Semgrep][ver]原始碼分析
DAST(動態分析)[OWASP ZAP / Burp Suite Pro][ver]執行期掃描
SCA(套件分析)[Snyk / OWASP Dependency-Check / Trivy][ver]第三方套件弱點
手動測試[Burp Suite / Custom scripts]邏輯弱點
Container Scan[Trivy / Aqua][ver]容器映像掃描

3.3 測試依據

標準/指南涵蓋項目
OWASP Top 10 (2021)A01~A10
OWASP API Security Top 10 (2023)全部
OWASP ASVS v4.0.3[Level 1 / Level 2 / Level 3]
CWE Top 25 (2023)常見弱點

4. 弱點總覽

4.1 依嚴重度分佈

嚴重度CVSS 分數範圍修復 SLA數量
Critical9.0 – 10.024 小時[N]
High7.0 – 8.97 天[N]
Medium4.0 – 6.930 天[N]
Low0.1 – 3.990 天[N]
Info0.0視需要[N]

4.2 依類型分佈

弱點類型(CWE)數量嚴重度分佈
[CWE-XXX: 弱點名稱][N][C:N / H:N / M:N / L:N]
[CWE-XXX: 弱點名稱][N][C:N / H:N / M:N / L:N]

4.3 依 OWASP Top 10 分佈

OWASP Category弱點數量最高嚴重度
A01: Broken Access Control[N][Critical/High/…]
A02: Cryptographic Failures[N]
A03: Injection[N]
A04: Insecure Design[N]
A05: Security Misconfiguration[N]
A06: Vulnerable Components[N]
A07: Auth Failures[N]
A08: Software & Data Integrity[N]
A09: Logging & Monitoring Failures[N]
A10: SSRF[N]

5. 弱點詳細報告

VULN-[NNN]: [弱點標題]

項目內容
弱點 IDVULN-[NNN]
嚴重度[Critical / High / Medium / Low]
CVSS 分數[N.N]
CVSS Vector[CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H]
CWECWE-[NNN]: [名稱]
OWASP[A01 / A02 / …]
發現工具[SAST / DAST / Manual]
受影響元件[模組/檔案/API endpoint]
狀態[Open / Fixed / Accepted / False Positive]

描述:

[詳細描述弱點的性質與成因]

影響:

[描述此弱點被利用後可能造成的危害]

重現步驟:

  1. [步驟 1]
  2. [步驟 2]
  3. [步驟 3]

證據:

[Request/Response 片段或截圖參考]

修復建議:

[具體的修復方法與安全程式碼範例]

// 修復前(不安全)
[insecure code snippet]

// 修復後(安全)
[secure code snippet]

參考資源:

  • [相關 CVE / CWE / OWASP 頁面連結]

6. 合規檢核結果

6.1 OWASP ASVS 合規

ASVS Chapter檢核項數通過未通過N/A合規率
V2: Authentication[N][N][N][N][N]%
V3: Session Management[N][N][N][N][N]%
V4: Access Control[N][N][N][N][N]%
V5: Validation[N][N][N][N][N]%
V6: Cryptography[N][N][N][N][N]%
V7: Error Handling[N][N][N][N][N]%
V8: Data Protection[N][N][N][N][N]%

7. 修復計畫

7.1 修復優先順序

#弱點 ID嚴重度修復 SLA負責人預計修復日狀態
1VULN-001Critical24 hr[姓名][日期][Open/Fixed]
2VULN-002High7 days[姓名][日期][Open/Fixed]

7.2 風險接受記錄

弱點 ID嚴重度接受理由補償控制核准人到期日
[VULN-NNN][Med][理由][補償措施][CISO][日期]

8. 結論與建議

項目內容
上線決策[✅ 可上線 / ⚠️ 條件式上線 / ❌ 不可上線]
條件[需修復 N 個 Critical/High 弱點後重測]
長期建議[改善建議摘要]
下次掃描建議[時機/範圍]

9. 附錄

9.1 工具掃描完整報告

工具報告位置
[SAST report][path/URL]
[DAST report][path/URL]
[SCA report][path/URL]

9.2 測試環境細節

[補充測試環境配置細節]


📖 使用說明

CVSS 嚴重度定義

嚴重度CVSS定義修復 SLA
Critical9.0-10.0可遠端利用、無需認證、影響核心資料24 小時
High7.0-8.9需部分條件、影響機密或完整性7 天
Medium4.0-6.9需較多條件或影響有限30 天
Low0.1-3.9影響極小或需物理接觸90 天

弱點管理流程

graph LR
    A[掃描發現] --> B[驗證確認]
    B -->|True Positive| C[分級評估]
    B -->|False Positive| D[標記 FP]
    C --> E{嚴重度}
    E -->|Critical/High| F[立即修復]
    E -->|Medium/Low| G[排入 Backlog]
    F --> H[驗證修復]
    G --> H
    H -->|Pass| I[關閉]
    H -->|Fail| F

💡 範例(以 HRMS 人力資源管理系統為例)


範例:弱點報告

VULN-001: IDOR - 員工薪資資訊未授權存取

項目內容
嚴重度High
CVSS7.5 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N)
CWECWE-639: Authorization Bypass Through User-Controlled Key
OWASPA01: Broken Access Control
受影響 APIGET /api/salary/{employeeId}
狀態Fixed

描述:
一般員工角色可透過修改 URL 中的 employeeId 參數,存取其他員工的薪資資訊,API 未驗證當前用戶是否有權限存取目標員工資料。

重現步驟:

  1. 以一般員工帳號 (EMP-001) 登入系統
  2. 正常查詢自己的薪資 GET /api/salary/EMP-001 → 200 OK
  3. 修改 URL 為 GET /api/salary/EMP-042 → 200 OK(應為 403)

修復建議:

// 修復前
@GetMapping("/api/salary/{employeeId}")
public SalaryDto getSalary(@PathVariable String employeeId) {
    return salaryService.findByEmployeeId(employeeId);
}

// 修復後 - 加入權限檢查
@GetMapping("/api/salary/{employeeId}")
@PreAuthorize("hasRole('HR') or #employeeId == authentication.principal.employeeId")
public SalaryDto getSalary(@PathVariable String employeeId) {
    return salaryService.findByEmployeeId(employeeId);
}

VULN-002: 第三方套件高風險 CVE

項目內容
嚴重度Critical
CVECVE-2024-XXXXX
受影響套件log4j-core 2.14.1
修復版本≥ 2.17.1
狀態Fixed

📌 審閱重點

  • 所有 Critical/High 弱點是否都有修復計畫或接受風險記錄?
  • False Positive 是否有驗證依據?
  • 修復建議是否具體可行(非僅描述問題)?
  • SCA 掃描是否涵蓋所有直接與間接依賴?
  • 合規結果是否滿足上線的最低門檻?