跳轉到

Guidant AI v1.21.0-beta.1 Release Note(預發版)

項目 內容
版本 1.21.0-beta.1(預發版;主軸=資安修正——資安檢視總報告 145 件中已修完的部分一次收進來。本版僅供 188 build 驗證與決策者總測,不對外發佈;總測通過再定正式 1.21.0)
發布日期 2026-09-24
上一版本 1.20.0(2026-09-15)
涵蓋區間 084daecb(v1.20.0)..fix/security-b1 HEAD(BE 424 commits;FE 78 commits;jedi monorepo 與檢測 Agent 同分支)
涵蓋需求 FR-114 資安修正派工(總報告 145 件中已修的,第 1~5 批 50 張卡+其後追加卡)。同一區間也帶進 v1.20.0 之後主線已完成的功能:FR-112 專案規劃頁新增任務與平行流程、FR-110 Google Drive 應用程式設定頁、FR-107 證據自動分類 2.0(部分)、FR-071 客戶端診斷包(部分)、FR-099 意見回饋併入套件、FR-103 退役舊選單
規模 jedi- 套件 19 支發新版(已推 Nexus、BE pin 已改);主線 DB migration 新增 19 支(FR-114 佔 5 支結構類+2 支補權限資料,其餘 12 支來自同期功能,其中 2 支僅 DEV);出貨基線已重產*
適用部署 僅 188 build 驗證與決策者總測。不部署 STG/POC
部署性質 雲端與檢測 Agent 必須同一次換版(兩邊新舊版互不相容,見第 5 節);多處權限守門收緊,總測要用多種角色帳號實際點過

0. 發版前回歸 gate

預發版不跑 site-regression 自動 gate,改由兩路把關:

  • 機器驗證:FR-114 每張卡由驗證 agent 過、首腦獨立抽 diff、跑呼叫端模組既有測試後才驗收通過。
  • 188 全量 build(唯讀):驗三件只有完整打包才看得到的事——驗簽工具(cryptography、cffi)真的編進核心層、typing_extensions 是編譯過的模組而不是附帶的原始檔、換掉驗簽零件開機會被擋。
  • 決策者總測:從全新安裝、升級,到功能整個重測一遍(清單見 docs/features/FR-114-2609-security-fix-dispatch/handoff/2026-09-23-merge-readiness.md 第 7 節)。總測中 ★ 標記的項目有任何一條不過,不往 STG/POC 推。

1. 概述

資安檢視總報告(docs/security-report/SUMMARY.md)把整套系統掃完,歸納出 145 件問題。本版收進已修完的部分,分五條線:

  1. 登入後看不到不該看的:很多功能以前只問「你有沒有登入」,不問「這筆資料跟你有沒有關係」。現在檔案、問卷、專案內各種查詢、公告、下拉選單都會反查歸屬。
  2. 動不了不是自己的資料:完成/退回任務、改刪留言與公告、寫入專案成員、改全公司共用設定,都會比對身分。
  3. 檢測 Agent 與防竄改:檢測 Agent(裝在客戶機房、替我們去掃主機的程式)每次連回雲端都要帶通行證;被撤銷的機器當場斷線。防竄改機制補上幾條「改一個檔就能繞過」的路。
  4. 憑證與設定:版控裡的密碼殘留清掉;密鑰不再回傳給前端;日誌轉送與郵件連線可以加密並驗證對方身分。
  5. 交出去的東西先處理、加上各種上限:匯出 Excel/Word 防公式注入、檔案預覽驗真實格式、AI 功能加次數與逾時上限。

擋得到與擋不到的分界:檢測 Agent 修完後,網路上的外人冒充不了 Agent、被撤銷的機器當場斷線;但能實際碰到那台 Agent 主機的人拿得到機器上的鑰匙,這是設計本身(Agent 要登入客戶主機掃描,一定得有鑰匙)。防竄改修完後,換零件、刪標記檔、手寫解鎖回執這幾條一步得手的路堵住了;但能整包重編執行檔的人仍繞得過——這套機制的定位是擋住隨手改檔案。

2. 使用者可見變更(資安修正,FR-114)

標「操作會變」的是使用者畫面或流程會有感的地方,總測時要特別看。

