---
title: 總結：發現了什麼、打算怎麼修
eyebrow: Guidant AI 資安檢視總報告
h1: 總結：發現了什麼、打算怎麼修
lede: 這一頁把 24 塊的檢視結果收攏成一份總結——**一頁摘要、問題總表（後續派工就照這張）、十三組反覆出現的病因、六批修正順序**。逐塊的細節在各自的報告頁，**進站請從[總報告首頁](index.html)走**。
---

> **這一頁是給要做決定的人看的**：只讀〈一頁摘要〉就能對外講清楚；要排工單就看〈問題總表〉；想知道「為什麼會變成這樣」看〈分析與結論〉。
>
> **逐塊的檢視軌跡與完整推理在各模組頁**，入口在[總報告首頁](index.html)。

---

## 一頁摘要

**只有時間讀一頁的話，讀這一段就夠。**

| 報告基本資料 | |
|---|---|
| 產品與版本 | Guidant AI **1.21.0**（正式版，2026-09-28 出貨） |
| 報告日期 | 2026-09-28 |
| 檢視範圍 | 主系統自己的程式、**25 支外部模組**（jedi-* 套件）、落地版安裝程式（installer）、裝在客戶機房的遠端代理程式（agent） |
| 檢視方法 | AI 逐行讀程式挑疑點 → 三個獨立 AI 覆核投票 → 人逐條開檔確認，重點條目實際打過；方法與極限見[檢視方法與工具](GUIDE-01-method-and-tools.html) |
| 狀態基準 | 每一條的「已修」都以 1.21.0 實際出貨的程式為準，修正卡號與程式碼版本記在問題總表的狀態欄 |

### 我們查了什麼

把整套產品拆成 **24 塊**（23 個外部模組與專項，加上主系統自己的程式），一塊一塊查，**24 塊全部查過**：累計 **140 輪**檢視（輪次清單見資安總表 §1）。

查的方式是：請 AI 把程式一行一行讀過去挑出可疑的地方，每個疑點再找三個獨立的 AI 重查投票，最後由人親自逐條打開確認；工具一條都沒提的那幾輪，由執行者自己做惡意檔案實際去打。**詳細方法與它的極限，見[檢視方法與工具](GUIDE-01-method-and-tools.html)。**

**主系統自己的程式**（不屬於任何外部模組、我們直接寫的那一層）在 2026-09-26 查完：有判斷邏輯的 119 個檔與組裝設定全部掃過，見本段最後。

### 我們找到了什麼

| | 數量 |
|---|---:|
| 掃描工作底稿登記的項次（總表） | **253 項**（含 34 項非資安的程式錯誤、2 項掃描本身的補洞） |
| 去重、併掉同一套修法之後，本報告要處理的 | **🔴 234 件** |
| 其中**最嚴重** | **2 件**（都已修好） |
| 其中**高風險** | **42 件**（39 件已修、1 件隨舊功能線退場消失、1 件只修一半、1 件歸 1.21.1 hotfix） |
| 其中中風險／低風險 | 110 件／80 件 |

每一件現在的狀態，見下一段〈1.21.0 出貨基線〉。

> **兩個數字為什麼不一樣**：253 是掃描過程逐條登記的工作底稿，一條問題在三個入口被撞到可能登三次、也包含不算資安的程式錯誤；234 是把「同一件事、同一套修法」併起來之後，真正要排工單的件數。**派工一律照 234 那張表。**

### 1.21.0 出貨基線（2026-09-28） {#baseline}

234 件在 1.21.0 出貨時的狀態：

| 狀態 | 件數 | 說明 |
|---|---:|---|
| ✅ **已修**（含已換發的外流密碼） | **190** | 修法隨 1.21.0 出貨 |
| 🗑️ **隨舊功能線退場消失** | **3** | 證據分類舊線整條拆除（#9、#66、#67） |
| 🗑️ **裁定刪除、拆除或退役，已執行** | **12** | 沒人用的功能直接拿掉，問題跟著消失 |
| 🚫📋 **裁定不修或只記錄** | **12** | 判斷過的取捨，不是遺漏；理由寫在各模組頁 |
| ⚠️ **只修一半** | **6** | #24、#91、#101、#161、#179、#212，剩下那半寫在各條狀態欄 |
| ⬜ **未修，歸 1.21.1 hotfix** | **9** | 任務越權六條（#169～#171、#182～#184）、子單位改刪母公司授權資料與資料庫隔離規則方向（#23、#104）、原廠 AI 金鑰外送（#172）；母卡 CM-2289 |
| ⏸ **暫緩** | **1** | 雲端硬碟只限公司網域（#205），POC 階段不綁客戶網域 |
| 🕓 **SaaS 版上線前必做** | **1** | 資料庫最後一道牆（#105），落地版不受影響 |
| **合計** | **234** | |

**高風險以上還沒完全處理的只有兩件**：#23（歸 1.21.1 hotfix）與 #24（只修一半）。

### 最要緊的五件

**全案最要緊的五件**（檢視時從「最嚴重與高風險、而且還沒修」裡挑的；**十件都已在 1.21.0 修好**）：

| | 是什麼 | 現況 |
|---|---|---|
| **1** | **裝在客戶機房那支代理程式，五條通訊管道沒有一條會問「你是誰」**——網路上任何人不必帳號，就能冒充它領走客戶整套主機的登入帳密。而且在管理畫面上按「撤銷」只斷了其中三分之一，被撤銷的機器照樣能回報假資料 | ✅ **已修**（CM-2052） |
| **2** | **任何一個登入帳號打一支查設定的功能，就拿到雲端檔案儲存空間的帳號密碼明文**——拿到之後可以完全繞過我們的系統直連儲存空間，把所有客戶上傳的檔案列出、下載、覆蓋、刪除 | ✅ **已修**（CM-2063） |
| **3** | **任何一個登入帳號，知道檔案編號就能下載、刪除別人的稽核證據**，還能換發一張不必登入就能下載的通行證傳到公司外面。本來該有四道關卡，曾經一道都沒有 | ✅ **已修**（CM-2033） |
| **4** | **換掉其中一個負責核對簽章的零件，整套防止程式被竄改的機制就永久失效，而且不發任何警示**——已在自己的機器上實測確認 | ✅ **已修**（CM-2053，待 188 全量 build 實證） |
| **5** | **一組可以繞過所有客戶資料隔離的資料庫管理員密碼，散在 249 個進版控的檔案裡**，其中一份還湊成可直接複製貼上的連線指令。任何接觸過程式碼的人（含離職者、外包）都連得進去 | ✅ **已修**（CM-2049，249 檔已清） |

**合規文件核心、稽核輪次與主系統自己的程式查完之後，新增最要緊的五件**：

| | 是什麼 | 現況 |
|---|---|---|
| **6** | **網路上任何人不必登入，送一個特製內容的請求，就讓整個產品對所有客戶停止回應**——系統在檢查身分之前先拿請求內容去遮密碼，那段比對一次卡好幾秒，同時送幾個就全卡住。**全案唯一不必登入就能讓產品停擺的一條**；修法與另一張遮罩修正同批出貨，避免那張修正把比對拖慢 8 倍（總表 #149） | ✅ 已修 |
| **7** | **同一家公司裡不是這個專案的人，換個網址就看得到別人專案的稽核判定、風險評等與改善計畫**——十支讀取入口同一個漏法，其中稽核團隊名單那支跨客戶也打得到（總表 #57，由中升高） | ✅ 已修 |
| **8** | **任何登入帳號知道一份系統安全計畫的編號，就能把它整份下載成 Excel——而且跨客戶**：人員姓名電話、設備與 IP、每條控制項的做法全在裡面。**這塊底下 45 張資料表完全沒有客戶隔離**，程式那一層是唯一的關卡（總表 #148） | ✅ 已修 |
| **9** | **一份幾 KB 的特製 Word，讓系統安全計畫匯入解析卡到逾時，四個請求讓整個產品停擺**——解析路上六個地方遇到刻意做壞的內容會越跑越慢，每一處都實測重現（總表 #175） | ✅ **已修**（CM-2182） |
| **10** | **網路上任何人不必帳號，寄一個連結給已登入的使用者，對方一點就把登入身分交出去**——雲端硬碟授權完成後跳回來的那個小頁面，把網址上的錯誤訊息原樣寫進頁面程式；今年 6 月修過一次沒修到位。受害者若是管理員，攻擊者就能用他的名義動整家公司的稽核資料（總表 #199） | ✅ **已修**（CM-2200） |

> **挑的原則**：前五件是檢視時全案最嚴重與高風險裡還沒修的；後五件是最能說明「這幾塊的風險長什麼樣」的——第 10 件是主系統那一層唯一不必帳號就打得到的一條。「修好的錯被照抄回來」那個形狀（兩張解析工作單表的隔離規則，#197）在另外兩張表又出現一次（#232），兩處都已修。完整的 234 件按嚴重程度排在下面的〈[問題總表](#問題總表)〉。
>
> （合規範本那條——子公司改得動母公司分享下來的範本——**評為中風險**，理由是它打得到的範圍限於有上下層關係的客戶之間，不像上面那幾件任何帳號都打得到；修法見總表 #46。同一片地上「任何登入帳號用 Excel 或 Word 覆寫範本」那兩條評高，見 #146、#147。）

### 我們打算怎麼修

**分六批修，順序是有理由的**——先修「別人要靠它」的地基，同一套修法併成一批，批與批之間互不相依才能分頭進行。

1. **權限地基**——其他模組補檢查時都是「去問這一塊」，它沒定好，後面全在猜。**要先做。**
2. **只驗登入、不檢查歸屬**——最大的一組。修法就是補一行去問第 1 批，機械活，按模組分頭做。
3. **刪除沒人用的功能** ＋ 4. **清版控裡的密碼殘留**——兩批都不依賴前面，可以先做。
5. **設定與信任鏈、資源耗盡**——代理程式、防竄改、客戶層級設定改到全域、上傳檔案不設總量上限，各自獨立、各有設計判斷。
6. **資料庫最後一道牆**——等程式面修完、測過一版再做。

**另有「第 8 批」**（修正工作實際派工時的第 8 梯次）：主系統掃描查出的與前面剩下的尾巴，經決策者 2026-09-26 逐項裁完，按同一套修法分成 12 組、各開一張卡（CM-2211～2222），**12 組都已修完、隨 1.21.0 出貨**。總表「批」欄寫「8-A」這類就是指它。

**還沒修的 9 件歸 1.21.1 hotfix**（母卡 CM-2289），總表「批」欄寫「1.21.1」。

