FR-135 CRA 合規框架 · 第〇步實測 · 2026-10-11

第〇步「掛不上去的清單」

拿自家 FR-126/FR-134 材料當測資,在 DEV 走一遍 CRA 31 條,記下哪裡掛不上、哪裡畫面怪

這是測資,不是宣稱 Guidant AI 符合 CRA。目的是在系統裡實際走一遍,找出第二期該補的欄位與功能。末段總結依出現次數排序。

§1

測試環境與做法

  • 環境:只動 DEV(本機 guidant_ai_dev),帳號 blsadmin(租戶 Billows Tech)。
  • 框架:seed 在 jedi-oscal-v2 套件 jedi_oscal_v2/migrations/002-cra-2024-catalog-seed.sql(statement 原文)+ 003-cra-2024-catalog-guidance.sql(建議證據),框架代號 CRA_2024、版本 2024/2847、3 群 31 條。
  • 資源庫:「CRA 公版」,Profile 納入全部 31 條,SSP 範本的受評標的填假產品「示範產品(假)」,已發布。
  • 專案:「CRA 第〇步測試(Guidant AI 自評)」,流程範本選「自我評估稽核」。
  • 證據:上傳 4 份到專案程序書池,依控制項對應掛上:
代號 檔案 來源
MX FR126-SR-matrix.html FR-126 安全需求符合性矩陣(81 條 SR,看程式初步核實)
AR FR126-test-audit-report.html FR-126 資安測試審計報告(測試案例實跑)
SB sbom-cyclonedx-1.6.json FR-134 SBOM(DEV 既有掃描,掃的是 primevue 源碼,不是 Guidant AI 本體)
VR source-scan-report.pdf FR-134 弱點掃描報告(同一次掃描,1576 元件/120 弱點)
  • 操作方式:資源庫、專案、掛證據都打和前端相同的 API,順序與欄位照前端程式碼;畫面觀察是讀前端元件得出的,沒有用瀏覽器實際點過。凡寫「畫面上」的地方都是讀碼推論,需人工在瀏覽器複核。
§2

一、逐條結果

原因分類:A 沒有對應材料 / B 畫面沒地方放 / C 一條包多件事,證據混在一起 / D 證據粒度太粗(只能掛整份檔,指不到檔內哪一段)/ E 其他。

Annex I Part I(14 條)

控制項 掛了什麼 掛不上/不完整的原因 畫面怪的地方
CRA.I.1 MX、AR D:只能掛整份矩陣,無法指向「威脅建模→SR」那一段;C:風險評估、安全開發流程、適用性判定三件事混在一條 —
CRA.I.2.a VR、SB、AR E:SBOM 是範例源碼,不是自家產品;「發版當下未修漏洞逐筆判斷不可利用」沒有材料 —
CRA.I.2.b MX(SR-03.3、06.6、09.2) A:「可重設回原始狀態」沒有材料;C:預設安全設定與可重設是兩件事 —
CRA.I.2.c 無 A:產品沒有自動安全更新、預設開啟、可延後的機制,也沒有測試 —
CRA.I.2.d MX、AR(SR-01、SR-02) C:存取控制與「回報可能的未授權存取」是兩件事,後者沒有告警材料 —
CRA.I.2.e MX(SR-03、06.1/06.4/06.8) D:SR 編號只能寫在說明欄,檔案本身掛整份 —
CRA.I.2.f MX(SR-09.3、09.4、04.10、08.6) A:FR-064 竄改偵測沒有可掛的報告檔;「回報資料損毀」沒有材料 —
CRA.I.2.g MX(SR-05.4、05.5) A:只涵蓋資料外送,產品本身處理範圍的最小化沒有材料 —
CRA.I.2.h MX(SR-07.1~07.9) C:抗 DoS 與「事件後維持基本功能」是兩件事,後者沒有材料 —
CRA.I.2.i MX(SR-07.8、09.7) —(本條借來驗「標不適用」,見第三節) —
CRA.I.2.j MX(SR-03.5、09.2、04.1) D —
CRA.I.2.k MX(SR-09.5、04.8、04.11) D —
CRA.I.2.l MX(SR-08.1~08.6) A:「使用者可選擇關閉紀錄」這半句沒有材料;C —
CRA.I.2.m 無 A:使用者永久刪除全部資料、安全轉移,沒有對應 SR 也沒有測試 —

