Guidant AI 資安檢視總報告 · 安全測試案例(TC)
測試主機 190 從 1.23.1 升到 1.24.1、檔案 Agent 升到 1.3.0 後,第 4 棒測出的紅逐條重跑的結果
修正前=第 4 棒在 190(1.23.1)實跑的結果;修正後=190 升 1.24.1(commit f3ac924d8,第一個由正式簽發站 189 簽章出包的版本)、檔案 Agent 升 1.3.0 後,同一套測試重跑。一列一條安全需求,只列修正前是紅(含待測)、或修正後曾是紅的,共 36 條:修正前紅 32 條(含打折 1 條),全部轉綠;另有 4 條修正前不紅,其中 1 條修正後轉綠、3 條修正後也綠;SR-02.14 修正前沒掛回部署檢查,掛回後測得紅,1.24.1 部署後轉綠。產品面紅燈歸零。客戶主機上的設定(防火牆、受檢主機帳號)屬客戶部署須知,不在量測範圍。
讀法見測試案例總表。審計報告(audit-report.html) 81 條全列、每條附情境與請求回應原文;這頁只看修正有沒有生效。審計報告由 test repo
npm run report:security產出時自動複製到此,重產後 commit BE repo 即上站。修正後的整體數字:81 條中綠 80、紅 0、人工 1、未測 0。API 情境 144 條全綠(序列跑;SR-10.3 計時那條改法調整後、SR-02.10 專案清單那條補資料後各自單獨重跑併入;1.24.1 無 API 行為變更,沿用 1.24.0 上的結果);守衛 292 條 284 綠 8 略過(8 支是刻意不掛能力點的選單,非環境問題);部署檢查 45 項 33 綠 0 紅 12 人工(190 升 1.24.1、檔案 Agent 1.3.0 後完整重跑,含 image 與出貨包掃描)。
修正前的數字從哪來:190 上留存的 1.23.1 審計報告是用不完整的結果檔產的(29 條顯示未測),不能當基準。修正前狀態取自測試 repo
security-compliance/docs/traceability.md(第 4 棒每條在 190 實跑的紀錄)與第 4 棒的部署檢查、守衛 JUnit。
| SR | 一句話 | 修正前 | 修正卡 | 修正後 |
|---|---|---|---|---|
| SR-01.5 | 安全計數不得只存易失儲存 | 紅:Redis 重啟後雙因子失敗計數歸零 | CM-2454 | 綠:守衛 6/6 |
| SR-01.7 | 機器報到比其他端點更嚴 | 紅:同一組註冊 token 可報到第二台並直接工作 | CM-2426 | 綠:第二台停在待核准、核准前心跳 403,3/3 |
| SR-02.3 | 背景工作不得用無身分連線 | 紅:AI 呼叫記錄清理排程沒宣告系統身分,靜默什麼都沒清 | CM-2428 | 綠:守衛 17/17 |
| SR-02.4 | 帶資源編號的端點先確認歸屬 | 紅:輪次讀取回 403、輪次結案與摘要報告的錯誤碼與不存在不同 | CM-2427 | 綠:11/11,非成員一律 404 且與不存在逐字相同 |
| SR-02.8 | 檔案歸屬登記,看與刪分開問 | 紅:非成員錯誤碼洩漏檔案存在;唯讀成員刪證據檔靠外鍵才擋下 | CM-2427 | 綠:5/5 |
| SR-03.1 | 對外入口只走 HTTPS | 紅:https 回應缺 HSTS | CM-2449 | 綠:部署檢查 2/3(1 項人工:要移走憑證重啟前門) |
| SR-03.4 | 對內 SSH 驗主機指紋 | 紅:agent SSH 兩處 AutoAddPolicy | CM-2453 | 綠:守衛 3/3 |
| SR-03.6 | mTLS 要嘛真驗、要嘛拿掉 | 紅:控制面宣稱 mTLS 但不驗 | CM-2448、CM-2462 | 綠:部署檢查 2/3(1 項人工:要自簽各種票)。檔案 Agent 1.2.0 裝上後,安裝目錄手冊明寫「控制面只靠通行證」 |
| SR-04.3 | 列表條件沒填就拒絕 | 紅:操作日誌空條件回整張表 39495 筆 | CM-2454 | 綠:2/2 |
| SR-04.4 | 交回瀏覽器的檔案由伺服器決定格式 | 紅:下載端點缺 nosniff | CM-2451 | 綠:2/2 |
| SR-04.8 | 交給外部程式的內容先看內容 | 紅:含 <% 的規則包上傳回 200 |
CM-2452 | 綠:上傳即拒,1/1 |
| SR-05.2 | 設定回應遮密鑰、錯誤只回代碼 | 紅:名單外欄位明文回出;匯入回 psycopg 原文;寄信失敗回 500 | CM-2450、CM-2451、CM-2458 | 綠:6/6 |
| SR-05.4 | 第三方頻道訊息不帶可冒用內容 | 紅:守衛 0/4 | CM-2452 | 綠:守衛 4/4 |
| SR-06.6 | 各行程的 Redis 帳號權限最小 | 紅:三服務共用一個全權帳號,刪得了節流 key | CM-2453 | 綠:部署檢查 6/6 |
| SR-06.8 | 診斷包與備份搜不到祕密 | 紅:診斷包命中祕密 | CM-2450 | 綠:部署檢查 2/2,診斷包 0 命中 |
| SR-07.7 | agent 暫存有容量上限 | 未判(部署檢查略過) | CM-2453、CM-2462 | 綠:部署檢查 1/2,bucket 上限 51200MB(1 項人工:要寫滿或壓磁碟看告警) |
| SR-07.1 | 請求大小與免登入端點限速 | 紅:超大請求到得了後端、webhook 連打不限速 | CM-2449 | 綠:部署檢查 2/3(1 項人工) |
| SR-08.1 | 日誌出口遮罩 | 紅:守衛 5/6 | CM-2450 | 綠:守衛 6/6 |
| SR-08.2 | 呼叫者填目標的動作要稽核 | 紅:發動掃描與改目標都沒有稽核事件 | CM-2452 | 綠:3/3 |
| SR-08.6 | 抽取失敗的規則包不得派工 | 紅:抽取失敗的版本仍在下拉、可派出 | CM-2452、CM-2455 | 綠:3/3 |
| SR-09.2 | agent 8443 只對雲端開 | 紅:非雲端連得上、文件沒限來源 | CM-2453 | 綠:部署檢查 2/3(文件限來源、非 demo 模式綠;1 項人工)。防火牆項屬客戶部署須知,已移出量測範圍;產品面三項皆綠 |
| SR-09.7 | 外部位址掃描要額外確認 | 紅:含 8.8.8.8 不帶確認旗標照樣派工 | CM-2452 | 綠:1/1 |
| SR-10.1 | Drive 不收呼叫者給的檔案編號、scope 收窄 | 紅:守衛 1/2(scope 是完整 drive) | CM-2454 | 綠:API 4/4、守衛 1/1 |
| SR-06.5 | AI 服務位址永遠是原廠的 | 待測:租戶寫得進 base_url |
CM-2447 | 綠:租戶寫 base_url 回 400,2/2 |
| SR-04.7 | 使用者的字進 AI 前與指令分開 | 綠 3/3(修正後一度因替身前置 400 紅) | CM-2463 | 綠:3/3。AI 替身改由平台管理員改平台層位址指過去、測完還原 |
| SR-07.2 | 外部 AI 呼叫四道上限 | 綠 4/4(同上) | CM-2463 | 綠:4/4 |
| SR-10.5 | 外部 AI 輸入與出口守門 | 紅:AI 回私鑰原樣顯示 | CM-2456、CM-2463 | 綠:3/3,出口守門把替身回的私鑰攔下 |
| SR-06.1 | 整合憑證加密落庫 | 紅:SMTP/物件儲存密鑰是可讀字串 | CM-2450、CM-2463 | 綠:3/3。只改寄件者名稱那條改驗「密碼仍是有效密文」+實際登入(加密後每次密文不同,不再比指紋) |
| SR-07.5 | 即時連線上限 | 紅 3 條 | CM-2449、CM-2463 | 綠:4/4。速率那條改等伺服器主動斷線,不在固定時刻讀連線旗標 |
| SR-10.3 | Drive webhook 固定時間比對 | 綠 4/4(修正後一度因前門限速 429 紅) | CM-2463 | 綠:4/4。計時情境改分批送在前門限速以內,每輪先暖機、各組順序輪替 |
| SR-05.1 | 出口依目的地跳脫 | 紅:通知信沒跳脫 | CM-2451、CM-2463 | 綠:4/4(守衛 8/8)。syslog 步驟限時拉到 90 秒 |
| SR-03.3 | 可選加密的整合預設加密 | 紅:日誌轉送預設 udp 明文 | CM-2453、CM-2463 | 綠:1/1。190 上殘留的 udp 轉送設定(FR-125 錄影時設的)改回出廠值後,讀到的是出廠預設 tcp+TLS |
| SR-05.3 | 前門四個安全標頭、CSP 嚴格 | 紅:缺 CSP | CM-2449、CM-2464 | 綠:部署檢查 3/4(1 項人工:iframe 與 .html 預覽要瀏覽器)。CSP 已是正式擋、不含 unsafe-inline 與 * 來源 |
| SR-02.10 | AI 代查的查詢都申報權限 | 紅:專案清單小點打折(測試資料不足) | CM-2452、CM-2470 | 綠:API 2/2(守衛 3/3)。測試前置自己在子公司建兩個專案(此員工參與一個、不參與一個),AI 儀表板只回參與的那個,沒參與的與子公司既有專案都不出現 |
| SR-09.5 | 容器非 root、能力收窄 | 紅 | CM-2466 | 綠:部署檢查 3/4(1 項人工:要造一顆改過的 image 去啟動)。agent 與沙箱以 uid 1000 執行、cap_drop ALL、no-new-privileges、有記憶體與 pids 上限 |
| SR-02.14 | 出貨版只認正式簽發站公鑰 | 綠(API 1/1;部署檢查有跑但沒掛回 SR) | CM-2454、CM-2465、CM-2468 | 綠:API 1/1、部署檢查 1/1。1.24.1 的 BE image 內建公鑰只有正式簽發站一把(f3b562a6d9755527);授權檔與 BE/檔案 Agent 的完整性簽章都由 189 簽 | CM-2441(雙因子第二關不檢查第一關)是 SR-01.6 測案順手測出的洞,SR-01.6 本身修正前後都綠,不列入;修正後 /otp-verify 不過第一關已不能猜碼,含在 SR-01.3 的 2/2 裡。
無。
| 類別 | 條數 | SR |
|---|---|---|
| 轉綠(修正前紅) | 32 | 01.5、01.7、02.3、02.4、02.8、02.10、03.1、03.3、03.4、03.6、04.3、04.4、04.8、05.1、05.2、05.3、05.4、06.1、06.5、06.6、06.8、07.1、07.5、07.7、08.1、08.2、08.6、09.2、09.5、09.7、10.1、10.5 |
| 修正前不紅、修正後綠 | 3 | 04.7、07.2、10.3(中間一度被新守門擋到,測試改走正規前置後回綠) |
| 修正前沒看到、修正後一度測得紅、已轉綠 | 1 | 02.14(部署檢查落點掛回後才看得到;1.24.1 image 部署後轉綠) |
| 新紅:修正前沒看到、修正後仍紅 | 0 | — |
| 改判人工 | 0 | — |
產品面沒有仍紅的需求。唯一非綠的是 1 條要人工驗證的 04.12(推播訊息送進瀏覽器前驗格式)。
修正前後整體:綠 25→80、紅 17→0、人工 10→1、未測 29→0(修正前的未測多半是舊報告的結果檔不完整,不代表當時沒測;本表的「修正前」以第 4 棒實跑紀錄為準)。
build_sr_matrix.py 目前只讀連線頁;另外它重產會把 h1/subtitle 改回單行舊格式,要一起改。全套對 190 只能序列跑(前門登入限速每 IP 每分鐘 60、突發 30),parallel 已改 1;AI 替身情境測試期間會把 190 全部租戶的 Anthropic 位址指到替身,跑完還原。