2.1 登入後看不到不該看的

  • 檔案:稽核證據、SSP 佐證、意見回饋附件等檔案的下載、預覽、換發下載通行證、刪除,都要先確認你是該檔案所屬專案或單據的相關人;不是的話一律回「找不到這個檔案」,不回「沒有權限」,避免別人拿編號一個一個試。操作會變:系統認不出歸屬的舊檔(孤兒檔)會下載不了。
  • 問卷:任務問卷的列表、答案、填答歷史、討論串,改成「該專案任一成員可讀」;空白查詢不再回整張表,直接拒絕。
  • 專案內的各種查詢:流程留言、稽核退回歷程、流程範本、專案與控制項成員、任務指派、摘要報告、稽核輪次、工作項、稽核階段「目前進度」,都會反查「這筆是不是屬於網址上的那個專案、你是不是成員」。操作會變:摘要報告清單頁只列「我參與的專案」,習慣從這頁看全局的管理者會少看到東西。
  • 任務歸屬判斷全系統只有一套:「這個任務屬於哪個專案」一律從稽核輪次反查,還沒指派人的任務也查得到歸屬。完成/退回、佐證、問卷、規劃頁、我的任務清單都用同一套判斷,未指派的任務不會被誤擋成 404 或 403。
  • 公告:新增「發送範圍」(全公司或指定部門),讀取時依範圍過濾,點進看不到的公告回「找不到」;既有公告一律是「全公司」,行為不變。操作會變:公告表單多一個必選的「發送範圍」,選「指定部門」時部門欄才必填。
  • 資產與掃描設定的下拉選單:設備、資訊系統、掃描設定檔的讀取要有對應的讀取權限(device.read、information-system.read、detection-profile.read),缺權限的角色由 migration 自動補上。操作會變:真的沒權限時,下拉選單不再「安靜變空」,而是顯示「沒有權限」並鎖住欄位。
  • AI 儀表板與意見回饋:AI 儀表板 26 支查詢各自申報要什麼權限,不再「一律當管理者」;意見回饋清單多一個「查看範圍」參數(只看我的/看全部),管理頁明確送「看全部」。

2.2 動不了不是自己的資料

  • 任務完成與退回:只有該任務的被指派人與專案 manager 能按;弱點檢測的八個按鈕(開始、取消、刪除執行紀錄等)同一套規則。掃描跑完自動完成的那條路照常可用。操作會變:一般成員按別人任務的「完成」會收到 403(拒絕存取)提示。
  • 只有作者能改刪:問卷討論、公告、意見回饋都比對作者本人。問卷討論改成軟刪除(畫面看得出「被移除」,不是整筆消失)。
  • 寫入時反查填進來的東西:專案成員與任務指派寫入時確認填的任務、群組、控制項屬於這個專案;範本資源庫三條寫入路徑補歸屬、建立端加次數上限;SSP 參考文件刪除要確認文件屬於這份計畫;問卷資料夾與即時填答的身分改用登入身分,不信請求裡帶的名字。
  • 全公司共用設定只有總部能改:LDAP、SMTP、登入政策、日誌轉送四處,子公司管理員改會被拒。操作會變:子公司管理員存檔時收到 403。
  • 流程範本:驗證端點要權限且有長度與節點數上限;範本新增、修改一定經過檢查;起稽核輪次要求範本已發布。操作會變:用草稿範本起輪次會被擋。
  • 停權立即生效:帳號被停權後,手上已發出的登入通行證下一個請求就失效、續期也被拒,網頁與即時通訊兩條路都擋。
  • 管理員角色不可刪、不可停用:避免租戶把自己唯一的管理員角色刪掉後整個租戶沒人能管。
  • 新租戶自帶三個範本角色:新建租戶時除了管理員角色,另建「一般成員」「稽核人員」「唯讀檢視者」三個範本角色(預勾常用權限),客戶不必從零勾起。既有租戶不受影響。