Annex I Part II(8 條)

控制項 掛了什麼 掛不上/不完整的原因 畫面怪的地方
CRA.II.1 SB、VR E:同 I.2.a,SBOM 不是自家產品(FR-127 出貨 SBOM 在 DEV 沒有可下載的產物) 下載的檔名是「Evidence upload_SBOM-…」,掃描綁的任務名直接變成檔名開頭
CRA.II.2 VR A:報告能證明「識別」,「無延遲修補、安全更新與功能更新分開發布」沒有材料;C —
CRA.II.3 AR、VR E:「定期」需要多次執行紀錄,單份報告證明不了頻率 —
CRA.II.4 無 A:沒有公開揭露已修漏洞的頁面或公告 —
CRA.II.5 無 A:沒有 CVD 政策文件 —
CRA.II.6 無 A:沒有對外漏洞通報聯絡窗口 —
CRA.II.7 無 A:安裝版升級(install.sh --upgrade)有說明,但沒有「安全發送」的驗證材料(簽章、完整性檢查)可掛 —
CRA.II.8 無 A:沒有安全通告(advisory)範本或發布紀錄 —

Annex II(9 條)

控制項 掛了什麼 掛不上/不完整的原因 畫面怪的地方
CRA.A2.1 無 A+B:證據是「隨產品附上的資訊本身」,系統沒有「填一段資訊、指出它在產品哪裡」的欄位,只能上傳截圖 —
CRA.A2.2 無 A+B:同上;依賴 II.5、II.6 先有 —
CRA.A2.3 無 B:受評標的的「系統識別碼」欄位可以放,但那是 SSP 範圍欄位,不會跟這條控制項連起來 —
CRA.A2.4 無 A+B —
CRA.A2.5 無 A:要從 I.1 風險評估產出,現在沒有 —
CRA.A2.6 無 —(借來驗「標不適用」;自評不出具 EU 符合性聲明) —
CRA.A2.7 無 A+B:支援期結束日是一個日期,系統沒有地方存,只能寫在說明文字裡 —
CRA.A2.8 無 C:一條包 (a)~(f) 六件事,只能掛整份使用手冊 —
CRA.A2.9 無 —(借來驗「標不適用」;選擇性條款) —
§3

二、跨條目的系統問題

規劃頁看不到條文與建議證據

  • 規劃頁組控制項樹時,控制項的說明寫死成空字串(前端 ProjectPlanningView.vue 組樹那段 description: ''),後端 /ssp/<uid>/control-tree 也不回 statement 與 guidance。
  • 結果:顧問在規劃頁只看得到中文標題(例如「資料最小化」),看不到法條原文,也看不到建議證據。原文和建議證據只在「合規框架管理」的控制樹裡看得到。
  • CMMC 靠評估目標(AO)的文字補上「要查什麼」,CRA 第一期不建 AO,這個缺口就直接露出來。

無評估目標時,準備期一個工作都不會開

  • 建專案回 job_count: 0,BE log:generate_prep_jobs ... jobs=0 skipped=31 cloned_templates=0。
  • 原因:準備期收證據工作的流程範本有兩個來源——AO 上的流程範本(建資源庫時只替 AO 建),或資源庫的 template_uid(退路)。CRA 沒有 AO;而新建資源庫的 API 不寫 template_uid,DEV 全部 14 個資源庫的 template_uid 都是空的。所以「無 AO 時每條控制項開一筆工作」這條退路,在 DEV 從來沒有被走過。
  • 啟動稽核的前置條件「準備期工作完成」目前一律放行,所以流程沒有卡住,但準備期等於空轉,沒有任何工作可以派給客戶收證據。

證據只能掛整份檔

  • 控制項的程序書對應以「一份檔」為單位,不能指向檔內某一節或某幾條 SR。FR-126 一份矩陣要掛 12 條控制項,每條實際依據的 SR 只能另外寫進說明欄。
  • 控制項詳情 API 的 reference_documents 回空陣列,但程序書對應(document-mappings)有資料——同一件事有兩套掛法,規劃頁讀的是後者。