**完整說明、這一輪新裁定的十九件與第 8 批的 12 組，見[修正建議](#修正建議)。只列順序、不列日期**——日期是排程決定，不是這份報告能代答的。

### 最後查完的一塊：主系統自己的程式 {#not-yet-scanned}

**24 塊都查完了。** 最後一塊是主系統自己的程式——不屬於任何外部模組、由我們直接寫、把所有模組接成一個產品的那一層（每個請求最先經過的把關、雲端硬碟整合、系統診斷包、首次安裝精靈）。

| | |
|---|---|
| 查了什麼 | 主系統 826 個正式程式檔裡，先前沒被任何一輪讀過、**有判斷邏輯的 119 個**，加上決定「哪個功能接哪道檢查」的組裝設定（先用一支比對程式把 75 個組裝檔逐一比過，再掃沒碰過的 17 個） |
| 查了幾輪 | **14 輪**，2026-09-25 ～ 09-26 |
| 新查出 | **高 3 件、中 11 件、低 19 件**（另有 2 件不算資安的程式錯誤），已併進下面的問題總表（#199～#234）與各模組頁 |
| 三件高風險 | **都已修好**，隨 1.21.0 出貨：點一個連結就被偷走登入身分（#199）、雲端硬碟跨公司重建別人的專案（#200）、「誰算總部」擋不住另一家客戶（#201） |
| 其餘 | 由決策者 09-26 逐項裁完：多數併進**第 8 批**、已修完（見〈[修正建議](#修正建議)〉），2 件只記錄不修、1 件 POC 階段暫緩 |

主題對得上既有模組的，放進那一塊的頁面（例如授權過期轉唯讀放[授權管理](M18-license.html)）；其餘雲端硬碟、診斷包、安裝精靈、啟動與把關那幾類，收在新的一頁〈[主系統自己的程式](M24-host.html)〉。

⚠️ **這一塊有四條沒有經過三票覆核**（執行者自己開檔找到、統籌者逐條核對），另有一輪工具一個疑點都沒提出、可信度靠執行者逐支通讀與實測。細節在該頁的檢視軌跡。

---
## 問題總表 {#問題總表}

**風險評級怎麼定**（看三件事：誰打得到、打到之後拿到什麼、今天打不打得到）：

| 評級 | 定義 |
|---|---|
| 🔴 **最嚴重** | 不必帳號就打得到，而且拿得到客戶的主機帳密或能冒充別家客戶——整個客戶環境失守 |
| 🟠 **高** | 任何登入帳號（或不必登入）就能跨客戶讀寫、讀走整家公司的稽核資料、拿到可繞過系統的密碼，或讓整個產品對所有客戶停擺 |
| 🟡 **中** | 需要特定角色或條件才打得到，傷害限在同一家客戶之內，或只影響稽核紀錄的可信度 |
| ⚪ **低** | 門檻高、傷害小，或今天打不到但寫法留著隱患（哪天有人接上或改掉某個前提就會變真） |

::: {.callout .decided}
**這張表就是後續派工的來源。**

🔴 **修正工作一律以這張表為準。** 先前開過的 41 張修正工單，以及 2026-09-14 那份分組草案，**已由決策者裁定作廢**——它們是掃描過程中陸續開的，範圍與裁定都已經被後來的查證推翻過，照著做會做出已經不需要的事。

**去重規則**：掃描工作底稿（總表）登記了 **253 項**，其中
① **同一件事寫在兩頁以上、或在兩輪以上各撞到一次**的併成一條（例如資料庫管理員密碼同時出現在意見回饋、寄信、公告三頁）；
② **同一套修法、同一支程式**的併成一條（例如檔案存取的四個出口、範本的五組讀取入口）；
③ 各頁「範圍外順手撈到」的密碼掃描結果，按它真正屬於的地方歸位、不重複計；
④ **不算資安的程式錯誤**放在各模組頁的「非資安」小表，這張表只收會被用來做壞事或會讓稽核證據失真的。
**去重後是 234 件。**

**「出自」欄**寫的是模組頁與頁內編號（例如「M11-5」＝[合規文件核心](M11-oscal.html)那頁第 5 條），點進那一頁看完整說明與檔名行號。

**「修正批」那一欄**對應下方〈[修正建議](#修正建議)〉的六批與第 8 批（寫成「8-A」這類組別）；寫「1.21.1」的歸 1.21.1 hotfix（CM-2289）；標「—」的是已經修好或已裁定不必修的，不進排程。

**「狀態」那一欄**寫的是 1.21.0 出貨時的事實，附修正卡號與程式碼版本。
:::

### 🔴 最嚴重（2 件）

| # | 問題（在哪裡、誰做什麼、發生什麼） | 出自 | 狀態 | 批 |
|---:|---|---|---|:---:|
| 1 | 裝在客戶機房那支代理程式，五條通訊管道沒有一條會問「你是誰」——網路上任何人不必帳號就能冒充它領走客戶整套主機的登入帳密；管理畫面按「撤銷」只斷了三分之一，被撤銷的機器照樣能回報假資料 | M01-1（含 1b） | ✅ 已修 | 5 |
| 2 | 登入頁的「忘記密碼」，任何人輸入別人的信箱按送出，系統當場把重設密碼的鑰匙回傳給他，等於直接接管那個帳號 | M13-1 | ✅ 已修 | — |

### 🟠 高（42 件）

| # | 問題（在哪裡、誰做什麼、發生什麼） | 出自 | 狀態 | 批 |
|---:|---|---|---|:---:|
| 3 | 任何一個登入帳號，知道檔案編號就能下載、刪除別人的稽核證據，還能換發一張不必登入就能下載的通行證傳到公司外面（同一個洞的四個出口） | M02-1／2／3／7 | ✅ 已修 | 2 |
| 4 | 弱點檢測設定頁的「測試連線」按鈕沒檢查權限，任何登入者按一下，系統就把整家公司的維運帳密解密、送到按的人自己指定的那台主機 | M03-2 | ✅ 已修 | 2 |
| 5 | 同一家公司內任何有帳號的人，送一個空白請求到問卷的「查填答歷史明細」，就能讀走全公司每一份問卷的每一版答案與稽核審核意見。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-1 | ✅ 已修 | 2 |
| 6 | 任何登入帳號拿一個問卷編號去讀答案，系統不問這份問卷是不是你的，別部門的作答內容、分數與審核意見全看得到。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-2 | ✅ 已修 | 2 |
| 7 | 任何登入帳號知道一個任務編號，就能讀走別家客戶的稽核證明清單（含檔案編號），拿到編號可以接著直接下載檔案本體 | M06-1 | ✅ 已修 | 2 |
| 8 | 任何登入帳號能讀走別人專案的整串稽核討論，也能往裡面塞留言——留言會即時推播給該專案全體成員，看起來就像同事發的 | M06-2 | ✅ 已修 | 2 |
| 9 | 任何能登入的帳號（不必是任何專案的成員）在舊版證據分類的「預覽證據檔」填一個雲端硬碟檔案編號，就把那個 Google 帳號摸得到的任何檔案抓回來 | M07-1 | 🗑️ 隨舊線退場，1.21.0 出貨（8-L，CM-2222，套件 commit `87fd5439`／BE `ccc5795f6`／前端 `2537ea5`） | 8-L |
| 10 | 外部程式碼平台的存取通行證共四把寫在版控文件裡，拿得到程式庫歷史的人能用我們公司身分讀寫平台上的專案與問題單（四把已全數撤銷，26 個檔的殘留字串待清） | M15-5 | ✅ 已修正 | 4 |
| 11 | 一個測試用設定檔被推上版控，裡面是四把真的對外 AI 服務金鑰，其中一把還能讀走含客戶資料的執行紀錄（已撤銷換發，殘留字串待清） | M16-5＝M17-9 | ✅ 已修正 | 4 |
| 12 | 一組可以繞過所有客戶資料隔離的資料庫管理員密碼，被寫進 249 個進版控的檔案裡，其中一份湊成可直接複製貼上的連線指令（密碼已換發，249 檔殘留字串待清） | M23-1＝M16-7＝M17-8 | ✅ 已修 | 4 |
| 13 | 任何有帳號的人上傳一份網頁檔，別人在系統裡點一下預覽，攻擊者的程式就在那個人的瀏覽器裡用他的身分跑起來；掃描報告「檔名叫什麼就存什麼」也走同一條預覽路徑 | M02-4＋M03-13 | ✅ 已修 | 5 |
| 14 | 任何登入帳號打一支查系統設定的功能，就拿到雲端檔案儲存空間的帳號密碼明文，之後可以完全繞過我們的系統直連儲存空間，把所有客戶的檔案列出、下載、覆蓋、刪除 | M02-5＋M22-2 | ✅ 已修 | 5 |
| 15 | 客戶管理員在弱點檢測上傳一包「檢測規則」壓縮檔，我們的伺服器解析時會把裡面的設定檔當成程式碼跑起來，一次就把整台後端主機和全平台客戶資料交出去 | M03-1 | ✅ 已修 | 5 |
| 16 | 有人存進一張特製的流程圖後，只要有人打開那一輪稽核的頁面就替他觸發，伺服器一條處理程序永遠算不完、不報錯不留紀錄；同時打中四次整個產品對所有客戶停止回應 | M06-3 | ✅ 已修 | 5 |
| 17 | 有主機管理權限的人把「負責核對簽章」的零件換成永遠說沒問題的假貨，之後任意竄改產品程式，三層檢查照樣顯示通過、全程零警示（已實測證實） | M08-1 | ✅ 已修（待 188 全量 build 實證） | 5 |
| 18 | 客戶端機器因竄改被鎖住後，有主機權限的人只要刪掉一個檔案就能讓機器重新開起來，而那筆鎖定紀錄正是這機制原本要保留的證據。開機查資料庫時若「連得上但沒有權限讀」改成拒絕開機（FR-114 CM-2112）；刪除竄改紀錄表仍會放行，屬已知限制——同時刪標記檔與刪表需主機與資料庫管理員權限，超出本機制「擋隨手改檔」的定位 | M08-2 | ✅ 已修 | 5 |
| 19 | 管理員在「日誌轉送設定」填一台伺服器位址按儲存（任何一家客戶的管理員都按得下去），所有客戶的系統活動紀錄從此持續送往他填的機器（已裁：只給平台管理員改） | M09-1 | ✅ 已修 | 5 |
| 20 | 任何人在帳號等欄位填進特殊開頭字元，管理員把操作日誌或意見回饋匯出成 Excel 打開時，那段內容會被當成公式執行，可能把整張表送到外部網址 | M09-2＋M21-1 | ✅ 已修 | 5 |
| 21 | 使用者在 AI 儀表板打字，任何基層員工都能誘導 AI 選中 26 支查詢裡的任何一支，而且能無限次改寫問法重試直到成功 | M15-1 | ✅ 已修 | 5 |
| 22 | 任何一家客戶（含子公司）的管理員在系統設定頁就能改掉全公司所有人的登入規則，更嚴重的是他能把員工帳號目錄指到自己的機器，等於接管所有人的登入而且看不出來 | M22-1＋M09 同型 | ✅ 已修 | 5 |
| 23 | 被停權的客戶只要手上有一個子單位帳號，就能直接把母公司頭上那筆停權紀錄刪掉、整棵樹當場復權，還能改掉授權到期日與模組清單、刪掉追查用的異動紀錄 | M18-8 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 24 | 一家客戶的人看得到別家客戶的專案、待辦、任務執行紀錄與稽核資料——13 張標有客戶歸屬的資料表，資料庫那道隔離牆沒有真正生效 | M20-1 | ⚠️ 部分修 | 6 |
| 57 | 同公司裡不是這個專案的人，在網址上換成別人的專案編號，就看到那個專案的稽核輪次、稽核判定、風險評等、改善計畫與負責人姓名（十支讀取入口都漏）；其中稽核團隊名單那支**跨客戶也打得到** | M10-4＝M12-1 | ✅ 已修，1.21.0 出貨（CM-2037 `cd9223592`＋CM-2172 `0808b3c8a`） | 2 |
| 146 | 合規資源庫用 Excel「蓋掉一份既有範本」時，系統從頭到尾不問你是誰——任何登入帳號（連唯讀的稽核員都算）拿一個範本編號，就能把別家公司或原廠公版範本的內容整份清空重寫；同一條路的另外兩個去向（寫進專案、建新範本）都有檢查 | M11-2 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`；前半由 CM-2040 `60015232f`，1.21.0 出貨） | 2 |
| 147 | 同一件事的 Word 版：匯入 Word 有三個去向，寫進專案要負責人、建新範本要建立權限，唯獨「蓋掉既有範本」只查範本存不存在——任何登入帳號就能整份覆蓋別家公司或原廠公版範本（與 #146、#46 是同一個缺口的三個入口，要一起修） | M11-3 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`，1.21.0 出貨） | 2 |
| 148 | 任何登入帳號（角色帶「看資源庫」即可，不必是專案成員）知道一份系統安全計畫的編號，就能把它整份下載成 Excel——人員姓名、email、電話、地址、設備與 IP、每條控制項的做法全在裡面，**而且跨客戶打得到** | M11-1 | ✅ **已修**（FR-114 CM-2188，commit `82618a297`，1.21.0 出貨） | 2 |
| 149 | **不必登入**，任何人對我們的網站送一個特製內容的請求（連不存在的網址都行），系統在檢查身分之前先拿它去遮密碼，那段比對一次卡好幾秒；同時送幾個，整個產品對所有客戶停止回應——全案唯一不必登入就能讓產品停擺的一條 | M04-15 | ✅ **已修（FR-114 CM-2171，BE commit `908f9dd0e`，套件 jedi-common commit `cc61f18e`／jedi-iam commit `960d737e`）** | 5 |
| 25 | 存放檔案紀錄的那張資料表原本連「這是哪家客戶的」欄位都沒有，資料庫本身擋不住跨客戶存取 | M02-6 | ✅ 已修 | — |
| 26 | 任何人登入產品時，帳號密碼與可直接冒用身分的通行證會原文寫進伺服器紀錄檔與資料庫，拿得到紀錄檔的人等於拿到密碼 | M04-1 | ✅ 已修 | — |
| 27 | 登入功能本身與雲端硬碟通知入口這種「還沒有身分」的路徑，查資料時會被當成最高權限的系統管理員，一次看到全部客戶的資料 | M04-2 | ✅ 已修 | — |
| 28 | 客戶用公司帳號登入那條路，匿名也能過、帳號字串能騙過查詢、加密連線不確認對方是誰，中間有人就能冒充帳號伺服器攔下帳密 | M13-2 | ✅ 已修 | — |
| 29 | 在個人設定綁定外部帳號時系統不確認是本人，任何員工可以把自己的外部帳號綁到管理員名下，再用它登入變成對方 | M13-3 | ✅ 已修 | — |
| 30 | 在個人資料頁按儲存時，一般員工可以順手把自己改成管理員，或把自己的客戶與部門歸屬清空 | M13-4 | ✅ 已修 | — |
| 31 | 登入頁的「用 Google 登入」是個沒接通的空殼，那條路上「你是誰」由呼叫者自己填、從沒向 Google 驗證過 | M13-5 | ✅ 已修 | — |
| 32 | 在登入頁輸入雙因子驗證碼時可以無限次猜，六位數一直試到中為止，雙因子等於形同虛設 | M13-6 | ✅ 已修 | — |
| 33 | 我們把欠費或違約的客戶停權之後，他自己把手上那張舊授權檔重新上傳一次，唯讀就解除了，不需要我們同意 | M18-1 | ✅ 已修 | — |
| 34 | 任何一個登入帳號，用一個 1.4MB 的請求打授權匯入，就能讓伺服器吃掉 1GB 記憶體、把整個產品打掛 | M18-2 | ✅ 已修 | — |
| 35 | 客戶在線上開通頁輸入開通序號領授權，而序號只有 8 個字，猜中別人的序號就能把那張授權領走 | M18-3 | ✅ 已修 | — |
| 36 | 任何人登入後打開「我的任務」頁面，上面就列著別家客戶的待辦（應該 0 筆、當時看到 39 筆）——這四個畫面是用系統最高權限帳號去查底層資料 | M20-2 | ✅ 已修 | — |
| 199 | **不必帳號**，攻擊者做一個特製連結寄給已登入的使用者，對方一點就把登入身分交出去——雲端硬碟授權完成後的回呼頁把網址上的錯誤訊息原樣寫進頁面程式；今年 6 月修過一次沒修到位〔總表第 188 項〕 | M24-1 | ✅ **已修，1.21.0 出貨**（CM-2200，commit `f0a740bd7`） | — |
| 200 | 任何一家客戶的登入帳號知道別家的專案編號，就能把對方整個專案結構重建到自己的雲端硬碟，還能把自己放的檔案變成對方任務的證據（已在開發環境實際打過）〔總表第 192 項〕 | M24-2 | ✅ **已修，1.21.0 出貨**（CM-2201，commit `73f5f90af`） | — |
| 201 | #22 的修法裡「誰算總部」只擋得住自己公司的子公司，擋不住另一家不相干客戶的總部——客戶 B 的總部管理員照樣改得動全站只有一份的寄信與員工帳號目錄設定〔總表第 212 項〕 | M22-4 | ✅ **已修，1.21.0 出貨**（CM-2202，commit `6cfcb116e`） | — |

### 🟡 中（110 件）

| # | 問題（在哪裡、誰做什麼、發生什麼） | 出自 | 狀態 | 批 |
|---:|---|---|---|:---:|
| 37 | 產品定義上「只能看、沒有待辦」的一般成員，可以完成別人的稽核任務、把流程退回上一關，稽核紀錄上的經手人就變成這個只能看的人；弱點掃描那邊有 8 支會改狀態的功能吃的是同一道守門。**修法**：專案反查改走唯一歸屬判斷（FR-114 CM-2119），修正未指派任務被誤擋 | M03-14＋M06-7 | ✅ 已修 | 1 |
| 38 | 在自己有權限的那份問卷上按「還原歷史版本」時，指定別部門問卷的版本編號，就能把別人的答案複製進自己這一份裡 | M05-6 | ✅ 已修 | 1 |
| 39 | 有問卷修改權限的人可以改掉別人寫的討論內容、而且改完還掛著原作者的名字；刪除是直接從資料庫抹掉、不留痕跡 | M05-8 | ✅ 已修 | 1 |
| 40 | 「檢查流程圖」這支功能任何登入帳號都能打，同一個檔案裡其他功能都掛了權限檢查只有它沒有，送進來的內容也不限大小 | M06-4 | ✅ 已修 | 1 |
| 41 | 任何人自己開一個新專案（自動是管理者），送出指派時「專案填自己的、任務填別人專案的」，系統只查他是不是自己那個專案的管理者就放行 | M10-6 | ✅ **已修（FR-114 CM-2071，套件 commit `ef9a313b`／BE commit `fccfe4db7`）** | 1 |
| 42 | 改公告、刪公告只問「你能不能改公告」，不問「這則是不是你發的」，一個部門的編輯者能改掉或永久刪掉別部門的公告 | M17-1 | ✅ 已修 | 1 |
| 43 | 管理員把某人的「查看設備」權限關掉，那人只是側邊選單看不到入口，把網址貼上去照樣打開整張設備與資訊系統清冊（主機名稱、網路位址、機密性等級與負責人） | M19-1 | ✅ 已修 | 1 |
| 44 | 一個沒有被分配部門的一般使用者送意見回饋一定會失敗，而且畫面不給任何理由；新客戶剛裝好、部門還沒建起來時特別容易踩到 | M21-3 | ✅ 已修 | 1 |
| 45 | 任何一個一般員工在意見回饋頁面上，就能改掉或刪掉別人的回饋，連帶把開發團隊正在處理的那張外部問題單也一起關掉，而稽核紀錄還會把操作人記成合法本人 | M23-2 | ✅ 已修 | 1 |
| 46 | 子公司的管理員在「資源庫」改範本時，可以把母公司分享下來的範本的適用控制項清單整個改掉或清空，底下實作記錄一併刪除——之後每個用這份範本開專案的人，以為在稽核範圍內的項目其實沒被評估。**修法**：後端在「改控制項清單」之前先確認這份範本是自己客戶的——把現有那道檢查從「只在改分享身分時」搬到「只要有寫入就檢查」 | M11-5＝M10-11 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`；CM-2040 `60015232f`，1.21.0 出貨） | 2 |
| 47 | 同一家客戶裡任何成員只要知道任務編號，就讀得到別人專案的掃描執行紀錄——同一個服務裡另外八個功能都有做這道檢查，只有這一支漏掉 | M03-12 | ✅ 已修 | 2 |
| 48 | 任何登入帳號送空白請求到「列出任務問卷」，就拿到整個客戶全部問卷的編號、所屬專案、狀態、受檢設備與部門。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-3 | ✅ 已修 | 2 |
| 49 | 任何登入帳號送空白請求到「列出填答歷史」，就能看到全公司跨所有專案誰在什麼時候改了哪份問卷。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-4 | ✅ 已修 | 2 |
| 50 | 任何登入帳號送空查詢到「問卷討論列表」，就把全公司的討論串撈回來——裡面是稽核過程的缺失細節與審查意見。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-5 | ✅ 已修 | 2 |
| 51 | 多人同時填問卷的「房間」想進哪間就進哪間，可以旁聽別專案正在編輯中的問卷並抓到當下的答案快照。**修法**：任務歸屬改由宿主注入全系統唯一判斷（FR-114 CM-2114），修正未指派任務問卷被誤擋 | M05-7 | ✅ 已修 | 2 |
| 52 | 任何登入帳號知道一個稽核輪次編號，就能讀走別家客戶的階段歷程，含退回理由的完整內容——那是稽核人員親筆寫的「哪裡有問題」 | M06-5 | ✅ 已修 | 2 |
| 53 | 「查目前在哪個階段」用你自己填的專案編號查角色、用你自己填的輪次編號撈資料，兩者不核對，角色不符也只是把「能不能推進」標成否、其他資料照樣整包回傳 | M06-6 | ✅ 已修 | 2 |
| 54 | 同一家公司裡任何能登入的人，對專案成員查詢送一個連專案編號都不填的空白查詢，一次拿到公司內全部專案的成員名冊 | M10-1 | ✅ 已修 | 2 |
| 55 | 同公司裡不是這個專案的人，在網址上換一個編號送出查詢，就讀到別人專案在群組層與控制項層的完整人員配置 | M10-2 | ✅ 已修 | 2 |
| 56 | 同公司裡不是這個專案的人，直接開專案摘要報告就讀到稽核結論全文與歷史版本（歷史版本常保留後來被刪掉的稽核發現） | M10-3 | ✅ 已修 | 2 |
| 58 | 同一家公司裡任何能登入的人，對任務指派清單送一個空白查詢，一次拿到公司內全部一萬多筆任務指派紀錄 | M10-5 | ✅ 已修 | 2 |
| 59 | 全系統共用的取資料底層有一條「查詢條件全沒填就不過濾」的規則，送一個空白查詢就等於回整張表（已裁定逐支補、底層不動） | M10-9 | ✅ 已修 | 2 |
| 60 | AI 儀表板呼叫的那 26 支查詢完全不問「你能不能看這筆資料」，基層員工因此拿得到整份組織架構、誰有什麼權限、公司有哪些客戶 | M15-2 | ✅ 已修 | 2 |
| 61 | AI 儀表板查專案清單時把呼叫者當成管理員處理，不是專案成員的人也能列出該客戶底下全部稽核專案 | M15-3 | ✅ 已修 | 2 |
| 62 | 任何登入帳號叫出 AI 儀表板說一句「列出所有公告」，就拿到整個客戶底下全部公告（含別部門的、停用草稿、未到發布時間的），前三筆還原文送到外部 AI | M17-2 | ✅ 已修 | 2 |
| 63 | 任何登入的人在任務列表上看到一筆別人專案的任務編號，就點得開它的完整內容——入口雖然要填專案編號，但填真的、全零、亂打一串字三種都查得到同一筆。**修法**：讀、改、刪任務前先查任務真正屬於哪個專案，不符一律回「查無此資料」；任務歸屬改讀輪次鏈（FR-114 CM-2113），修正還沒指派人的任務被誤擋 | M20-3 | ✅ 已修 | 2 |
| 64 | 刪除控制項底下的佐證文件、刪除文件庫文件時，系統檢查的是「你管不管網址上那份計畫」，刪掉的卻是「你另外給的那份文件編號」，兩者從不核對——後者還會連帶刪關聯、可能把實體檔一起永久銷毀 | M11-11 | ✅ **已修**（FR-114 CM-2041，commit `15d4efd3c`，1.21.0 出貨） | 2 |
| 65 | 建立合規資源庫的入口完全沒有權限檢查、只驗有沒有登入，而隔壁做同樣事情的入口是有要求權限的 | M11-13 | ✅ **已修**（FR-114 CM-2179，commit `94275d72f`；能力點 CM-2040 `60015232f`，1.21.0 出貨） | 2 |
| 66 | 舊版證據分類的「查結果、查報表、工作清單」不檢查你是不是這個專案的成員，查不到紀錄時還會退回直接去雲端硬碟讀，用的是呼叫者自己公司的鑰匙 | M07-2＋M07-3 | 🗑️ 隨舊線退場，1.21.0 出貨（8-L，CM-2222，套件 commit `87fd5439`／BE `ccc5795f6`／前端 `2537ea5`） | 8-L |
| 67 | 舊版證據分類查雲端硬碟的搜尋條件是用字串接起來的沒做防護，可能被改寫搜尋範圍（例如改成「這個硬碟裡的所有檔案」） | M07-4 | 🗑️ 隨舊線退場，1.21.0 出貨（8-L，CM-2222，套件 commit `87fd5439`／BE `ccc5795f6`／前端 `2537ea5`） | 8-L |
| 68 | 群組層成員的新增／修改／刪除三支程式，因系統啟動時漏接一條線而整支完全不檢查權限，而這張表被拿來算「哪些專案我看得到」 | M10-7 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 69 | 流程參與者的新增／修改／刪除是一整組從沒啟用過的功能，把關檢查寫在永遠跑不到的位置——現在擋住它的是它本身就壞著 | M10-8 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 70 | 按下「開始掃描」時，解密後的客戶主機帳密會多存一份明文進派工資料表，從頭到尾沒有程式讀過它，而且每掃一次就多留一份、無限累積 | M03-9 | ✅ 已修 | 4 |
| 71 | 一支產生文件的腳本把展示環境的完整資料庫連線資訊（含密碼）寫死在程式碼裡（密碼已換發，殘留字串待清） | M16-7 | ✅ 已修正 | 4 |
| 72 | 系統管理員帳號密碼寫死在三支腳本裡，其中兩支寫成「環境變數沒設就用這個」，變數忘了設時會靜默用真密碼且不告知操作者（已換發，殘留字串待清） | M16-8＝M17-11 | ✅ 已修正 | 4 |
| 73 | 公司套件倉庫與檔案儲存服務的帳密寫在一份交接文件裡，有發布權的人可以推一個帶後門的元件，下次打包就自動裝進客戶手上的程式（已換發，殘留字串待清） | M17-10＝M15-6 | ✅ 已修正 | 4 |
| 74 | Google 雲端硬碟的應用程式密鑰與加密金鑰散在 15 個進版控的檔案裡，而這組密鑰是 Google 後台唯一一組、所有客戶環境共用 | M23-3 | ✅ 已修 | 4 |
| 75 | 打包前端映像檔的那支腳本裡直接寫著一組內部套件倉庫的帳號密碼，而腳本本身就進了版本控制；同一組帳密在前端那個程式碼倉庫的三個流程設定檔裡也有 | M23-6 | 📋 已裁記錄不修（1.21.0） | — |
| 76 | 弱點檢測的規則包如果改用「填網址」的方式給，下載回來直接解開，防壓縮炸彈的三道上限一道都不會碰到，45MB 解成數十 GB 就能讓所有客戶一起停擺 | M03-3 | ✅ 已修 | 5 |
| 77 | 上傳規則包的「最多一萬個檔」上限要等整份檔案清單展開進記憶體才開始數，連送幾次就能把伺服器打停 | M03-4 | ✅ 已修 | 5 |
| 78 | 用網址建立掃描基準時系統放行不加密的連線，而且不記檔案指紋——路徑上任何能動手腳的人換掉那包檔案，就等於在客戶機房的代理程式裡跑自己的程式碼 | M03-5 | ✅ 已修 | 5 |
| 79 | 「測試連線」要連到哪台主機是呼叫者自己指定的，客戶內網裡的代理程式因此變成「只要登入就能用的任意連線跳板」，還能靠回應差異一台一台探測內網 | M03-6 | ✅ 已修 | 5 |
| 80 | 「手動重新解析」按幾百次就開幾百條背景工作，每條把 50MB 檔整包讀進記憶體再開一支最長 15 分鐘的外部程式，同一台機器上所有客戶一起變慢 | M03-10 | ✅ 已修 | 5 |
| 81 | 先綁一支不限台數的掃描工具、把範圍填成超大網段，再送第二次只換工具不帶範圍——舊的超大範圍原封不動跟到新工具底下，執行時展開 1,677 萬台把服務打當 | M03-11 | ✅ 已修 | 5 |
| 82 | 使用者的密碼裡只要有雙引號（強密碼常見），寫進紀錄時只遮掉前半截，後半截原文留在資料庫九十天 | M04-3 | ✅ 已修 | 5 |
| 83 | 任何登入帳號在任何清單畫面把「一頁幾筆」填成超大數字，就能叫資料庫整張表一次撈完，重複幾次整個產品對所有客戶停止回應 | M04-7 | ✅ 已修 | 5 |
| 84 | 客戶的環境設定值打錯字時程式認不得，就悄悄退回開發用的紀錄設定（出貨設定與安裝程式都補了，但「認不得就退回開發設定」的行為還在） | M04-8 | ✅ 已修 | 5 |
| 85 | 多人同時填問卷時，一個合法填答者可以把自己的修改署成別人的名字，事後追查「誰改了這一題」就不可靠了 | M05-9 | ✅ 已修 | 5 |
| 86 | 更新問卷資料夾時多塞一個「已刪除」欄位，就繞過「資料夾裡還有東西就不准刪」的守門，造出「資料夾刪了、問卷還掛在底下」的孤兒資料 | M05-10 | ✅ 已修 | 5 |
| 87 | 一筆空白內容的流程範本，會讓所有人的清單頁面都出錯、而且不會自己恢復正常 | M06-8 | ✅ 已修 | 5 |
| 88 | 流程範本的新增與修改完全不跑任何檢查（只有「發布」那一支會檢查），而且啟動一輪稽核去複製範本時不要求那份範本已經發布過——一份從沒檢查過的草稿也能啟動真實稽核流程 | M06-9＋M06-10 | ✅ 已修 | 5 |
| 89 | 被稽核的一方在自己交來的證據文件第一頁寫一段話，就能指揮 AI 把自己歸進全部合規項目、信心值滿分 | M07-5 | ✅ 已修，1.21.0 出貨（CM-2225，套件 commit `af7ea406`） | 5 |
| 90 | 有主機權限的人改一個設定，把「要核對哪個目錄」整個換掉，而且這設定的優先順序比「是不是正式打包版」還高 | M08-3 | ✅ 已修 | 5 |
| 91 | 有主機權限的人把記錄「解鎖檔用過沒」的那個檔案改成亂碼，系統會當作一張都還沒用過，已用過的一次性解鎖檔就能重新復活使用 | M08-4 | ⚠️ 部分修（解鎖碼帳本毀損目前只記高等級警示不拒絕，原廠有重簽流程後再收緊） | 5 |
| 92 | 管理員在日誌轉送設定頁選「傳送方式」時，下拉選單裡只有兩個選項、兩個都是明文，想開加密的客戶根本開不了 | M09-3 | ✅ 已修 | 5 |
| 93 | 任何人（連登入都不用）在帳號之類欄位填進換行，系統把日誌送到客戶的資安監控系統時原樣帶出，對方會讀成兩筆紀錄，第二筆內容由攻擊者決定（例如偽造「某某管理員授予了超級權限」） | M09-4 | ✅ 已修 | 5 |
| 94 | 產品的聊天框對訊息長度與呼叫次數完全不管，最基層員工用四到八個連線送超大訊息就能讓整個產品對所有人停止回應 | M14-1 | ✅ 已修 | 5 |
| 95 | 儀表板把查到的資料整包原樣送回畫面，夾帶每個帳號的密碼加密鹽值與「是不是超級管理員」旗標，送給外部 AI 的樣本也沒遮蔽 | M15-4 | ✅ 已修 | 5 |
| 96 | 寄信失敗時（密碼填錯、網路抖一下就會發生）系統把整組郵件設定含密碼原樣寫進紀錄檔，所有看得到紀錄的維運人員等於拿到密碼。主系統掃描又從系統診斷包那一端撞到（總表第 207 項），它暴露的密碼寫法已併進 8-B 的遮罩規則一起修好（CM-2212） | M16-2 | ✅ 已修 | 5 |
| 97 | 系統連郵件伺服器時有加密但不認人，攔在路上的人拿張自簽證明就能收下帳密，連每封信的內容（含一次性驗證碼、新帳號初始密碼信）都被攔走 | M16-3 | ✅ 已修 | 5 |
| 98 | 安裝程式每裝一套都種下同一組最高權限帳號密碼且不強制首次登入就改，破解一次就等於拿到每一套裝出去的最高權限帳號（已裁定維持記錄、暫不調整） | M17-7 | 📋 已裁記錄不修（1.21.0） | — |
| 99 | 開發環境的私鑰簽出來的授權檔，正式環境照樣認得——三個環境的公鑰全部並列在產品裡的同一份清單（已裁定：等正式簽發站建好一併處理） | M18-7 | 📋 已裁記錄不修（1.21.0） | — |
| 100 | 系統帶著公司的 GitHub 通行證去開問題單時，不確認對方是不是真的 GitHub，網路上的中間人可以假冒 GitHub 把通行證攔走 | M23-4 | ✅ 已修 | 5 |
| 101 | 公司內部網路裡有心人，可以在我們打包機安裝套件的當下偷偷掉包內容，等於在打包機上執行他的程式碼——而打包機產出的就是客戶實際拿到的安裝檔 | M23-5 | ⚠️ 部分修（lock 已入版控；https 決策者裁不修，內網） | 5 |
| 102 | 匯出 Word 時使用者填的文字沒有做跳脫處理就塞進範本，可以讓匯出的稽核文件夾帶偽造內容 | M11-18 | ✅ **已修**（FR-114 CM-2055，commit `f85a82edb`，1.21.0 出貨） | 5 |
| 103 | 把系統日誌寫進資料庫如果失敗，錯誤會往上竄、把使用者原本那個請求一起弄壞——現在能跑純屬運氣（靠處理器排序），而正式環境現在也會走到這條路了 | 掃描總表 §3.2 第 11 | ✅ 已修 | 5 |
| 104 | 資料庫的客戶隔離規則方向寫反——子單位的人看得到（還能改能刪）母單位的資料，同樣寫法在出貨基線裡共 11 條（其中授權那 3 張「看」要保持現狀、只擋「改」和「刪」） | M03-7＋M18-8 那三張 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 105 | 走向多家客戶共用的 SaaS 版時，合規文件那一整塊沒有最後一道防線——實測用一把指向不存在客戶的鑰匙去查，專案看到 0 筆，但系統安全計畫看到 639 筆、稽核發現看到 525 筆；已盤清 102 張表沒有牆、要補 53 張 | M20-5 | 🕓 SaaS 前必做 | 6 |
| 150 | 合規資源庫與專案 SSP 的 Excel 匯入只量上傳檔大小、不量解開後多大——任何登入帳號傳一份 2MB、解開好幾 GB 的「試算表炸彈」，處理程序記憶體爆掉被砍，同一台上其他人的請求一起失敗 | M11-23 | ✅ **已修**（FR-114 CM-2181，commit `48638cbdb`／套件 `2cb9d2cd`；同型第五入口見本表 #207，已由 CM-2203 修好，1.21.0 出貨） | 5 |
| 151 | 匯出控制項現況 Excel 時，使用者寫的描述如果以 `=` 開頭會被寫成公式；複核的人打開、按了「啟用內容」，那段指令就在他自己的電腦上跑 | M11-19 | ✅ **已修**（FR-114 CM-2055，commit `f85a82edb`，1.21.0 出貨） | 5 |
| 152 | 專案 SSP 的 Word 匯入同樣只量上傳檔大小：一份 0.32MB 的 Word 打開能吃掉 1.9GB 記憶體，任何登入帳號都能傳 | M11-24 | ✅ **已修**（FR-114 CM-2181，commit `48638cbdb`／套件 `2cb9d2cd`，1.21.0 出貨） | 5 |
| 153 | 管理自己一個專案的人（自己開一個就有），把程序書掛到控制項時填進別人專案的文件編號，系統照單掛上，回應裡還附檔案編號，拿去就能下載別人的程序書 | M11-12 | ✅ **已修**（FR-114 CM-2173，套件 commit `5170e507`／BE commit `c4b6bdb16`，1.21.0 出貨） | 2 |
| 154 | Excel「說明」頁那一格填一百萬個數字，檢查版本號的比對就卡住一條處理程序；四個請求讓系統沒回應，任何登入帳號都能做 | M11-25 | ✅ **已修**（FR-114 CM-2181，commit `48638cbdb`，1.21.0 出貨） | 5 |
| 155 | 平台管理員上傳框架 PDF 解析失敗時，系統把程式出錯的原始訊息（伺服器路徑、套件名稱，連寫資料庫失敗的語句都會帶上）整段存起來再回給前端 | M11-22 | ✅ **已修**（FR-114 CM-2183，commit `c33f7e828`，1.21.0 出貨） | 5 |
| 156 | 平台管理員刪掉一整個合規框架或版本時，後端不檢查還有沒有客戶的資源庫在用，把關交給前端藏按鈕；原本以為能照抄的「引用檢查」在正常流程裡其實永遠不會擋（已裁：三處一起改成查「有沒有資源庫引用這個版本」） | M11-27 | ✅ **已修**（FR-114 CM-2180，commit `7262b74c8`，1.21.0 出貨） | 5 |
| 157 | 沒被授權看合規範本的員工（選單都看不到），直接打網址就讀走全公司範本清單與每一份的完整內容 | M11-14 | ✅ **已修**（FR-114 CM-2186，commit `aafaa070d`，範本下拉依裁定放寬為「看範本或建專案」，1.21.0 出貨） | 2 |
| 158 | 範本的稽核流程圖（一次稽核走哪些步驟、每步誰負責）任何登入帳號都讀得到，而同一支檔案裡的新增、修改、刪除都要權限 | M11-15 | ✅ **已修**（FR-114 CM-2186，commit `aafaa070d`，1.21.0 出貨） | 2 |
| 159 | 有範本修改權限的管理員改流程圖時，只有順便改「分享設定」才會檢查範本是不是自己公司的；不送那個欄位，原廠公版或母公司分享下來的範本流程圖照改 | M11-6 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`，1.21.0 出貨） | 2 |
| 160 | 刪或改範本子項時，檢查的是網址上那個子項、真正動手改的是使用者另外送上來的那份範本，兩者從不核對 | M11-7 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`，1.21.0 出貨） | 2 |
| 161 | 範本掛了哪些程序書，任何登入帳號都列得出來；清單附檔案編號，拿去打下載網址就把程序書整份抓走 | M11-16 | 🟡 **部分修**（FR-114 CM-2186，commit `aafaa070d`：讀取入口已補權限；檔案下載擁有者檢查另評估，1.21.0 出貨） | 2 |
| 162 | 範本的「稽核目標預設內容」（每條目標的完成狀態、實作說明、備註）任何登入帳號都讀得到，而改與刪都要權限 | M11-17 | ✅ **已修**（FR-114 CM-2186，commit `aafaa070d`，1.21.0 出貨） | 2 |
| 163 | 範本裡的人員名單（姓名、email、電話、地址）、設備清單（資產編號、IP、主機名稱）、系統元件（通訊協定、開放的連接埠）、繼承授權與系統特性，任何登入帳號拿一個範本編號就讀得到，**而且跨公司**（同一種漏法、四組入口、一張卡修） | M11-4 | ✅ **已修**（FR-114 CM-2186，commit `aafaa070d`，1.21.0 出貨） | 2 |
| 164 | 公司管理員在原廠公版或母公司分享下來的範本裡，新增、修改、刪除人員、元件、設備、繼承授權、系統特性、設備對照六類資料，系統只查範本存在、不問是不是你家的；之後每個用這份範本開的專案都繼承被改過的內容 | M11-8 | ✅ **已修**（FR-114 CM-2187，commit `3f15886bb`，1.21.0 出貨） | 2 |
| 165 | 用 Excel 批次存檔範本的控制項清單時，只查範本存不存在、不查是不是你公司的 | M11-9 | ✅ **已修**（FR-114 CM-2187，commit `3f15886bb`，1.21.0 出貨） | 2 |
| 166 | 有人在計畫內容裡填了公式開頭的文字，別人下載這份範本 Excel、打開時公式就在他電腦上執行 | M11-20 | ✅ **已修**（FR-114 CM-2189，commit `895db0ef8`，1.21.0 出貨） | 5 |
| 167 | 任何登入帳號把自己的暱稱改成一段公式，之後公司裡任何人下載的任何一份範本（連空白範本）都帶著這段公式，打開時在下載者電腦上執行 | M11-21 | ✅ **已修**（FR-114 CM-2189，commit `895db0ef8`，1.21.0 出貨） | 5 |
| 168 | 只被授權「建立範本」、沒被授權「修改範本」的人，走 Excel 整批匯入就能把既有範本整份改掉——同一件事在畫面上改要修改權限，走匯入只要建立權限（已裁：不行，要補） | M11-10 | ✅ **已修**（FR-114 CM-2178，commit `abf1cf8a4`，1.21.0 出貨） | 2 |
| 169 | 同一家客戶裡任何有專案模組的帳號，帶一個別專案的編號，就列得出那個專案每個查核項目底下的任務（指派人、部門、設備、問卷）；拿到的任務編號正好是改、刪別人任務的材料 | M06-17 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 170 | 專案 A 的管理者匯入任務 Excel 時，把「任務識別碼」換成專案 B 的，按「確認」那一步就把 B 的任務指派人、類型、部門、設備一起改掉 | M06-18 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 171 | 專案 A 的管理人網址填自己的專案、任務填專案 B 一張卡住的任務，按「強制開始」就把它推進；B 的主管收到通知，稽核事件卻記在 A 名下 | M06-19 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 172 | 若把「AI 金鑰只限平台管理員」這個開關放開，客戶管理員把服務位址填成自己的機器、金鑰留空，跑一次證據分類，原廠 AI 金鑰就送到他的機器上（今天開關關著，打不到） | M07-13 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 173 | 證據分類跑超過 30 分鐘逾時，原廠 AI 金鑰會以明文寫進後端日誌，並跟著日誌轉送與回廠診斷包出去——不需要攻擊，AI 服務卡住就會發生 | M07-14 | ✅ 已修，1.21.0 出貨（「名稱=值」寫法 CM-2193；其餘寫法、資料庫紀錄改走日誌遮罩、打包前統一過一道由 8-B，CM-2212，commit `c8534bfcb`／`8f5755f1d`） | 8-B |
| 174 | 已登入的人把網址加長到超過 500 字，這次操作就寫不進操作日誌，刪資料、改設定照做，事後查不到 | M09-6 | ✅ **已修（FR-114 CM-2171，BE commit `908f9dd0e`）** | 5 |
| 175 | 任何能匯入 SSP 的帳號傳一份幾 KB 的特製 Word，解析會卡到 120 秒逾時被砍；四份同時送，整個產品對所有客戶停擺 | M11-26 | ✅ **已修**（FR-114 CM-2182，commit `9edcf4de4`，1.21.0 出貨） | 5 |
| 176 | 稽核員在稽核計畫頁匯入一份不到 20MB、解開幾十 GB 的 Word，處理程序被砍，連送幾份所有客戶一起停擺（與 #150、#152 同病，病灶在另一個套件，四個入口一張卡） | M12-2 | ✅ **已修（FR-114 CM-2181，commit BE `48638cbdb`／套件 `2cb9d2cd`，1.21.0 出貨）** | 5 |
| 177 | 稽核員匯入稽核紀錄 Excel 時，只要在很後面的某一列填一格，系統就從頭一列列讀到那裡；幾 KB 的檔能卡住處理程序近一分鐘、吃掉快 2GB 記憶體 | M12-3 | ✅ **已修（FR-114 CM-2181，commit BE `48638cbdb`／套件 `2cb9d2cd`，1.21.0 出貨）** | 5 |
| 203 | 使用者上傳的檔案整個資料夾開在網站 `/static/` 路徑下，不用登入就能下載；今天靠網站前門只放行兩條路徑擋著，有人為了排錯開了後端的埠就整包公開〔總表第 185 項〕 | M24-3 | ✅ 已修，1.21.0 出貨（8-I，CM-2219，commit `782ebb8b3`） | 8-I |
| 204 | 即時通訊服務把每一筆封包原樣寫進伺服器紀錄（含登入通行證），系統診斷包收紀錄時沒遮，通行證跟著診斷包送出客戶機房〔總表第 186 項〕 | M24-5 | ✅ 已修，1.21.0 出貨（8-B，CM-2212，commit `c8534bfcb`／`8f5755f1d`） | 8-B |
| 208 | 專案摘要報告匯出 PDF 時插圖白名單放行 SVG，能編輯報告的人可以讓伺服器替他去連公司內網，先前建的防護在這裡被繞過〔總表第 204 項〕 | M10-20 | ✅ 已修，1.21.0 出貨（8-C，CM-2213，commit `a5804a990`／`bde8f9d16`） | 8-C |
| 209 | 還原專案摘要報告的歷史版本時不檢查那個版本是不是這份報告的，專案成員能把別份報告的內容蓋進來〔總表第 205 項〕 | M10-21 | ✅ 已修，1.21.0 出貨（8-A，CM-2211，commit `fe928859f`） | 8-A |
| 210 | 系統診斷指令用猜得到的名字建暫存資料夾、不檢查捷徑，容器裡只有一般權限的人能騙主機最高權限帳號把資料寫到他指定的地方〔總表第 208 項〕 | M24-7 | ✅ 已修，1.21.0 出貨（8-D，CM-2214，commit `d39181f3b`／`046553756`） | 8-D |
| 211 | 系統診斷包的設定快照遇到跨好幾行的設定值只遮第一行，第二行以後的密碼跟著診斷包出去（今天出貨的資料庫密碼剛好單行，還沒踩到）〔總表第 209 項〕 | M24-6 | ✅ 已修，1.21.0 出貨（8-B，CM-2212，commit `c8534bfcb`／`8f5755f1d`） | 8-B |
| 212 | 原廠共用的檔案（例如範本），一般公司的登入帳號按刪除，檔案本體先被刪掉、資料庫紀錄卻刪不掉，所有客戶的範本一起打不開〔總表第 217 項〕 | M02-12 | ⚠️ 部分修（一般公司刪原廠共用檔已擋住，1.21.0 出貨；刪除順序還沒改、還沒排卡） | 未排 |
| 205 | 所有雲端硬碟資料夾（連根資料夾）都設成「知道連結的任何人都能編輯」，而根資料夾連結任何登入帳號都查得到——拿到的人能看、改、刪全公司的證據檔〔總表第 193 項〕 | M24-8 | ⏸ 暫緩（POC 階段） | 暫緩 |
| 106 | 兩張日誌表的「按月分開存放」失效，連帶保存期限完全沒生效，該刪掉的日誌（那段期間還有密碼原文）實際無限期留著 | M09-5 | ✅ 已修 | — |
| 107 | 在郵件設定頁按「寄測試信」時把伺服器位址改成自己的機器、密碼欄留空，系統就用存著的真密碼去連（已裁定：寄信設定由客戶最上游帳號自行管控，權限分配是客戶自己的決定；程式面已加強——換了伺服器位址就要重填密碼） | M16-1 | 🚫 裁定不修 | — |
| 108 | 半夜自動跑的兩支清理程式，靠「找不到身分就給最高權限」這條規則才跑得動；哪天把那條規則收緊，它們會安靜停擺、不報錯 | M20-4 | ✅ 已修 | — |
| 202 | 落地版的商務授權總開關只是一個設定值，客戶的主機管理員改一行就能整個關掉——沒買的模組照用、過期照寫〔總表第 182 項〕 | M18-12 | ✅ **已修，1.21.0 出貨**（CM-2205，commit `c8aa7d026`） | — |
| 206 | 雲端硬碟背景同步查資料時不分公司，兩家客戶不小心接了同一個 Google 帳號，一家的檔案異動與刪除就會打到另一家的證據（已在開發環境實際打過）〔總表第 194 項〕 | M24-4 | ✅ **已修，1.21.0 出貨**（CM-2204，commit `e00f5ed04`） | — |
| 207 | 匯入任務的 Excel 完全沒有上傳檢查、整份攤開在記憶體，9.8MB 吃掉 1.46GB——「試算表炸彈」的第五個入口〔總表第 198 項〕 | M06-23 | ✅ **已修，1.21.0 出貨**（CM-2203，commit `eb4ff79cd`／`040c3c827`） | — |

### ⚪ 低（80 件）

| # | 問題（在哪裡、誰做什麼、發生什麼） | 出自 | 狀態 | 批 |
|---:|---|---|---|:---:|
| 109 | 某個專案的管理者在寫入群組層／控制項層成員時，填進來的群組或控制項可能根本不屬於那個專案，系統不比對就寫進去 | M10-10 | 🗑️ **裁定退役（FR-114 CM-2072，BE commit `390b13908`，套件 jedi-task-platform commit `f1fa23c1`／FE commit `2cb7fb4`）** | 1 |
| 110 | 更新專案成員資料時撈不到既有紀錄就整段跳過管理者檢查——目前靠後面另一道檢查頂住，哪天有人改成「查不到就當新增」，這道把關會靜默消失 | M10-12 | ✅ 已修 | 1 |
| 111 | 用網址直接開一則公告時系統什麼都不檢查，調部門之後舊部門的公告用舊網址照樣打得開；公告列表碰到「沒有被分配部門」的帳號就整個不過濾、全部給看（已裁定：發送對象改成必選，一套設計解掉三件事） | M17-3＋M17-4 | ✅ 已修 | 1 |
| 112 | 只給了修改權限、刻意不給刪除權限的操作人員，直接送一個「停用」欄位，就能讓任何一個資訊系統從所有選單與清單裡消失 | M19-2 | ✅ 已修 | 1 |
| 113 | 租戶管理員在權限矩陣把某個權限取消勾選，前端選單確實藏起來了，但後端八支讀取功能照樣回全部資料——那一格勾選其實不生效，管理員被騙了 | M03-8 | ✅ 已修 | 2 |
| 114 | 共用的「資料轉成回覆內容」工具資料上有什麼就吐什麼，呼叫的人忘了先篩選，畫面就會拿到不該看到的內部項目 | M04-12 | ✅ 已修 | 2 |
| 115 | 同一家客戶內沒被授權的帳號可以讀走全部流程範本與系統內建範本的完整內容（階段設計、角色指派、判斷條件）——前端選單擋住了，但功能本身是敞開的 | M06-11 | ✅ 已修 | 2 |
| 116 | 一支檔頭自己就寫明「不是產品程式碼」的開發用小工具，會跟著出貨套件裝到客戶機器上 | M04-11 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 117 | 一個每次連線都會被設定、但全系統沒有任何地方讀它的開關，留著會讓後人誤以為「這裡已經有部門層級的檢查」而不去補真正需要的 | M04-14 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 118 | 三支接收檔案路徑、現在完全沒人呼叫的程式直接用傳入的路徑開檔讀寫；另有兩組「接好但沒人用」的備用服務完全沒有權限檢查——現在無害的唯一理由是沒人用它 | M06-14＋M06-16 | 🗑️ 裁定刪除，1.21.0 出貨（三支接收路徑的程式已刪；沒人用的那組備用服務由 8-E 拆掉，CM-2215，commit `822216b6c`） | 8-E |
| 119 | 有一個獨立的「快速設定」畫面，按下去顯示成功但一筆都沒存；兩個入口網址都沒有任何按鈕導過去，只有手打網址才進得去（已裁定整頁拆除、兩個入口都要拆） | M10-14 | 🗑️ 裁定拆除，已拆除（1.21.0 出貨） | 3 |
| 120 | 四支任務指派相關功能沒有對外入口、也沒有任何把關（已裁定刪除其中三支，第四支是配套用的留著） | M10-18 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 121 | 任何一個登入帳號送一個空白查詢，就把整張全站成員名冊含電子郵件撈回來（查證後確認這支入口現在沒有任何地方在呼叫、三個環境的表都是 0 筆，已裁定整塊移除） | M21-2 | 🗑️ 裁定刪除，已刪除（1.21.0 出貨） | 3 |
| 122 | 簽發登入憑證的金鑰、資料庫密碼、檔案儲存服務金鑰寫在同一個測試設定檔裡，拿到第一樣就能偽造管理員登入憑證（已撤銷換發；安裝時每套各自隨機產生，不會跟著出貨） | M16-6＝M17-6 | ✅ 已修正 | 4 |
| 123 | 使用者在本機儲存模式下刪掉一個檔，轉檔產生的 PDF 備份沒被一起清掉，還留在硬碟上 | M02-9 | ✅ 已修 | 5 |
| 124 | 系統連到自己裝在客戶機房的檔案儲存空間時走的是不加密連線，檔案內容與帳密在客戶內網上明文跑 | M02-11 | 🚫 裁定不修（內建容器間通訊，比照 #101） | 5 |
| 125 | 兩種運作紀錄的詳細程度被寫死成最詳細，紀錄量暴增吃掉磁碟（三處已改一處，還剩兩處） | M04-9 | ✅ 已修 | 5 |
| 126 | 任何登入帳號在問卷資料夾列表塞一個內部開關欄位，就叫得出系統刻意隱藏的資料夾（流程自動產生的快照、已刪除的），連權限點都沒掛 | M05-11 | ✅ 已修 | 5 |
| 127 | 在問卷資料夾列表送一個型別不對的條件，系統就把資料庫的原始錯誤訊息整句吐回畫面，資料表名稱、欄位名稱與查詢片段全攤開 | M05-12 | ✅ 已修 | 5 |
| 128 | 推進或退回階段時，畫面上顯示的操作者名稱可以由呼叫端自己填（真正代表身分的欄位是伺服器填的、不受影響） | M06-12 | ✅ 已修 | 5 |
| 129 | 使用者按「刪除整批」之後，判定結果與分類紀錄仍永久留在後端主機上——使用者以為刪乾淨了其實沒有 | M07-6 | ✅ 已修，1.21.0 出貨（CM-2227，套件 commit `ecddb72c`／`85370a17`） | 5 |
| 130 | AI 服務金鑰放在啟動指令的參數上，同一台主機任何帳號都讀得到 | M07-7 | ✅ 已修，1.21.0 出貨（CM-2061 驗證：開發機 CM-2193、落地版 CM-2223 已改成金鑰不上命令列） | 5 |
| 131 | 一份刻意做過手腳的壓縮檔，解開的當下就把主機記憶體吃光、連後端服務一起被系統砍掉；逾時後還留下清不掉的殘留程序繼續燒 AI 額度 | M07-8 | ✅ 已修，1.21.0 出貨（CM-2227，套件 commit `ecddb72c`／`85370a17`） | 5 |
| 132 | 證據分類程式用到的六個外部套件沒有鎖定版本、也沒有校驗碼，上游某個套件被掉包會直接裝進我們的產品裡——這是唯一一條攻擊者完全不必碰我們的系統就能得手的 | M07-12 | ✅ 已修，1.21.0 出貨（CM-2226，套件 commit `24e40b84`） | 5 |
| 133 | 系統向原廠回報「偵測到竄改」時，會把主機紀錄檔最後 50 行原封不動送出，那 50 行若剛好夾帶密碼或登入憑證就一起被送出去 | M08-6 | ✅ 已修 | 5 |
| 134 | 有正當權限的客戶管理員打開「儲存設定」頁時，瀏覽器就收到那把共用密鑰的明文——任何看得到他瀏覽器流量、存檔或前端錯誤紀錄的人都拿得到 | M22-3 | ✅ 已修 | 5 |
| 135 | 程式在刪除附件時算出了「該過濾掉哪些檔案」，接下來卻用回沒過濾的那一份清單；現在一次只傳一個檔案編號所以打不到，未來做了批次刪除會刪錯檔案而且不會報錯 | M23-7 | ✅ 已修 | 5 |
| 136 | 任何登入帳號在清單頁把「一頁顯示幾筆」送一個超大的數字，就叫資料庫一次把整張表撈出來（根源在全站共用底層，與 M04-7 同一件事） | M19-3 | ✅ 已修 | 5 |
| 137 | 系統自動產生的密碼比自家要求的最短長度少一個字元（要 12 給 11），可能通不過自家的規定 | 掃描總表 §3.2 第 12 | ✅ 已修 | 5 |
| 178 | 範本的「設備／資訊系統對照」清單任何登入帳號都讀得到，還附了真實資產主檔的內部編號 | M11-28 | ✅ **已修**（FR-114 CM-2186，commit `aafaa070d`，1.21.0 出貨） | 2 |
| 179 | 從框架版本下載「空白範本」，裡面附了全公司的使用者 email、全部設備名稱與 IP、全部資訊系統清單 | M11-31 | 🟡 **部分修**（FR-114 CM-2188，commit `7d62545c3`：決策者選 A，只依權限拿掉 email 與設備 IP，1.21.0 出貨） | 2 |
| 180 | 有建立範本權限的管理員上傳一個幾 KB 的特製 YAML 檔，伺服器展開時算到當掉 | M11-34 | ✅ **已修**（FR-114 CM-2190，commit `374392065`；錯誤碼改號 `3d97fcaf9`，1.21.0 出貨） | 5 |
| 181 | 有建立範本權限的管理員在 Excel 匯入檢核時送一格很長的怪字串，一個請求佔住處理程序兩分鐘 | M11-35 | ✅ **已修**（FR-114 CM-2181，commit `48638cbdb`，1.21.0 出貨） | 5 |
| 182 | 專案 A 的一般成員把「匯出任務 Excel」網址裡的計畫編號換成專案 B 的，匯出的是 B 的整張任務表 | M06-20 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 183 | 匯入任務的「驗證」「重新驗證」兩步完全不檢查身分，同一家客戶任何帳號都能拿錯誤訊息試探任務、帳號、部門存不存在 | M06-21 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 184 | 同一家客戶任何帳號拿一個任務編號，就查得到它卡在哪幾條分支，每條分支的任務編號都在裡面 | M06-22 | ⬜ 未修，歸 1.21.1 hotfix（CM-2289） | 1.21.1 |
| 185 | 操作日誌的「來源 IP」全部記成前端代理伺服器，出事時查不出是從哪台電腦來的 | M09-7 | ✅ **已修（FR-114 CM-2171，BE commit `908f9dd0e`，套件 jedi-iam commit `960d737e`）** | 5 |
| 186 | 沒買問卷模組的客戶，直接打網址照樣能用問卷「填答」那一半（選單反灰，但功能沒擋） | M05-14 | ✅ 已修，1.21.0 出貨（填答那半 CM-2194；經 AI 儀表板查問卷那個入口由 8-J，CM-2220，commit `80dedfbb5`／套件 `fb271590`） | 8-J |
| 187 | 同一家客戶任何帳號都看得到任何專案的「任務設定樹」（控制項、評估目標、被指派人姓名）；前端已經沒有畫面在用這支網址 | M12-4 | 🗑️ 裁定拆除，已拆除（CM-2176，commit `553381efe`，1.21.0 出貨） | 3 |
| 188 | 同一家客戶的非成員知道專案編號，就問得出那個專案「目前的 SSP」編號與狀態；前端沒有任何地方在用 | M12-5 | 🗑️ 裁定拆除，已拆除（CM-2176，commit `553381efe`，1.21.0 出貨） | 3 |
| 189 | 專案經理拿到稽核人員寫的「改善建議」編號，用「新增整改計畫」把它改寫、再刪掉——受稽核方改掉稽核方的紀錄（已裁：改善建議屬稽核方專屬） | M12-6 | ✅ **已修（FR-114 CM-2174，commit BE `a8f1a24b7`／套件 `b7022b8b`，1.21.0 出貨）** | 2 |
| 190 | 把稽核「判定」接到「風險」上時，套件不檢查兩者是不是同一份稽核結果；現在唯一的呼叫端有擋，是下一個呼叫端會踩到的地雷 | M11-29 | ✅ **已修**（FR-114 CM-2184，套件 commit `ae5ffff5`，1.21.0 出貨） | 5 |
| 191 | 「重新產生稽核計畫草稿」不看輪次階段，稽核中甚至已結案的輪次按一下，就換成一份空白計畫 | M11-33 | 🗑️ **已拆除**（FR-114 CM-2177，commit `1e0879815`） | 3 |
| 192 | 平台管理員上傳一份頁數極多的 CMMC PDF，解析時記憶體直線成長到撐爆（3MB、兩萬頁吃掉 3.4GB） | M11-36 | ✅ **已修**（FR-114 CM-2184，套件 commit `ae5ffff5`，1.21.0 出貨） | 5 |
| 193 | PDF 裡塞一行超長的字，判斷「這行是不是目錄」的比對會卡住工作程序兩分鐘 | M11-37 | ✅ **已修**（FR-114 CM-2184，套件 commit `ae5ffff5`，1.21.0 出貨） | 5 |
| 194 | Word 打不開時，錯誤訊息把伺服器暫存檔的完整路徑回給前端 | M11-32 | ✅ **已修**（FR-114 CM-2183，commit `c33f7e828`，1.21.0 出貨） | 5 |
| 195 | 任何登入帳號拿一個草稿版本的編號建資源庫，就能複製平台管理員還沒公開的控制項內容 | M11-30 | ✅ **已修**（FR-114 CM-2179，commit `94275d72f`，1.21.0 出貨） | 2 |
| 196 | 稽核員上傳的稽核計畫 Word 在標題或時段塞幾萬個空白，解析的比對卡住一條處理程序到逾時 | M12-8 | ✅ **已修（FR-114 CM-2181，commit BE `48638cbdb`／套件 `2cb9d2cd`，1.21.0 出貨）** | 5 |
| 197 | 兩張「解析工作單」資料表的隔離規則照抄了五月就判定壞掉的寫法，子公司看得到母公司的工作單（目前程式那一層還擋著） | M12-7 | ✅ **已修（FR-114 CM-2195，commit BE `56dd4cdc8`，1.21.0 出貨）** | 6 |
| 198 | 稽核員在「確認匯入稽核結果」前改掉送出的資料，塞一個不屬於這一輪的檔案或一個外部網址當佐證，系統照存；同事點開看到的就是他指定的東西 | M12-9 | ✅ **已修（FR-114 CM-2174，commit BE `a8f1a24b7`／套件 `b7022b8b`，1.21.0 出貨）** | 2 |
| 213 | 授權過期轉唯讀只靠每天一次的排程，讀授權時不當場重算；排程沒跑的期間過期客戶照常寫資料〔總表第 181 項〕 | M18-11 | ✅ 已修，1.21.0 出貨（8-G，CM-2217，commit `3ed47c7a9`／套件 `8ccfac73`） | 8-G |
| 214 | 首次安裝精靈的設定碼欄位塞中文或特殊字元，伺服器回 500，任何人都能灌假的錯誤警報（只在還沒開通時打得到）〔總表第 183 項〕 | M24-16 | ✅ 已修，1.21.0 出貨（8-E，CM-2215，commit `822216b6c`） | 8-E |
| 215 | 首次開通那一步沒上鎖，連點兩次可能建出兩家公司、兩個管理員；程式註解說資料庫會擋，實際沒有那條限制〔總表第 184 項〕 | M24-19 | ✅ 已修，1.21.0 出貨（8-F，CM-2216，commit `a02409392`） | 8-F |
| 216 | 授權過期的唯讀有兩個縫：代理程式那段網址被整段放行（過期還能產生註冊碼）、問卷即時填答通道不經過唯讀檢查〔總表第 187 項〕 | M18-13 | ✅ 已修，1.21.0 出貨（8-G，CM-2217，commit `3ed47c7a9`／套件 `8ccfac73`） | 8-G |
| 217 | 雲端硬碟授權連結沒有綁定發起的瀏覽器，轉寄給別家的人代按同意，對方的 Google 硬碟就被接進攻擊者的公司〔總表第 190 項〕 | M24-10 | ✅ 已修，1.21.0 出貨（8-H，CM-2218，commit `a671d0b64`） | 8-H |
| 218 | 「驗證雲端硬碟應用程式憑證」只查是不是平台管理員，沒查「儲存設定」功能權限〔總表第 191 項〕 | M24-12 | ✅ 已修，1.21.0 出貨（8-A，CM-2211，commit `fe928859f`） | 8-A |
| 220 | 雲端硬碟通知的通行碼比對不是固定時間比對，理論上可以用回應時間差慢慢猜〔總表第 196 項〕 | M24-11 | ✅ 已修，1.21.0 出貨（8-C，CM-2213，commit `a5804a990`／`bde8f9d16`） | 8-C |
| 221 | 依名稱找雲端資料夾時只處理單引號、沒處理反斜線，可能改寫搜尋範圍（與 #67 同一種寫法漏洞，不同一支程式）〔總表第 197 項〕 | M24-14 | ✅ 已修，1.21.0 出貨（8-C，CM-2213，commit `a5804a990`／`bde8f9d16`） | 8-C |
| 222 | 匯出任務 Excel 時，以公式開頭的欄位會被試算表軟體當成公式執行〔總表第 199 項〕 | M06-26 | ✅ 已修，1.21.0 出貨（8-C，CM-2213，commit `a5804a990`／`bde8f9d16`） | 8-C |
| 223 | 批次完成任務的通知信把操作者暱稱原樣塞進信件內容，改暱稱就能在信裡放看起來像系統發的釣魚連結（另兩處通知信同樣寫法）〔總表第 200 項〕 | M06-27 | ✅ 已修，1.21.0 出貨（8-C，CM-2213，commit `a5804a990`／`bde8f9d16`） | 8-C |
| 225 | 證據蒐集的執行進度只驗登入，同公司任何人換個專案編號就看得到別人專案的完成數〔總表第 202 項〕 | M10-22 | ✅ 已修，1.21.0 出貨（8-A，CM-2211，套件 commit `cdb83526`） | 8-A |
| 226 | 清理孤兒資料的排程若哪次沒帶身分，會把全部正常資料判成孤兒整批刪掉（今天有帶身分，不觸發）〔總表第 203 項〕 | M06-25 | ✅ 已修，1.21.0 出貨（8-A，CM-2211，commit `fe928859f`） | 8-A |
| 227 | 匯出診斷包時起始時間帶時區、結束不帶，程式當掉回 500，維運匯不出診斷包〔總表第 206 項〕 | M24-17 | ✅ 已修，1.21.0 出貨（8-D，CM-2214，commit `d39181f3b`／`046553756`） | 8-D |
| 228 | 出貨主機預先蒐集診斷資料時照索引檔的路徑讀檔，沒限制在暫存目錄內，能動索引檔的人可以讓診斷包帶走別的檔案〔總表第 210 項〕 | M24-18 | ✅ 已修，1.21.0 出貨（8-D，CM-2214，commit `d39181f3b`／`046553756`） | 8-D |
| 229 | 系統診斷包收的連線紀錄裡，網址欄不在遮罩清單上〔總表第 211 項〕 | M24-13 | ✅ 已修，1.21.0 出貨（8-B，CM-2212，commit `c8534bfcb`／`8f5755f1d`） | 8-B |
| 231 | 人員對帳收了公司編號卻沒用，平台管理員身分下會拿所有客戶的人員資料比對（結果只寫附註、不影響權限）〔總表第 214 項〕 | M11-40 | ✅ 已修，1.21.0 出貨（8-A，CM-2211，commit `fe928859f`） | 8-A |
| 232 | 系統安全計畫的 Word／Excel 兩張解析工作單表，資料庫的新增規則寫成「一律允許」（與 #197 同一種形狀，換了兩張表；今天程式那層擋著）〔總表第 215 項〕 | M11-41 | ✅ 已修，1.21.0 出貨（8-E，CM-2215，commit `822216b6c`） | 8-E |
| 234 | AI 儀表板的生成功能只檢查有沒有買模組、不檢查角色有沒有這項功能權限，選單看不到的人直接打網址照用，每次付兩次 AI 費〔總表第 218 項〕 | M15-7 | ✅ 已修，1.21.0 出貨（8-J，CM-2220，commit `80dedfbb5`／套件 `fb271590`） | 8-J |
| 138 | 能連進資料庫的人看得到全部客戶的運作紀錄，那兩張紀錄表沒有客戶隔離（已裁定不修：登入失敗、系統啟動、背景排程這類紀錄天生分不出客戶，且落地版一家客戶一套資料庫） | M04-4＋M04-5 | 🚫 裁定不修 | — |
| 139 | 主系統連內部暫存資料庫時，寫死成不確認對方是不是真的那台伺服器（已裁定不修：跑在容器內部，要攔線得先進主機，而那時直接讀設定檔更快） | M04-6 | 🚫 裁定不修 | — |
| 140 | 程式一載入就自動對外連一條不加密的監控連線，哪天有人架起接收端，追蹤資料就會以明文送出去 | M04-10 | ✅ 已修 | — |
| 141 | 客戶隔離用的設定值是用字串拼接組進查詢語句（已裁定不動：三個值目前都是乾淨的，部門路徑根本沒人填） | M04-13 | 🚫 裁定不修 | — |
| 142 | 機器被鎖住後顯示的鎖定畫面，會把機器指紋與鎖定事件編號顯示給任何打得開這個系統網址的人看（已裁定不修：那兩個值本來就是報修識別碼，要換解鎖檔必須過原廠人工窗口） | M08-5 | 🚫 裁定不修 | — |
| 143 | 「這則公告要發給哪些部門」那張關聯表沒設客戶資料隔離（已裁定不補：那張表只存兩個編號沒有內容，且要查它得先有公告編號、主表擋得住） | M17-5 | 🚫 裁定不修 | — |
| 144 | 兩家客戶在極短的時間窗內同時匯入同一張授權檔，兩邊都會成功 | M18-9 | ✅ 已修 | — |
| 145 | 公告模組更新公告時檢查錯對象、查無此筆時會對空值做設定直接出錯；沒有登入身分時建立公告會讓程式崩潰 | 掃描總表 §3.2 第 9／10 | ✅ 已修 | — |
| 219 | 雲端硬碟通知的程式註解說有「重複通知去掉」，實際沒做；同步重跑不會出錯，只是多跑一次〔總表第 195 項〕 | M24-15 | 📋 已裁不修，只記錄 | — |
| 224 | 流程圖編輯器存檔時刪掉方塊，會連同底下的證據硬刪別人專案的任務，不問操作者是不是那個專案的管理人〔總表第 201 項〕 | M06-24 | ✅ **已修，1.21.0 出貨**（CM-2208，commit `1516d90bc`） | — |
| 230 | 即時通知有一個頻道不驗身分、任何人都能加入任意房間；今天伺服器不往那裡送資料、前端元件也沒接在畫面上，元件接回畫面前要先補驗證〔總表第 213 項〕 | M24-9 | 📋 已裁不修，只記錄 | — |
| 233 | 防竄改記下的「旁證」裡，來源 IP 讀的是用戶端自己可以填的欄位，出事時追不到真正來源〔總表第 216 項〕 | M08-7 | ✅ **已修，1.21.0 出貨**（FR-114 CM-2171，BE commit `908f9dd0e`） | — |

---

## 分析與結論

### 一、這些問題不是散的，是十三種形狀反覆出現

把 234 件攤開來看，真正的訊息不在任何單獨一條，而在**同一種錯誤反覆出現在不同的人、不同的模組、不同的時間**。

| 組 | 這組是什麼形狀 | 出現在哪幾塊 | 處理方向 |
|---|---|---|---|
| **A. 只驗登入、不檢查歸屬** | 知道你是誰，但不問「這筆資料是你的嗎」 | **最大的一組**：檔案、稽核流程、問卷、任務成員、弱點檢測、設備清冊、意見回饋、合規文件核心、稽核輪次 | 補一行去問權限地基那一塊（第 1、2 批） |
| **B. 鑰匙掛在牆上** | 拿到憑證就繞過所有檢查 | 檔案、代理程式、系統設定、寄信、日誌 | 各自獨立處理（第 5 批） |
| **C. 想到了，只做了一半** | **不是沒想到，是做了一部分就停了**——這一輪一共看到八種長相（見下方） | 代理程式、檔案、問卷、系統設定、稽核流程、**合規文件核心（最集中）**、稽核輪次 | 把另一半補完；驗收時每個入口逐一列 |
| **D. 信任鏈的起點沒人守** | 驗證工具自己不在被驗證範圍內 | 防竄改 | 把那個零件編進核心（第 5 批） |
| **E. 客戶層級的權限改到全系統共用那一份** | 客戶的管理員改得動全系統的設定 | 系統設定、日誌、寄信 | 登入規則、寄信：只有客戶組織樹第一層能改；**日誌轉送：只給平台管理員**（全系統只有一條轉送管道，限縮到總部也擋不住）（第 5 批） |
| **F. 進來照實記，交出去沒把關** | 該編碼的沒編碼，匯出的檔案被當成公式執行 | 日誌、意見回饋、**合規範本（六個關卡擋了零個）** | 共用函式把儲存格標成純文字、內容一字不改（第 5 批） |
| **G. 有正確版本但沒用** | **東西寫對過，但被重做的時候沒跟上** | 稽核流程、防竄改 | 改回用已經寫對的那一份 |
| **H. 宣告了權限，只有畫面在認** | 後台把權限關掉，選單藏起來了，後端照樣回全部資料 | 弱點檢測、設備清冊、意見回饋、AI 儀表板 | 四處一致裁定「後端補檢查」 |
| **I. 沒人用的入口也是入口** | 現在無害的唯一理由是「沒人用它」 | 稽核流程、意見回饋、共用基礎、任務成員 | **一致裁定直接刪掉**（第 3 批） |
| **J. 憑證寫進版控** | 帳密與金鑰躺在程式庫與文件裡 | 意見回饋、公告、寄信、AI 儀表板 | **全部已撤銷換發**，剩清殘留字串（第 4 批） |
| **L. 上傳的檔案只量大小、不量解開後多大** | 幾 KB 到幾 MB 的特製檔，讓處理程序卡住或記憶體爆掉；落地版只有 4 條處理程序，**四個請求就全停** | 合規文件核心（Word／Excel／PDF／YAML）、稽核輪次（Word／Excel）、弱點檢測、證據分類，以及**不必登入的那一條**（共用基礎） | 按入口分卡：壓縮炸彈四個入口一張、特製 Word 六處一張（第 5 批） |
| **M. 修好的錯被照抄回來** | 一個錯修好之後，新建的東西照抄的是修正前的寫法 | 授權管理、稽核輪次 | 新建資料表時，隔離規則當成必檢項目、不照抄隔壁 |
| **K. 報告寫的是「當時」，事實後來變了** | 見下一節，這組性質不同 | 共用基礎、任務成員、AI 儀表板、公告、寄信、授權 | 方法論層級的發現 |

::: {.callout .warn}
**A 組為什麼最值得看**

它不只是「數量最多」，而是**同一個根本原因已經被不同的人、在不同的模組裡，各自重新犯了一次**。

2026 年 7 月曾經做過一次統一補權限的工作。問卷那塊這次逐個入口點名去數的結果是：**6 個「寫」的入口全部有檢查，8 個「讀」的入口一個都沒有**——而且是同一個服務檔案裡，寫入的方法掛了守門、讀取的方法沒掛。

**當初補的是「別人改你的答案」，沒有人問「別人讀你的答案」。** 這說明它不是零星漏掉，是**補洞當時的思考範圍就只涵蓋了一半**。

**所以往後任何一次補權限的工作，驗收都要把讀取的入口分開數一遍。**
:::

::: {.callout .warn}
**C 組在合規文件核心那塊一次出現八種長相**

那一塊底下 45 張資料表沒有客戶隔離，程式那一層是唯一關卡，而那一層反覆「守了一半」：

| 長相 | 例子（總表 #） |
|---|---|
| 同一支程式隔幾行，一守一不守 | #46（改分享範圍有查、改控制項清單沒查）、#159（檢查被包在一個判斷式裡） |
| 兄弟入口，一個掛一個沒掛 | #162 |
| 同一支檔案，寫入都守、讀取漏掉 | #157、#158、#161、#163 |
| 從別處複製過來，只補了寫那一半 | #163、#164 |
| 三個入口，只查過其中一個 | #148 |
| 六支方法，只有一支真的漏 | #165 |
| 同一件事兩個入口、兩套門 | #168（畫面上改要修改權限，匯入只要建立權限） |
| 檢查甲、動手改乙 | #64、#160，以及規劃頁任務的五個入口（#169～#171、#182～#184） |

**這一組推翻了一個盤點方法**：合規範本那一塊原本被裁定「守門看起來完整、不必單獨查」——理由是 25 個入口有 15 個掛了權限檢查。單獨查下去，八輪各找到一種漏法。**判斷一塊安不安全，不能數「有幾支掛了守門」，要看「掛的那道問的問題對不對」。**
:::

### 二、🔴 報告寫的是「當時」，事實後來會變（這一輪最有價值的發現之一）

這一組要單獨講，因為它**不是產品的問題，是我們做這件事的方法本身的問題**。

內化過程中逐塊回頭查證，結果是：**查過的每一塊，都找到報告與現況對不上的地方**——數字變了、描述不準、標成「已修」的其實沒修。六塊的關鍵事實在報告寫完之後就變了：

| 報告寫的 | 後來的事實 |
|---|---|
| 共用基礎：「已搜尋四個紀錄檔確認明文零筆」 | ❌ 實際十個檔有明文（當場清掉了） |
| 任務成員：兩個招牌數字 751 筆與 12,494 筆 | ❌ 跨客戶的部分已歸零——**報告寫完四小時後**另一批工作補上了資料庫那道牆 |
| AI 儀表板：「打字就拿到全公司帳號名冊」 | ❌ 現在打不通 |
| 公告：「正在外洩」 | ❌ 現在會當場出錯 |
| 寄信：兩條標「已修」 | ❌ 當時只修一半 |
| 授權：第 1 條標「已修」 | ❌ 從資料庫那層又開回來 |

::: {.callout .crit}
**🔴 最重要的一句：「被意外擋住」不等於「修好了」**

AI 儀表板與公告那兩條，**擋住它們的都是一個跟資安完全無關的改動**——有人為了別的目的改了程式，副作用剛好讓攻擊路徑走不通。

**守門的缺失一點都沒有變。** 哪天有人把那個改動修回去——**而且那看起來會完全像是在做正確的事**——洞立刻恢復，不會有任何人發現。

所以這兩條在總表裡**照樣算「未修」**，不因為現在打不通就降級。
:::

**這帶出三條往後都適用的規矩**：

1. **報告有保存期限。** 每一份檢視報告都該標清楚它描述的是哪一天的狀態，隔一段時間要回頭複驗。
2. **「現在打不到」要寫清楚是誰擋住的。** 是我們刻意修的，還是碰巧被擋住的——這兩件事在報告上必須長得不一樣。
3. **標「已修」的一律要實際驗過才能標。** 這一輪抓到三處標了已修但實際沒修或只修一半。

### 三、一條沒人串起來的線：「帳號可以沒有部門」

這個模糊狀態，在兩個地方造成**完全相反**的結果：

| 哪裡 | 沒有部門的人會怎樣 |
|---|---|
| **公告** | **全部看得到**——過濾整個跳過 |
| **意見回饋** | **什麼都送不出去**——被資料庫規則擋住 |

**共同根因是同一個**：全系統從來沒有規定過，這種帳號應該看到什麼、能做什麼。**兩邊的作者各自做了相反的假設，各自寫在自己那一層，沒有人對齊。**

已裁定兩邊分開處理（公告改成發送對象必選、意見回饋放寬那條規則），**但這個形狀值得記住**：只要系統裡存在一個「沒有人規定該怎麼辦」的狀態，每個碰到它的人都會自己猜一個答案，而且**猜的方向不會一致**。

### 四、這一輪查得到與查不到的界線

**2026-09-20 曾經止損**：當時判斷檢視工具本身不可靠（一批 17 小時零產出、一批完成紀錄被誤刪），繼續投入不划算。**2026-09-21 決策者裁定重啟**，換了兩個做法之後，剩下的兩塊與各模組的主系統接線在四天內查完：

- **跨兩處程式的範圍分兩次掃**——工具一次只能看一個程式庫，範圍跨兩邊時另一邊會被**安靜丟掉、不報錯**，所以每輪分兩次、再手動核對接縫。
- **工具零發現的那幾輪，由執行者自己做惡意檔實際去打**——這一輪好幾條資源耗盡的問題，工具一條都沒提，是實測量出來的。

同樣要講清楚的是**查得到與查不到的界線**：

- **任務與成員管理**原訂七輪、做完三輪主動停止，**還有約 86 個檔案沒碰過**。
- **主系統自己的程式**已在 09-25～26 用 14 輪查完（見〈[一頁摘要](#not-yet-scanned)〉），其中有四條沒經過三票覆核、一輪工具零疑點——同樣只能說「查出的這些確實存在」。
- **好幾輪雖然跑完，但覆核沒跑完整、或沒有留下「每個檔案都看過」的紀錄。** 我們能說的是「**這幾條問題確實存在**」，不能說「**這些檔案只有這幾條問題**」。各模組頁的檢視軌跡逐輪標明了。

**「還沒查」跟「查過沒事」意義完全不同。** 這句話在這份報告裡出現很多次，是刻意的。

---

## 修正建議 {#修正建議}

**只列順序，不列日期**——什麼時候做是排程決定，不是這份報告能代答的。

**排序的兩個判準**：① 先修「別人要靠它」的地基；② 同一套修法併成一批，批與批之間互不相依，才能分頭進行。

| 批 | 內容 | 為什麼排這裡 | 動到哪裡 | 能不能平行 |
|---:|---|---|---|---|
| **1** | **權限地基**——任務與成員管理那組檢查、任務操作的角色規則（誰能完成任務、誰能上傳佐證、誰能審核問卷）、稽核流程第 7 條、弱點掃描 8 支同道檢查 | **其他模組「補檢查」全都是呼叫這一塊**。它沒有定好，後面每一批都在猜 | 任務平台、稽核流程、問卷、弱點檢測、主系統 | 🔴 **要先做** |
| **2** | **只驗登入、不檢查歸屬**（A 組、C 組與 H 組）——檔案、弱點檢測 8 支、問卷 7 條、設備清冊、意見回饋、AI 儀表板、稽核流程讀取、任務成員、**合規範本與系統安全計畫（最大的一片）、稽核輪次十支讀取、規劃頁任務五個入口** | 修法就是「補一行去問第 1 批」，**機械活** | 各套件＋主系統 | ✅ 第 1 批完成後**按模組平行**，一個模組一份工作區 |
| **3** | **刪除沒人用的功能**（I 組）——稽核流程兩條、意見回饋成員名冊、共用基礎那支開發工具、任務成員三處寫入、「專案任務設置」整頁、登入權限那份快取複製品、**稽核輪次六支退役網址**（任務設定樹、目前系統安全計畫、更新稽核計畫、重新產生草稿等） | 零引用已經查證過、彼此不相干 | 主系統、前端、套件 | ✅ **現在就能開始**（不依賴前面） |
| **4** | **清版控裡的憑證殘留**（J 組）——散落的密碼字串、打包腳本那組帳密 | 純機械，**密碼本身都已經換發完畢**，剩下的是打掃不是堵漏 | 主系統、前端 | ✅ **現在就能開始** |
| **5** | **設定與信任鏈、資源耗盡**（B／D／E／F／G／L 組）——代理程式身分驗證、防竄改、客戶層級設定改到全域、停權即時生效、**上傳檔案的總量上限**（不必登入的那一條與另一張未發版修正同批出貨）、惡意公式 | 各自獨立，**但每一條都有設計判斷要人決定**，不能當機械活發包 | 代理程式、主系統、登入權限套件 | ✅ 可平行，但每條都要人看 |
| **6** | **資料庫最後一道牆**——SaaS 版那 53 張表，併合規文件核心一起；兩張解析工作單表的壞規則一起改、出貨基線重產 | 決策者裁定的順序：**程式面先修 → 測過一版 → 再開牆**。先開牆容易把正在用的資料藏起來 | 資料庫調整 | ⏸ **最後做** |

::: {.callout .warn}
**三個已知的坑，開工前要先知道**

1. **第 1、2 批幾乎全在套件裡**——工作區要主系統與套件各開一份，並且把主系統的相依設定指向套件的工作區（**這個改動不要提交**）。
2. **同一支程式常常有兩個入口**——開工單時要把**每一個入口的檔名與行號逐一列成驗收項**。這一輪已經吃過虧：同一個問題修好一個入口、另一個原封不動，而驗收看起來是綠的。
3. **舊的 41 張修正工單與分組草案已作廢**——平行作業的人很容易撿到過期的那份，**開工前先確認是照這張總表**。
:::

### 這一輪新裁定的十九件（2026-09-25）

合規文件核心、稽核輪次那兩塊查完後，帶出十九件要決策者拍板的事，已全部裁定。**影響修法的那幾件已經寫進上面問題總表的「怎麼修」**，這裡只列摘要：

| 裁了什麼 | 結果 | 影響哪幾件 |
|---|---|---|
| 沒人在用的網址：補守門還是拆 | **拆**——任務設定樹、目前系統安全計畫、更新稽核計畫、重新產生草稿等六支 | #187、#188、#191 |
| 稽核人員寫的「改善建議」，專案經理能不能改 | **稽核方專屬**，拒絕覆蓋與刪除 | #189 |
| 稽核團隊名單那支的修法擋不住跨客戶 | **退回重修**，改成「查不到輪次就回找不到」 | #57 |
| 刪框架版本時「還有沒有人在用」要怎麼查 | **三處一起改**成查「有沒有客戶資源庫引用這個版本」 | #156 |
| 凍結的系統安全計畫，模組本體要不要再擋一道 | **要**——模組自己定義了凍結，就自己擋 | （防線加固，不在總表） |
| 複製計畫時內部指向沒換新 | **修程式、舊的凍結快照不動**（凍結的證據不事後改） | 非資安，見 [M11](M11-oscal.html) 第 38、39 條 |
| 「捨棄解析工作單」、查詢時輪次編號 | **收緊**、**改必填** | 模組本體的小修，同一次發版 |
| 開發環境那個帶「超級管理員」旗標的子公司帳號 | **是測試資料**，STG／POC 查過是乾淨的 | 不開卡 |
| 主系統自己的程式要掃哪些 | **14 輪**：任務入口與批次、權限共用層、系統設定守門與人員對帳補掃；組裝設定檔先寫程式比對、再掃沒碰過的 17 支（已全部查完） | 見〈[一頁摘要](#not-yet-scanned)〉 |

**要發新版的外部模組**：

| 模組 | 這次要一起發的 |
|---|---|
| **合規文件模組**（jedi-oscal-v2） | PDF 解析兩條（#192、#193）、凍結的第二道防線、複製與再匯入的指向修正（非資安兩條）、兩項依賴清理——**一次發** |
| **稽核流程模組**（jedi-compliance-audit） | 拆兩支沒人用的網址、改善建議拒絕覆蓋、守門參數改必填、捨棄工作單收緊、輪次編號改必填、壓縮炸彈與讀到最後一列（#176、#177）——同一次發 |
| **共用基礎模組**（jedi-common） | 遮密碼那段比對改寫（#149），**與那張已完成、還沒發版的修正同批出貨** |

### 第 8 批：主系統掃描與剩下的尾巴（2026-09-26 裁定）

主系統掃描查出的與前面剩下的尾巴，經決策者逐項裁完，按「同一套修法」分成 12 組、每組一張卡。**12 組都已修完，隨 1.21.0 出貨**；各條的修正版本記在問題總表狀態欄。

| 組 | 卡號 | 做什麼 | 涵蓋總表 |
|---|---|---|---|
| **8-A** | CM-2211 | 補「這東西屬不屬於你」的檢查：還原摘要報告歷史版本、證據蒐集進度、人員對帳、驗證雲端硬碟憑證、孤兒資料清理 | #209、#225、#231、#218、#226 |
| **8-B** | CM-2212 | 診斷包與伺服器紀錄的密碼遮罩一次補齊（各種密碼寫法、資料庫紀錄、打包前統一過一道），**不再一次只補一種寫法** | #204、#211、#229、#173 剩下那半 |
| **8-C** | CM-2213 | 輸出前把內容轉成安全寫法：摘要報告 PDF 不准抓外部網址、任務 Excel 防公式、通知信暱稱轉純文字、雲端硬碟搜尋與通行碼比對 | #208、#222、#223、#221、#220 |
| **8-D** | CM-2214 | 診斷指令與診斷包的暫存路徑：隨機暫存資料夾、只讀暫存目錄內的檔、時間格式統一 | #210、#228、#227 |
| **8-E** | CM-2215 | 零散小修：安裝精靈設定碼特殊字元、兩張解析工作單表的新增規則、拆掉沒人用的服務註冊 | #214、#232、#118 剩下那半 |
| **8-F** | CM-2216 | 首次開通加鎖，連點兩次不會建出兩家公司 | #215 |
| **8-G** | CM-2217 | 授權到期那一刻起即唯讀，排程延遲與放行太寬兩個縫都補 | #213、#216 |
| **8-H** | CM-2218 | 雲端硬碟授權綁定發起的瀏覽器，轉寄給別人按會失效 | #217 |
| **8-I** | CM-2219 | 關掉 `/static/` 公開下載路徑（已查證沒有任何功能靠它） | #203 |
| **8-J** | CM-2220 | AI 儀表板補功能權限與「有沒有買問卷」的檢查，要一起發新版 AI 儀表板模組 | #234、#186 剩下那半 |
| **8-K** | CM-2221 | 權限檢查寫成「零件沒接上就放行」的幾處改成「沒接上就拒絕」；掃描設定檔的「分享給子公司」建立時就要生效 | 掃描總表待裁清單兩項（防線加固，不在本表） |
| **8-L** | CM-2222 | 證據分類舊線整條退場（前提已查：STG／POC 舊線資料都是 0 筆），連帶把分類容器收進出貨包、再驗證證據分類那幾條是否還在 | #9、#66、#67（#89、#129～#132 驗證後仍在，另由 CM-2225～2227 修完） |

::: {.callout .decided}
**第 8 批隨 1.21.0 出貨時做了的三件事**

1. **release note 寫進三句**：授權到期即唯讀、`/static/` 不再對外提供、雲端硬碟授權要在同一個瀏覽器完成。
2. **新客戶安裝用的資料庫結構已重產**：帶上 8-E 兩張表的新規則、8-K 的分享範圍。
3. **實際裝過一次測**：8-D 改了安裝指令稿、8-F 改了開通流程、8-L 動了出貨包。
:::

### 這一輪裁定、不修程式的三件（2026-09-26）

| 裁了什麼 | 結果 | 寫在哪 |
|---|---|---|
| 系統日誌與 API 連線日誌要不要按客戶隔開 | **不隔開**：定位是「只給原廠維運看的全系統資料」，畫面上本來就只有平台管理員看得到；哪天要讓客戶自己看，要先回頭做隔離 | [系統日誌](M09-log.html#log-positioning) |
| 專案的系統安全計畫要不要另加一組功能權限 | **不加**：維持看專案角色（管理者可改、成員只能看）；資源庫裡的範本看合規資源庫權限（已補齊） | [合規文件核心](M11-oscal.html#ssp-permission) |
| 曾發到公開文件站的三組帳密要不要換 | **不換**：三組都是測試用；文件裡的密碼已全部改成指路文字、文件站建置時自動擋下密碼字串（CM-2207） | [遠端代理程式](M01-remote-agent.html#item5) 第 5 條 |

### 決策者裁定、不修程式（2026-09-28）

| 裁了什麼 | 結果 | 寫在哪 |
|---|---|---|
| 免登入的版本端點 `GET /api/1.0/version`（回版號＋程式碼識別碼）要不要收緊 | **不動**：FR-120 U3 掃描判乾淨（不含路徑／IP／環境變數）；前端 bundle 本就烙了同一組版號＋commit 給錯誤追蹤用，版號早已公開；repo 與 release note 私有，識別碼對不回原碼；落地版在客戶內網。外部健康檢查與 e2e 歸檔管線依賴它。若日後要收緊，唯一划算的是拿掉 `commit` 只留版號 | [主機殘留](M24-host.html) U3-⑤ |

---

| 你想知道 | 看哪裡 |
|---|---|
| 某一塊查了什麼、結果如何 | [回總報告首頁](index.html) 的〈檢視項目一覽〉 |
| 我們用什麼方法查、結果有多可信 | [檢視方法與工具](GUIDE-01-method-and-tools.html) |