2.3 檢測 Agent 與防竄改

  • Agent 每次連回雲端都要證明身分:Agent 登記時雲端多發一張長效通行證;之後心跳、確認收單、回報結果、下載證據檔四條路都要帶這張證,雲端每次驗章並查資料庫這台有沒有被撤銷或停用。操作會變:管理畫面按「撤銷」後,那台機器四條路當場全斷;被撤銷的機器重新登記會被拒,不會洗回正常。
  • 重灌後接手原機器要證明:帶舊編號重新登記,必須用舊私鑰簽名證明自己是原機器,否則當新機器處理;登記時送的憑證申請(CSR)上的機器識別碼必須等於本次登記的機器。
  • 時鐘偏差警告:Agent 登記與心跳時比對雲端時間,差超過 60 秒就醒目警告(只警告不中止)。時鐘偏差過大會讓證據檔上傳全部失敗。
  • 驗簽工具拔不掉:負責核對簽章的零件(cryptography、cffi)強制編進產品核心,不以可替換的原始檔附帶;打包版不理會「換掉要核對哪個目錄」的環境變數。
  • 鎖定紀錄刪不掉:機器因竄改被鎖後,開機時除了看檔案標記也查資料庫;刪掉標記檔重開,資料庫有紀錄就照樣鎖並把標記補回。解鎖回執要附原廠簽過的解鎖碼,手寫回執不採信。竄改回報附帶的主機紀錄先遮蔽密碼。
  • 開機查資料庫的放行範圍:資料庫真的連不上時放行並警示(不因資料庫暫時掛掉讓整套起不來);「連得上但帳號沒有讀取權限」或「缺帳密設定」改成拒絕開機,擋掉「改權限讓查詢失敗」的繞法。

2.4 憑證與設定

  • 版控裡的密碼殘留清掉:資料庫管理員密碼、外部平台通行證、AI 金鑰、Google 雲端硬碟金鑰、過期登入通行證等從現存檔案清除(不改寫 git 歷史);開始掃描時不再把明文主機帳密多存一份進派工表。
  • 密鑰不再回傳給前端:儲存設定頁的物件儲存密鑰,後端只回「有沒有設定過」,不回真值;新建儲存設定時密鑰必填(後端擋)。操作會變:密鑰欄顯示遮罩,沒改就不送,只改其他欄位不會洗掉密碼。
  • 日誌轉送可加密:日誌轉送設定頁新增「傳輸加密」開關與「信任憑證」欄(選 UDP 時不能開加密)。操作會變:設定頁多兩個欄位,既有設定一律維持不加密。
  • 郵件連線驗證對方身分:郵件設定新增「驗證伺服器憑證」開關與信任憑證欄(可貼內部 CA);新建設定預設驗證,既有設定升級後不變。寄信失敗時不再把整組郵件設定含密碼寫進紀錄檔。操作會變:郵件設定頁多兩個欄位;測試寄信時換了主機要重填密碼。
  • 連線驗證與版本鎖定:GitHub 連線恢復憑證驗證;快取連線改用套件修好的那份;套件 monorepo 在用的套件版本鎖定檔(poetry.lock)納入版控。
  • 交出去的東西先處理:匯出 Excel、Word 時,=、+、-、@ 開頭的內容當文字不當公式;日誌轉送的換行編碼,避免一筆被讀成兩筆;檔案預覽先驗真實格式,不在白名單或內容與副檔名不符的改成下載,HTML 預覽不執行裡面的程式。操作會變:部分以前能直接預覽的檔案改成下載。
  • 各種上限:AI 儀表板與 AI 助手加逾時與次數上限,超過回 429(請求太頻繁);AI 助手訊息上限 4000 字;清單每頁筆數上限 1000;設定值打錯字退回正式模式;寫日誌失敗不連累使用者請求;弱點檢測規則包解析前擋惡意內容、壓縮檔炸彈上限、測試連線主機數上限。操作會變:AI 連按太快會看到「請稍後再試」。

2.5 刪掉的功能

  • 三組沒人呼叫的任務管理功能。
  • 開發用小工具 gen_comment.py 與從沒被讀過的開關;jedi-common 的 [ai] 選配相依。
  • 全站成員名冊查詢入口 /issue/get_members(資料表與同步程式保留,意見回饋指派負責人還在用)。
  • 「快速設定」獨立畫面兩個入口(專案規劃頁裡的快速配置不受影響)。操作會變:那兩個網址直接打不開。
  • 密碼產生器兩份零引用的重複副本,只留 jedi-iam 那一份;摘要報告兩支零呼叫方法。

3. 同期帶進的功能(v1.20.0 之後主線已完成)

  • 專案規劃頁新增任務與平行流程(FR-112):規劃頁任務區塊可直接新增/刪除任務;新增任務時後端自己在流程圖上掛平行分支;合流閘道後的任務等所有兄弟分支結束才啟動;輪次離開規劃期後不可增減任務;卡住的任務管理人可「強制開始」。流程圖編輯器屬性面板只剩名稱,存檔被擋下時顯示是哪個節點有問題。
  • Google Drive 應用程式設定頁(FR-110):Drive 整合的 OAuth 憑證從環境變數搬進「系統設定 → Google Drive 應用程式設定」頁,可貼上、驗證憑證對不對;平台憑證沒設定時租戶頁的「連接」鈕停用並提示。
  • 證據自動分類 2.0(FR-107,部分):證據改由使用者上傳到掛輪次的暫存批次 → AI 分類 → 審閱確認 → 歸檔進對應任務;新增「AI 服務設定」頁讓租戶管理員填自己的 AI 金鑰。系統類選單依「設定 vs 管理」重新分兩組。分類容器進出貨包與端到端回歸未完成(見第 7 節)。
  • 客戶端診斷包(FR-071,部分):每筆 log、存取紀錄、錯誤事件帶同一條追蹤編號;新增「系統設定 → 支援」頁看最近的系統錯誤並匯出診斷包;操作日誌頁加時間區間篩選;前後端接上錯誤收集站(設了連線字串才啟用)。log 分區維護排程修成真的能跑。
  • 意見回饋併入套件(FR-099)與退役 12 個停用的舊選單(FR-103):對使用者無感,選單列表少了原本就看不到的項目。
  • 登入頁小修:忘記密碼與 OTP 重送鈕的冷卻時間真的會鎖住按鈕。

4. Breaking Changes

  • 雲端與檢測 Agent 必須同一次換版:舊 Agent 配新雲端會因沒帶通行證一直被拒;新 Agent 配舊雲端拿不到通行證會一直重試。兩邊只換一邊等於斷線。
  • 對外 API:/issue/get_members 與「快速設定」相關端點下線;多支原本只要登入就能打的端點改要歸屬或權限(錯誤碼新增,前端三語文案已補)。
  • 資料可見範圍:摘要報告清單、公告、意見回饋、問卷等的可見範圍收緊——這是修漏洞不是功能倒退,但使用者習慣會變(見第 2 節「操作會變」)。
  • 開機查資料庫:產品主機的資料庫帳號沒有讀鎖定紀錄的權限時,改為拒絕開機。

5. DB Migration

主線(scripts/sql/manifest.tsv 新增 19 列)

FR-114 資安修正(5 支結構類,已進出貨基線) - 2026-09-22-fr114-survey-discussions-soft-delete:問卷討論加軟刪除欄位。 - 2026-09-22-fr114-bulletin-send-scope:公告加「發送範圍」欄位,既有資料一律全公司。 - 2026-09-22-fr114-feedback-issues-insert-relax-org:意見回饋新增規則放寬——沒有部門的使用者也送得出去(原本會靜默失敗),租戶隔離不受影響。 - 2026-09-22-fr114-log-forwarding-tls:日誌轉送設定加「傳輸加密」與「信任憑證」欄位,既有設定一律不加密。 - 2026-09-24-fr114-vw-user-job-queue-project-from-round:「我的任務」清單的專案欄改從稽核輪次反查。

FR-114 補權限(2 支資料類,不進基線,安裝與升級時由 migrate 那一輪套) - 2026-09-22-fr114-asset-read-capability-backfill:補 device.read、information-system.read 給缺的角色。 - 2026-09-23-fr114-detection-profile-read-capability-backfill:補 detection-profile.read 給缺的角色。刻意拿掉這幾顆權限的客戶庫也會被補回,升級後要再收一次。

同期功能(12 支) - FR-103:2026-09-16-fr103-cm1833-retire-12-disabled-ui-routes(退役 12 個停用選單)。 - FR-107:2026-09-17-fr107-job-evidences-ai-classified(任務證據表支援 AI 歸檔來源)+四支選單登記與分組(ai-service-config-menu、ai-service-config-menu-icon-fix、system-menu-regroup、cloud-integrations-regroup)。 - FR-110:2026-09-17-fr110-google-drive-app-config-menu(Drive 應用程式設定頁選單)。 - FR-071:2026-09-18-fr071-cm1923-maintain-log-partitions-security-definer(log 分區維護函式修成能跑)、2026-09-18-fr0711-api-logs-request-id(存取紀錄加追蹤編號)、2026-09-18-fr071-support-page-menu(支援頁選單);僅 DEV 兩支:cm1920-system-logs-purge-debug-noise、cm1923-drain-default-partitions-DEV。