部分更新會把實作狀態清空

  • 只送「實作說明」更新控制項,回來的 implementation_status 從 unknown 變成空。原因是請求格式的每個欄位預設都是空值,服務端用「有沒有這個鍵」判斷要不要寫,空值就被當成「要清空」。前端每次都送全部欄位所以沒遇到,未來的匯入器或批次 API 會踩到。本次已手動還原 17 條。

資源庫與框架的其他小問題

  • 新建資源庫的 API 回應寫 publish_status: draft,但同一筆在列表是 published(enable=1)。
  • 用一般租戶管理員建的「CRA 公版」是租戶庫(scope 空),不是系統公版;要成為給所有客戶用的公版,發布要 platform-admin,這次沒做。
  • 程序書池上傳後 file_size 回空。
  • 前端新增框架時代號寫死 CMMC_2;CRA 只能靠 seed 進來,畫面上無法新建非 CMMC 框架。
  • 框架管理頁的控制項清單排序是先序號、再群組,三群交錯顯示(I.1、II.1、A2.1、I.2.a、II.2…),不是依群組排。
  • guidance 在框架 catalog 上,但資源庫與專案是「建立當下整份複製」。本次資源庫與專案在 guidance 灌入前就建好,所以都沒有建議證據;要讓「CRA 公版」有 guidance,得重建資源庫或另補。
§4

三、「標不適用」是否排除稽核範圍(第 3 棒修完後實測)

  • 第 3 棒(CM-2678,commit 3ca6884b7)修完後,BE 已自動重載;標不適用時 applicability 確實同步寫成 not-applicable。
  • 標了 3 條不適用:CRA.I.2.i、CRA.A2.6、CRA.A2.9。
  • 推進到「稽核計畫填寫」:系統提醒「尚未指派稽核員」(軟提醒,畫面確認後可繼續),確認後推進成功。
  • 稽核計畫的查核控制項 28 條,3 條不適用都被排除。修正有效。
  • 準備期工作是否仍顯示:本專案準備期本來就 0 個工作(見第二節),無從驗證「不適用的控制項準備期工作是否仍顯示」,要等準備期能開出工作後再測。
  • 專案目前停在「稽核計畫填寫」階段,沒有退回規劃。
§5

四、總結:第二期要補的(依出現次數排序)

排名 要補的東西 出現次數 涉及條目
1 規劃頁顯示條文原文與建議證據 31 全部
2 無 AO 時準備期也要開得出工作(資源庫要有收證據流程範本,或建資源庫時替控制項層建一份) 31 全部
3 流程與文件類證據的產生工具(CVD 政策、通報窗口、安全通告、公開揭露頁、更新與支援期聲明的範本)——產品本身沒有材料,系統也沒有幫客戶產出的地方 13 I.2.c、I.2.m、II.2、II.4~II.8、A2.1、A2.2、A2.4、A2.5、A2.7
4 證據指向檔內某段(掛整份檔+指定章節/SR 編號,取代寫在說明欄) 11 I.1、I.2.b、I.2.d~I.2.l
5 評估目標(AO)拆分,讓一條多件事的證據分開放 7 I.1、I.2.b、I.2.d、I.2.h、I.2.l、II.2、A2.8
6 Annex II 的「資訊本身」欄位(例如支援期結束日、通報窗口網址存成結構化欄位,並標出在產品哪裡) 6 A2.1~A2.4、A2.7、A2.8
7 自家產品的 SBOM 進系統(FR-127 出貨 SBOM 能匯進第三方元件風險模組當證據) 2 I.2.a、II.1
8 定期執行的證明(同一掃描或測試的多次紀錄) 1 II.3

第 1、2 項是系統層、影響全部 31 條,且不限 CRA(任何無 AO 的框架都會遇到);第 3~6 項是「CRA 內容本身」要補的。

另外兩個小 bug(部分更新清空實作狀態、資源庫建立回應的發布狀態不一致)建議另開小卡。