本卡為母案,統整目標、範圍裁示、設計前提、決策定案(D1–D11)、1 橫向前置項 + 5 子需求索引。各子需求(FR-058.X / .0 / .1 / .2 / .3 / .4)有獨立卡片,關聯回本卡。FR-056 檢測工具整合平台 → FR-057 OpenSCAP SSH connector 續作。
設計文件:docs/features/FR-058-2607-detection-tools-expansion/design.md(BE repo)
討論稿(含流程圖與官方資源盤點):docs/features/FR-058-2607-detection-tools-expansion/discussion.html(BE repo)+ Artifact 線上版:https://claude.ai/code/artifact/73631a39-e710-42c0-a0d4-34a1fe70b122
前作:FR-056 檢測工具整合平台 — FR-056 檢測工具整合平台(母案)|FR-057 OpenSCAP SSH connector(母案 CM-938)— FR-057 OpenSCAP 掃描工具接入(SSH 連線型態)(母案)
FR-056 建立的檢測工具整合平台是 tool-agnostic 的:後端對任何具體工具零知識(不存在 if tool.code == "openvas" 這類分支),前端純 schema 驅動渲染,加一個工具原則上只要一條 SQL seed。FR-057 又補齊了 SSH 連線型態、setup_guide 說明欄位、多檔證據回收(result_ref.upload_uids)與兩條「靜默假成功」防護通道(host_failures / content_mismatch_hosts)。
本案站在這兩層地基上,一次接入四個工具,並補上平台唯一的結構性缺口——任務層敏感參數。
| 順位 | 工具 | 類型 | 排這個位置的理由 |
|---|---|---|---|
| 1 | ZAP | DAST 網頁動態掃描 | 有可參考的既有實作(前同事的 auto-pentest 專案),API 呼叫序列與踩過的坑都已成文,摸索成本最低 |
| 2 | InSpec / CINC Auditor | 組態檢測(Windows / Linux) | 先做這個,GCB 的引擎就是現成的——讓 GCB 只剩驗證鏈路一件事 |
| 3 | GCB | 政府組態基準(TWGCB) | 引擎複用第 2 棒;本案只做引擎與一個 Windows 最小 Demo profile,content 產製與後台更新機制不納入(D7) |
| 4 | Nmap | 網路埠掃描 | 技術上最單純(CLI + XML 解析),主要工作是排除平台的零憑證阻礙 |
| 形態 | 已上線 | 本案新增 |
|---|---|---|
| ① 連遠端服務 API | OpenVAS | ZAP(FR-058.1) |
| ② 遠端登入目標主機 | OpenSCAP(SSH / Linux) | InSpec / CINC(SSH + WinRM,FR-058.2)、GCB(複用 .2 引擎,FR-058.3) |
| ③ agent 本機 CLI | 尚無(connection_type='CLI' 已定義但未被使用) |
Nmap(FR-058.4,此型態首個實際使用者) |
稽核員發佈任務:填 target_url、選「登入後主動」、填測試帳密
→ BE 依 param_schema 對 secret:true 欄位 Fernet 加密後寫入 tool_params(敏感欄位為密文)
→ 按「開始執行任務」:挑 agent、解密租戶工具憑證、建 agent_tasks(pending)、建執行紀錄
→ agent 心跳(mTLS,預設 300 秒)領回 pending_tasks(含當場解密的明文參數,僅傳輸中存在)
→ agent 起 daemon thread:ack → get_connector → ZAP 設定 context/登入認證/logged_in_indicator
→ ajaxSpider 爬取 → ascan 主動掃描(輪詢,支援 cancel_event / timeout)
→ core.htmlreport / core.jsonreport 雙格式(HTML 上傳當證據 / JSON 僅記憶體解析 summary)
→ 報告 bytes 走既有 blob 通道上傳 → 回報 result
→ 雲端取回存 job_evidences(source=DETECTION_TOOL)→ 通知負責人 → 依完成模式收尾
→ FE 執行紀錄顯示參數時,敏感欄位已剝除
敏感參數的生命週期:資料庫為密文、僅在派工傳輸與 agent 執行期間為明文、agent 用完即丟不落地、FE 一律剝除。
<aside> 🚧
① SonarQube 本期不做,日後另議。 原 D10 隨 SonarQube 一併移出本案範圍,決策編號保留不重排(避免與先前溝通過的編號錯位)。detection_tools 的 id=3 SonarQube 佔位列本案不處理,維持 status='coming_soon'。
② macOS 15(TWGCB-01-015)不納入本案。 基準 2026/6 才發布、版本尚新,官方部署資源頁無任何機器可讀檔案,且現有 connector 未曾處理 macOS。已由 D7 明確排除。
</aside>
現有設計把憑證與參數分成兩處放,而只有憑證那一條有加密: