# 第 1 批材料（13 件）——機械抽取，供寫派工計畫用


## SUMMARY #37｜出自 M03-14＋M06-7｜⬜ 未修

產品定義上「只能看、沒有待辦」的一般成員，可以完成別人的稽核任務、把流程退回上一關，稽核紀錄上的經手人就變成這個只能看的人；弱點掃描那邊有 8 支會改狀態的功能吃的是同一道守門


### 模組頁列
M03 第 14 條（M03-detection.md:131）
| **14**<br>⚠️ **不計入本塊條數** | **只能看、沒有待辦任務的「唯讀角色」，其實可以對客戶的正式機器發動帶帳密的掃描**<br>**（這條是「稽核流程」那塊已登記問題的波及範圍，不是本塊的新發現）** | 🟡 中 | 只驗登入、不檢查歸屬 | 這一塊有八支會改狀態的功能（開始掃描、取消、重跑、刪紀錄等）**吃的是同一道「任一角色都放行」的守門**。決策者已裁定唯讀角色不該能動別人的任務——**但修法若只改流程那塊原本記的兩支，這八支仍然對唯讀角色敞開** | 補「呼叫者是不是這個任務的負責人、或這個專案的管理者」這道檢查，**範圍要涵蓋這八支** | ⬜ **未修**（**跟著原問題一起修**；決策方向已裁，範圍要擴大） |


### 模組頁列
M06 第 7 條（M06-flow-engine.md:82）
| **7** | 一般成員（定義上「只能看、沒有待辦」）可以完成別人的稽核任務、把流程退回上一關 | 🟡 中 | 要先做產品決策 | **稽核紀錄上的經手人會變成這個只能看的人**，連帶任務、問卷、流程的狀態都被他改動。**影響面比表面大**——弱點掃描模組有八支會改狀態的功能吃的是同一道檢查，所以他同樣可以對客戶的正式機器發動帶帳密的掃描、反覆取消再重派、刪掉失敗的執行紀錄 | **決策者已裁定：這個角色不可以完成或退回任務，只能留言**。修法是在原本的「是不是這個專案的人」之後，再加一道「是不是這個任務的負責人、或是這個專案的管理者」 | ⬜ **未修**（決策已裁定，修法方向確定） |


## SUMMARY #38｜出自 M05-6｜⬜ 未修

在自己有權限的那份問卷上按「還原歷史版本」時，指定別部門問卷的版本編號，就能把別人的答案複製進自己這一份裡


### 模組頁列
M05 第 6 條（M05-survey.md:78）
| **6** | 還原歷史版本時不檢查「你指定的版本是不是這份問卷的」 | 🟡 中 | 只驗登入、不檢查歸屬 | **可以把別部門問卷的答案複製進自己有權限的那一份裡**——這不只是看到，是把別人的內容搬進來 | 取出版本後比對它屬不屬於當前這份問卷，不同就拒絕。**這條是還原動作、屬於「寫」**，權限照舊走嚴的那條（被指派人本人或專案管理者），不跟著讀取放寬 | ⬜ **未修** |


## SUMMARY #39｜出自 M05-8｜⬜ 未修

有問卷修改權限的人可以改掉別人寫的討論內容、而且改完還掛著原作者的名字；刪除是直接從資料庫抹掉、不留痕跡


### 模組頁列
M05 第 8 條（M05-survey.md:80）
| **8** | 改／刪問卷討論不檢查是不是本人寫的，改完還掛原作者名字 | 🟡 中 | 只驗登入、不檢查歸屬 | **門檻不是零**——要按得動改／刪，得先有問卷的修改或刪除權限，一般登入帳號動不了。**但那道權限只問「你有沒有改問卷的權力」，不問「這則留言是不是你寫的」**，所以有問卷權限的人可以竄改別人的討論內容、**而且改完還掛著原作者的名字**；刪除是直接從資料庫抹掉、不留痕跡。**對稽核產品來說，討論紀錄被改而看不出來是實質缺陷** | **改**：一律禁止改別人的，動手前先載出那則留言比對建立者，不是本人就拒絕。**刪**：管理者可以刪別人的，但要另開一條寫明白的管理路徑，刪掉之後記成「由某某管理員移除」，**不能讓留言憑空消失** | ⬜ **未修** |


## SUMMARY #40｜出自 M06-4｜⬜ 未修

「檢查流程圖」這支功能任何登入帳號都能打，同一個檔案裡其他功能都掛了權限檢查只有它沒有，送進來的內容也不限大小


### 模組頁列
M06 第 4 條（M06-flow-engine.md:79）
| **4** | 「檢查流程圖」這支功能任何登入者都能打，而且不限大小 | 🟡 中 | 只驗登入、不檢查歸屬 | 同一個檔案裡其他功能都掛了權限檢查，**只有這一支沒有**；送進來的內容也沒有長度上限、節點數與連線數都不設限。⚠️ **原本報告寫「打幾次就讓全站停擺」，實測後確認不成立**（它走的是另一套檢查邏輯，處理一千個節點只要 0.027 秒），該敘述已移到第 3 條。目前的實質影響是「沒有權限的人可以用它，而且可以丟很大的東西進來」。**之所以還是中、沒有降到低**：低通常留給「有別的關卡擋著、實際打不到」的情形，**這一條一道關卡都沒有**，只是打進來的後果輕 | 補權限檢查、加內容長度與節點數上限——見[下方這一節](#check-endpoint) | ⬜ **未修** |


## SUMMARY #41｜出自 M10-6｜⬜ 未修

任何人自己開一個新專案（自動是管理者），送出指派時「專案填自己的、任務填別人專案的」，系統只查他是不是自己那個專案的管理者就放行


### 模組頁列
M10 第 6 條（M10-task-platform.md:100）
| **6** | **指派任務**：小明自己開一個新專案（他自動是管理者），送出指派時「專案填自己的、任務填別人專案的」，系統只查他是不是自己那個專案的管理者，就放行 | 🟡 中 | 只驗登入、不檢查歸屬 | **任何人只要自己開一個專案，就能把別人專案的任務登記成自己的指派**。更麻煩的是主系統靠這張表反查任務屬於哪個專案，**塞一筆假紀錄可能騙過那道判斷，進而改動別人專案的任務狀態** | 寫入前先由任務反查它真正屬於哪個專案，跟填進來的比對，對不上就拒絕（同一個檔案的刪除功能已經是這個寫法） | ⬜ **未修** |


## SUMMARY #42｜出自 M17-1｜⬜ 未修

改公告、刪公告只問「你能不能改公告」，不問「這則是不是你發的」，一個部門的編輯者能改掉或永久刪掉別部門的公告


### 模組頁列
M17 第 1 條（M17-bulletin.md:69）
| **1** | 改公告、刪公告只問「你能不能改公告」，從不問「這一則是不是你的」 | 🟡 中 | 只驗登入、不檢查歸屬 | **別部門發的公告被人竄改或刪掉**。公告是大家會相信的內容，一則被動手腳的公告能直接誤導全公司。**而且刪公告是整筆從資料庫移除、內容救不回來**；改的時候若沒帶發送對象，還會**靜默清空**——那則公告就變成所有人都看得到 | 改與刪之前先確認「這則公告是不是自己發的」 | ⬜ **未修**（決策者裁定先不開工單，待統一安排） |


## SUMMARY #43｜出自 M19-1｜⬜ 未修

管理員把某人的「查看設備」權限關掉，那人只是側邊選單看不到入口，把網址貼上去照樣打開整張設備與資訊系統清冊（主機名稱、網路位址、機密性等級與負責人）


### 模組頁列
M19 第 1 條（M19-asset.md:64）
| **1** | 兩張清冊的「讀取」功能只檢查有沒有登入、不檢查權限——**而且程式碼裡寫明這是刻意的取捨** | 🟡 中 | 要先做產品決策 | **管理員以為自己收掉了某人的查看權限，其實沒有**。被刻意拿掉權限的帳號（例如約聘人員、外部顧問）只要把網址貼上就進得去，一樣拿得到該客戶完整的設備清冊（主機名稱、網路位址、作業系統版本）與資訊系統清冊（各系統的機密性等級、部署模式、授權邊界、負責人）——**等於把客戶內部網路的組成與整體安全態勢攤開**。跨客戶仍被擋住，外洩範圍在同一家客戶內 | **已裁定要修**：照同一支檔案裡寫入功能的既有做法，七支讀取功能各加一道檢查，用現成機制不必造新東西。⚠️ 補的同時**必須把那顆權限補進唯一沒有它的那個角色**，否則五個地方的下拉選單會安靜變空（見下方展開） | ⬜ **未修**（已裁定要修，工單待開） |


## SUMMARY #44｜出自 M21-3｜⬜ 未修

一個沒有被分配部門的一般使用者送意見回饋一定會失敗，而且畫面不給任何理由；新客戶剛裝好、部門還沒建起來時特別容易踩到


### 模組頁列
M21 第 3 條（M21-issue-rescan.md:95）
| **3** | **沒有被分配部門的一般使用者，送意見回饋會失敗、而且畫面看不出原因** | 🟡 中 | 要先做產品決策 | 這不是資安漏洞，是**一個完全靜默的功能故障**：管理員去查這個人的權限，每一項都對，就是送不出去，畫面也不給任何理由。**新客戶剛裝好、部門還沒建起來的時候特別容易踩到** | ✅ **已裁定：放寬那條資料庫規則**——送意見回饋跟你在哪個部門本來就無關 | ⬜ **已裁定修法**（待排工） |


## SUMMARY #45｜出自 M23-2｜⬜ 未修

任何一個一般員工在意見回饋頁面上，就能改掉或刪掉別人的回饋，連帶把開發團隊正在處理的那張外部問題單也一起關掉，而稽核紀錄還會把操作人記成合法本人


### 模組頁列
M23 第 2 條（M23-issue.md:66）
| **2** | **七個意見回饋操作裡只有「匯出」檢查權限**，其餘六個任何登入帳號都能用；改別人的、刪別人的也從不檢查是不是自己的。整個模組對外九支入口，**八支只驗登入** | 🟡 中 | 只驗登入、不檢查歸屬 | **這是目前所有問題裡唯一一條「一般員工現在就能實際操作利用」的**，不需要任何特殊權限。任何員工可以刪掉或竄改別人的回饋，**連帶把外部問題單系統上的那張單子也一起關掉**；而稽核紀錄還會把操作人記成合法本人 | 後端補上權限檢查（十顆權限資料庫裡都已定好，純接線）、再加上「這筆資料是不是你的」的檢查；清單分兩套邏輯（已裁定，見下） | ⬜ **未修**（工單 CM-1630） |


## SUMMARY #109｜出自 M10-10｜⬜ 未修

某個專案的管理者在寫入群組層／控制項層成員時，填進來的群組或控制項可能根本不屬於那個專案，系統不比對就寫進去


### 模組頁列
M10 第 10 條（M10-task-platform.md:104）
| **10** | **寫入成員時只驗專案、不驗群組與控制項**：填進來的群組或控制項可能根本不屬於那個專案，系統不比對 | ⚪ 低 | 只驗登入、不檢查歸屬 | 要先是某個專案的管理者才做得到，門檻比較高。但**寫入型的越權比讀取型更難清理乾淨**——已經寫進資料庫的錯誤資料要另外清除 | 寫入前補上「群組或控制項所屬的專案，是不是等於填進來的專案」這道比對 | ⬜ **未修** |


## SUMMARY #110｜出自 M10-12｜⬜ 未修

更新專案成員資料時撈不到既有紀錄就整段跳過管理者檢查——目前靠後面另一道檢查頂住，哪天有人改成「查不到就當新增」，這道把關會靜默消失


### 模組頁列
M10 第 12 條（M10-task-platform.md:106）
| **12** | **更新成員資料**：撈不到既有紀錄時，整段跳過管理者檢查 | ⚪ 低 | 身分驗證缺失 | 目前靠後面另一道檢查頂住，實際結果是「查無資料」而不是「未經授權的寫入」。但這是**靠一道檢查擋另一個缺口**的結構——哪天有人把它改成「查不到就當新增」，這道把關會靜默消失 | 把條件改成「撈不到就明確拒絕」，不要依賴後面那道檢查（同一支檔案的刪除功能已經是這個寫法） | ⬜ **未修** |


## SUMMARY #111｜出自 M17-3＋M17-4｜⬜ 未修

用網址直接開一則公告時系統什麼都不檢查，調部門之後舊部門的公告用舊網址照樣打得開；公告列表碰到「沒有被分配部門」的帳號就整個不過濾、全部給看（已裁定：發送對象改成必選，一套設計解掉三件事）


### 模組頁列
M17 第 3 條（M17-bulletin.md:71）
| **3** | 用網址直接開一則公告時，完全不做任何檢查 | ⚪ 低 | 只驗登入、不檢查歸屬 | **調部門之後，舊部門的公告用舊網址還是打得開**；還沒發布的公告可以提前看到。目前擋著的只有「網址裡那串編號猜不到」這一件事 | **與第 4 條合併成同一套設計**：發送對象改成必選，讀取時一律照那個對象過濾 | ⬜ **未修**（決策者裁定先不開工單，待統一安排） |


### 模組頁列
M17 第 4 條（M17-bulletin.md:72）
| **4** | 公告列表碰到「沒有被分配部門」的帳號，直接不過濾、全部給看 | ⚪ 低 | 只驗登入、不檢查歸屬 | **沒有被分配部門的帳號，打列表就拿到整個客戶的全部公告**（含草稿、含過期），連同它們的網址編號——而那些編號正好餵給上面第 3 條。而且「要不要過濾」這個開關**是呼叫端自己在請求裡傳的**，不是伺服器判定的 | **與第 3 條合併成同一套設計**（見下方「一套設計解掉三件事」） | ⬜ **未修**（決策者裁定先不開工單，待統一安排） |


## SUMMARY #112｜出自 M19-2｜⬜ 未修

只給了修改權限、刻意不給刪除權限的操作人員，直接送一個「停用」欄位，就能讓任何一個資訊系統從所有選單與清單裡消失


### 模組頁列
M19 第 2 條（M19-asset.md:65）
| **2** | 只有「修改」權限的人，送一個「停用」欄位就等於做到了「刪除」 | ⚪ 低 | 只驗登入、不檢查歸屬 | **被刻意不給刪除權限的操作人員，可以讓任何一個資訊系統從所有選單與清單裡消失**，稽核專案就選不到它了。可還原（資料還在）、只在自己客戶內、而且畫面上根本沒有這個欄位（要直接呼叫後端才做得到） | 從修改用的資料格式把那個欄位拿掉；或是收到「停用」時改要求刪除權限。⚠️ 同時要確認反向：不會讓修改請求把已停用的系統悄悄重新啟用（見下方展開） | ⬜ **未修**（已裁定要修，與第 1 條一起排） |
