任何能登入的帳號(不必是任何專案的成員)在舊版證據分類的「預覽證據檔」填一個雲端硬碟檔案編號,就把那個 Google 帳號摸得到的任何檔案抓回來
M07 第 1 條(M07-evidence-classification.md:142) | 1 | 舊線的「預覽證據檔」入口,填任何一個雲端硬碟檔案編號就把檔案抓回來給你 | 🟠 高 | 只驗登入、不檢查歸屬 | 射程是授權那個 Google 帳號所能觸及的全部檔案(含別人分享給他的),不只是證據資料夾——因為系統申請的是最寬的那一檔權限,而且憑證是真人帳號授權的。別的專案的證據、人事檔案、合約都拿得到。門檻只是「有一個能登入這套系統的帳號」,不必是任何專案的成員 | 隨舊線整組退役一併移除 | ⬜ 未修——隨舊線退役消失;退役完成前仍然成立 |
舊版證據分類的「查結果、查報表、工作清單」不檢查你是不是這個專案的成員,查不到紀錄時還會退回直接去雲端硬碟讀,用的是呼叫者自己公司的鑰匙
M07 第 2 條(M07-evidence-classification.md:143) | 2 | 舊線的查結果、查報表入口不檢查你是不是這個專案的成員 | 🟡 中 | 只驗登入、不檢查歸屬 | 與第 1 條同一條鏈。更麻煩的是:查不到紀錄時會退回直接去雲端硬碟讀,而且用的是呼叫者自己公司的鑰匙——程式裡寫的安全理由在「完整硬碟權限」下不成立 | 同第 1 條 | ⬜ 未修——隨舊線退役消失;退役完成前仍然成立 |
M07 第 3 條(M07-evidence-classification.md:144) | 3 | 舊線的工作清單與單筆狀態查詢不檢查專案成員,進度資料又是全系統共用、不分客戶 | 🟡 中 | 客戶資料沒隔開 | 這是第 1、2 條的入場券——從這裡拿到資料夾編號,第 2 條換到檔案編號,第 1 條換到檔案本身。進度資料放在記憶體裡,在客戶資料隔離管不到的地方 | 同第 1 條 | ⬜ 未修——隨舊線退役消失;退役完成前仍然成立 |
舊版證據分類查雲端硬碟的搜尋條件是用字串接起來的沒做防護,可能被改寫搜尋範圍(例如改成「這個硬碟裡的所有檔案」)
M07 第 4 條(M07-evidence-classification.md:145) | 4 | 查雲端硬碟的搜尋條件是用字串接起來的,沒有做防護 | 🟡 中 | 外部送什麼就收什麼 | 可能被改寫搜尋範圍(例如改成「這個硬碟裡的所有檔案」)。這條沒有實際打過一次,Google 那邊會不會照著吃下去還不確定 | 同第 1 條 | ⬜ 未修——隨舊線退役消失;退役完成前仍然成立 |
群組層成員的新增/修改/刪除三支程式,因系統啟動時漏接一條線而整支完全不檢查權限,而這張表被拿來算「哪些專案我看得到」
M10 第 7 條(M10-task-platform.md:101) | 7 | 群組層的成員管理:系統啟動時漏接了一條線,這支負責新增/修改/刪除群組成員的程式整支完全不檢查權限 | 🟡 中 | 身分驗證缺失 | 它不報錯也不留紀錄,就只是安靜地全部放行。 更要緊的是:這張表被系統拿來算「哪些專案我看得到」——塞一筆進去,那個人就多看到一個專案。 目前沒有對外入口打得到這三個寫入功能,但哪天有人幫它加一個入口,就是完全開放 | 裁定刪除:新增、修改、刪除三個功能整段拿掉(全系統已確認零使用);查詢那支留著給 AI 儀表板呼叫;資料表保留 | 🗑️ 已裁定刪除 |
流程參與者的新增/修改/刪除是一整組從沒啟用過的功能,把關檢查寫在永遠跑不到的位置——現在擋住它的是它本身就壞著
M10 第 8 條(M10-task-platform.md:102) | 8 | 流程參與者管理:一整組從沒啟用過的功能——把關的檢查寫在「提前結束」後面永遠跑不到、資料表在開發環境是 0 筆、修改與刪除一定出錯 | 🟡 中 | 身分驗證缺失 | 現在擋住它的不是那道檢查,是它本身就壞著。哪天有人很自然地把壞掉的地方修好,這裡就會從「程式出錯」變成真正的權限繞過——而修的人會覺得自己在修 bug,不會知道那個 bug 正是唯一的守門員 | 裁定刪除:新增、修改、刪除三個功能整段拿掉;資料表與回傳格式的定義要留著(別的地方在用) | 🗑️ 已裁定刪除 |
一支檔頭自己就寫明「不是產品程式碼」的開發用小工具,會跟著出貨套件裝到客戶機器上
M04 第 11 條(M04-common.md:83) | 11 | 一支開發用的小工具混在正式出貨的套件裡 | ⚪ 低 | 回應夾帶不該送的欄位 | 它的檔頭自己就寫明「不是產品程式碼」,但它會跟著出貨的套件一起裝到客戶機器上 | 直接刪掉(已確認五個程式庫全部零引用,見下方) | 🗑️ 已裁定刪除 |
一個每次連線都會被設定、但全系統沒有任何地方讀它的開關,留著會讓後人誤以為「這裡已經有部門層級的檢查」而不去補真正需要的
M04 第 14 條(M04-common.md:93) | 14 | 一個在每次連線時都會被設定、但全系統沒有任何地方讀它的開關 | 要先做產品決策 | 它現在完全沒有效果,但留著會讓之後讀程式的人誤以為「這裡已經有一道部門層級的檢查」,反而不會去補真正需要的檢查 | 🗑️ 已裁定刪除(見下方) |
三支接收檔案路徑、現在完全沒人呼叫的程式直接用傳入的路徑開檔讀寫;另有兩組「接好但沒人用」的備用服務完全沒有權限檢查——現在無害的唯一理由是沒人用它
M06 第 14 條(M06-flow-engine.md:94) | 14 | 三支接收檔案路徑、但現在完全沒人呼叫的程式 | 負責「存流程圖到檔案」「匯出 XML」「從 XML 匯入」,都是直接拿傳入的路徑開檔讀寫。現在無害的唯一理由是沒人用它——只要哪天有人把使用者輸入接到這幾支的參數上,就變成任意檔案讀寫 | ⬜ 未修(建議直接刪掉,不要留地雷) |
M06 第 16 條(M06-flow-engine.md:96) | 16 | 套件裡有兩組「接好但沒人用」的備用服務,完全沒有權限檢查 | 見上方對照表那一節。與第 14 條是同一種——現在無害是因為沒人用它,只要哪天有人接上去,就憑空多出一組沒有檢查的入口 | ⬜ 未修(建議直接刪掉,不要留地雷) |
有一個獨立的「快速設定」畫面,按下去顯示成功但一筆都沒存;兩個入口網址都沒有任何按鈕導過去,只有手打網址才進得去(已裁定整頁拆除、兩個入口都要拆)
M10 第 14 條(M10-task-platform.md:115) | 14 | 有一個「快速設定」畫面,按下去顯示成功但一筆都沒存 | 系統裡有兩個快速設定:專案規劃頁那個已經改走新做法、會正常存;另一個獨立畫面還打著舊做法,而系統內部已經關掉、固定回空——畫面跳出成功提示,實際什麼都沒寫入。那一頁有兩個入口網址(一般版與稽核計畫版),兩個都沒有任何按鈕或連結導過去,只有手打網址才進得去。 決策者裁定整頁拆除,兩個入口都要拆 |
四支任務指派相關功能沒有對外入口、也沒有任何把關(已裁定刪除其中三支,第四支是配套用的留著)
M10 第 18 條(M10-task-platform.md:119) | 18 | 四支任務指派相關功能沒有對外入口、也沒有任何把關 | 裁定刪除其中三支(其中一支是被新版取代後留下的舊版,不是「還沒接」);第四支「依專案刪掉所有指派」留著——其他五層都有同名功能,它是配套用的 |
任何一個登入帳號送一個空白查詢,就把整張全站成員名冊含電子郵件撈回來(查證後確認這支入口現在沒有任何地方在呼叫、三個環境的表都是 0 筆,已裁定整塊移除)
M21 第 2 條(M21-issue-rescan.md:94) | 2 | 任何登入帳號都拿得到全站使用者名冊(含電子郵件)——查證後發現這其實是一塊沒有任何地方在用的死程式 | ⚪ 低 | 客戶資料沒隔開 | 不必是管理員,任何一個登入帳號送一個空白查詢,就把整張成員名冊撈回來——那張表連「這是哪家客戶的」欄位都沒有、也沒有任何隔離規則。不過查證後確認:現在沒有任何地方會去呼叫它,三個環境的那張表也都是 0 筆。真正的問題不是它現在在漏,而是它是一個沒人看管、隨時可能被接上去的入口 | ✅ 已裁定:整塊移除(入口、資料表、同步程式一起拿掉),不補隔離、不留著 | ⬜ 已裁定移除(待排工) |