套件自帶 SQL

jedi-bulletin 001、jedi-issue 004、jedi-log 005 隨套件出貨,由 build 期攤平進安裝包、升級時自動套。

出貨基線

scripts/init/02-schema.sql 已重產納入上述結構類 migration;99-stamp.sql 隨本次版號重生,基線標記為 __init_baseline_v1.21.0b1__。

6. 相依套件版本

套件 v1.20.0 本版
jedi-common 1.1.2 1.3.0
jedi-iam 1.1.3 1.4.3
jedi-task-platform 1.1.1 1.2.0
jedi-file-upload 1.1.2 1.3.0
jedi-issue 1.1.1 1.3.0
jedi-survey 1.1.2 1.2.0
jedi-remote-agent 1.1.2 1.2.0
jedi-detection 1.1.0 1.2.0
jedi-log 1.1.2 1.3.0
jedi-ai-dashboard 1.1.0 1.3.0
jedi-ai-bot 1.1.0 1.3.0
jedi-integrity 1.1.0 1.2.1
jedi-bulletin 1.1.0 1.2.0
jedi-compliance-audit 1.1.2 1.2.0
jedi-asset 1.1.0 1.2.0
jedi-flow-engine 1.1.2 1.4.0
jedi-system-core 1.1.1 1.2.0
jedi-notification 1.1.2 1.2.0
jedi-evidence-classification 1.1.0 1.3.0

其餘套件維持 v1.20.0 的版號。檢測 Agent 另出一版 release,與本版雲端配對使用。

7. 部署順序(188 驗證用)

  1. 188 /opt/guidant-ai-be 與 /opt/guidant-ai-fe 都 git pull 到 fix/security-b1 本進版 commit(FE 一定要切到含資安修正的那個 commit,不能停在 main)。
  2. 開跑前確認沒有別的 build 在跑、磁碟有空間;smoke 指定專用臨時庫,不連 STG 那顆庫、不套 migration。
  3. scripts/build/build_all.sh --all → build_bundle.sh 封包。BE 版號是 1.21.0b1、FE 是 1.21.0-beta.1,封包按 BE 版號找三顆 image,FE image 需補一個 1.21.0b1 標籤。
  4. 驗第 0 節三件事,再交決策者總測。

8. 已知 follow-up(不擋本版)

  • 5B-5(CM-2061):舊版證據分類的五件(#89、#129~#132)等舊線退場(CM-1849)後確認。
  • 第 6 批(CM-2071、CM-2072):資料結構補強與資料庫隔離牆(#23、#24、#41、#104、#105、#109),排在本版測過之後。
  • 解鎖碼帳本檔毀損(#91):目前只記高等級警示、不拒絕開機——原廠還沒有「帳本壞了重新簽發」的流程,直接拒絕會讓機器永遠解不開。
  • 不在本版處理:前端打包腳本內含套件庫帳密(#75,CM-1998);每套安裝同一組最高權限帳密、三環境公鑰並列(#98、#99,已裁暫緩);內部套件庫走明文(#101,已裁內網不修)。
  • FR-107 未完成:分類容器 image 進出貨包、模型碼表換代、端到端回歸。
  • 離線機器的指紋可被接手:Agent 離線時別人用它的機器指紋登記,會照「重灌後接手」的設計拿到同一列(既有設計,記為已知限制)。

9. 正式版待辦

  • [ ] 188 全量 build 通過並驗完第 0 節三件事
  • [ ] 決策者總測通過(安裝、升級、登入權限、專案流程、Agent、防竄改、設定頁七組)
  • [ ] 四個 repo(BE、FE、jedi monorepo、檢測 Agent)fix/security-b1 合回主線
  • [ ] 版號轉正 1.21.0(去 beta 後綴)+FE 對齊+重生 99-stamp.sql+git tag 兩 repo+推 tag
  • [ ] spec-site 凍結快照 v1.21.0/(正式版才切,beta 不切)
  • [ ] 升級手冊補角色權限說明(升級會補三顆讀取權限,刻意拿掉的升級後要再收一次)
  • [ ] 放行後依序上 STG/POC(install.sh --upgrade,雲端與 Agent 同一次換)