裝在客戶機房那支代理程式,五條通訊管道沒有一條會問「你是誰」——網路上任何人不必帳號就能冒充它領走客戶整套主機的登入帳密;管理畫面按「撤銷」只斷了三分之一,被撤銷的機器照樣能回報假資料
M01 第 1 條(M01-remote-agent.md:89) | 1 | 五條通訊管道全部不檢查對方是誰 | 🔴 最嚴重 | 身分驗證缺失 | 客戶會失去對自己機房主機的控制權——取走的是客戶自己的伺服器帳密,不只是我們系統的資料。且可冒充任一家客戶,一家出事等於全部客戶暴露;稽核證據可被偽造或抹除,整份稽核報告的可信度會被質疑 | 呼叫者身分改由簽章證明,五條管道一起修,歸屬比對做進核心層;同一批順便補上「這台是不是已被撤銷」 | ⬜ 未修(工單 CM-1595 已開,未排期) |
有主機管理權限的人把「負責核對簽章」的零件換成永遠說沒問題的假貨,之後任意竄改產品程式,三層檢查照樣顯示通過、全程零警示(已實測證實)
M08 第 1 條(M08-integrity.md:83) | 1 | 負責核對簽章的那個零件,被歸在開機時不會檢查的那一層——換掉它,整套防竄改永久失效 | 🟠 高 | 防竄改機制被削弱 | 客戶那台機器上的產品可以被任意改動,而系統照樣顯示一切正常——授權鎖可以拿掉、稽核紀錄可以竄改、計分邏輯可以改,全程不會有任何警示。三層檢查(開機核對、四小時抽查、敏感操作即時驗證)會一起失效,因為三層用的都是同一個被換掉的零件 | 打包時把這個零件強制編譯進核心層,讓它不再是一個可以被單獨換掉的檔案 | ⬜ 未修 |
客戶端機器因竄改被鎖住後,有主機權限的人只要刪掉一個檔案就能讓機器重新開起來,而那筆鎖定紀錄正是這機制原本要保留的證據
M08 第 2 條(M08-integrity.md:84) | 2 | 文件說有「檔案標記」與「資料庫紀錄」兩道鎖,程式其實只做了一道——刪掉一個檔案,被鎖的機器就能重開 | 🟠 高 | 防竄改機制被削弱 | 客戶端發生竄改事件後,只要一行指令就能把「被鎖定」這件事抹掉、讓機器重新開起來。而那筆鎖定紀錄正是這套機制原本要保留的證據。最糟的是維護的人以為有兩道鎖,因此不會想到要去補這個缺口 | 兩件事都要做:止血是把文件改成跟程式一致(零成本)、治本是開機時另外去查一次資料庫紀錄 | ⬜ 未修 |
管理員在「日誌轉送設定」填一台伺服器位址按儲存(連子公司層級的管理員都按得下去),所有客戶的系統活動紀錄從此持續送往他填的機器
M09 第 1 條(M09-log.md:69) | 1 | 管理員打開「系統設定 → 日誌轉送設定」,填一台伺服器位址按儲存。只要是客戶底下任何一層的管理員都按得下去——包含子公司層級的——而這一存改到的是全系統共用的那一份設定 | 🟠 高 | 客戶資料沒隔開 | 全系統只有這一份設定(包含平台管理員在內)。任何一家客戶底下的管理員改掉它,所有客戶的系統活動紀錄都會被持續送到他填的那台機器上,而且沒有人會察覺 | 已拍板:只開放給客戶自己組織樹第一層(總部)的管理員改,子公司的管理員改不到——與系統設定那塊的同型問題套用同一條規則。客戶自己決定日誌送去哪,這個自主權完全保留 | ⬜ 未修 |
任何人在帳號等欄位填進特殊開頭字元,管理員把操作日誌或意見回饋匯出成 Excel 打開時,那段內容會被當成公式執行,可能把整張表送到外部網址
M09 第 2 條(M09-log.md:70) | 2 | 管理員在「操作日誌」查詢頁按下「匯出」,拿到 Excel 檔並打開。攻擊者不必登入就能事先在那個檔案裡種一顆「公式炸彈」 | 🟠 高 | 外部送什麼就收什麼 | 種下去完全不需要帳號——因為系統在任何權限檢查之前就把每一次請求原封不動記下來了。之後管理員打開那個檔案,攻擊者準備的內容就會在管理員自己的電腦上執行:可以是釣魚連結,也可以把整張表的內容送到外部網址 | 在匯出的那一個出口統一處理,把會被 Excel 當成公式的開頭字元標示成純文字——字元一個都不刪,只是告訴 Excel「這是文字、不要執行」 | ⬜ 未修 |
M21 第 1 條(M21-issue-rescan.md:93) | 1 | 匯出的意見回饋檔案沒有過濾公式字元,可以被種公式炸彈 | 🟡 中 | 外部送什麼就收什麼 | 任何能送意見回饋的人(門檻只有登入),送一則標題以等號開頭的回饋;管理員匯出後用試算表軟體打開,那段內容會被當成公式執行——可以把同一份檔案裡其他欄位的內容送到外部網址,或在使用者點過安全性提示後執行外部程式。受害的是有匯出權限的管理員本人的電腦 | 匯出時把使用者可控的四個欄位(標題、描述、標籤名、建立者暱稱)先中和掉開頭的特殊字元。與另一處同樣的問題建議抽一支共用函式一起修 | ⬜ 未修(尚未開工單,決策者裁定先登記) |
任何一家客戶(含子公司)的管理員在系統設定頁就能改掉全公司所有人的登入規則,更嚴重的是他能把員工帳號目錄指到自己的機器,等於接管所有人的登入而且看不出來
M22 第 1 條(M22-system-core.md:81) | 1 | 一個客戶的管理員,可以改掉全公司所有人的登入規則,還能把登入驗證來源指到自己的機器上 | 🟠 高 | 只驗登入、不檢查歸屬 | 開一個新客戶就自動多一個能改全公司規則的人。他可以關掉全公司的雙因子驗證、讓帳號永遠不會鎖定(等於可以無限次猜密碼)、把登入憑證有效期從五分鐘延到一個月。更嚴重的另一半是把員工帳號目錄指到自己的機器——那是直接接管所有人的登入,而且改壞了看不出來 | 已拍板:只開放給客戶自己組織樹第一層(總部)的管理員改,子公司的管理員改不到;三支寫入路徑都要補上這個判斷 | ⬜ 未修 |
有主機權限的人改一個設定,把「要核對哪個目錄」整個換掉,而且這設定的優先順序比「是不是正式打包版」還高
M08 第 3 條(M08-integrity.md:85) | 3 | 有一個設定可以把「要核對哪個目錄」整個換掉,而且它的優先順序比「是不是正式打包版」還高 | 🟡 中 | 防竄改機制被削弱 | 單獨用它不成立(指到空目錄會因為找不到清單而拒絕開機)。但它是第 1 條的放大器——搭配起來,攻擊成本從「要偽造一整份清單」降到「隨便準備一個目錄」 | 在打包模式下忽略這個設定 | ⬜ 未修 |
有主機權限的人把記錄「解鎖檔用過沒」的那個檔案改成亂碼,系統會當作一張都還沒用過,已用過的一次性解鎖檔就能重新復活使用
M08 第 4 條(M08-integrity.md:86) | 4 | 已經用過的解鎖檔,如果使用紀錄毀損,系統會當作「一張都還沒用過」 | 🟡 中 | 防竄改機制被削弱 | 把記錄檔改成亂碼,用過的解鎖檔就能重新復活使用。實際影響不大(還受機器指紋、事件編號、有效期限三道限制),但一次性通行碼原本該有的保障,被降低成「只要能寫入一個檔案就能破壞」 | 把「檔案不存在」(合理)與「檔案內容毀損」(不合理,應該拒絕)分開處理 | ⬜ 未修 |
管理員在日誌轉送設定頁選「傳送方式」時,下拉選單裡只有兩個選項、兩個都是明文,想開加密的客戶根本開不了
M09 第 3 條(M09-log.md:72) | 3 | 管理員在日誌轉送設定頁選「傳送方式」時,畫面上只有兩個選項,兩個都是明文——想開加密的客戶開不了 | 🟡 中 | 密碼外流 | 明文轉送是這類功能的業界常態,通常靠「部署在受信任的網段」來保護。我們的缺口不在於沒有加密,在於沒有提供加密選項——客戶就算自己的監控系統收得了加密、也想開,設定上根本沒有那個選擇。能在網路路徑上看封包的人(同機房網段、被入侵的網路設備)就能讀到整份日誌 | 提供加密選項,讓需要的客戶開得起來。對方收不收得了加密,屬於客戶自己的部署決定 | ⬜ 未修 |
任何人(連登入都不用)在帳號之類欄位填進換行,系統把日誌送到客戶的資安監控系統時原樣帶出,對方會讀成兩筆紀錄,第二筆內容由攻擊者決定(例如偽造「某某管理員授予了超級權限」)
M09 第 4 條(M09-log.md:71) | 4 | 系統把日誌一行一行送到客戶的資安監控系統時,沒有處理使用者填進來的換行,有心人可以藉此在對方系統裡塞入偽造的稽核紀錄 | 🟡 中 | 外部送什麼就收什麼 | 只要有一個使用者填得到、又會被原樣記下來的欄位(例如登入時輸入的帳號),攻擊者就能在裡面藏一段假的日誌內容。送到客戶的監控系統之後,多數解析程式會把它當成一筆獨立的紀錄——可以捏造「某某管理員授予了超級權限」這種紀錄,混淆事後追查。這條不需要任何權限,連登入都不用(登入失敗的帳號也會被記下來) | 組出那一行文字之前,把換行編碼成看得見的兩個字元,其他看不見的控制字元同理——內容一個位元都不少,只是讓它不再被讀成「下一筆」 | ⬜ 未修 |
寄信失敗時(密碼填錯、網路抖一下就會發生)系統把整組郵件設定含密碼原樣寫進紀錄檔,所有看得到紀錄的維運人員等於拿到密碼
M16 第 2 條(M16-notification.md:80) | 2 | 寄信失敗時,把整組郵件設定原樣寫進系統紀錄檔——那組設定裡有密碼 | 🟡 中 | 敏感內容寫進日誌 | 看得到系統紀錄的人就等於拿到密碼——維運人員、能查資料庫的人、外部紀錄收集服務的管理員,這些人遠多於被授權改郵件設定的人。而且不需要攻擊者做任何事,寄信失敗一次就會發生(密碼填錯、網路抖動都算)。⚠️ 共用地基那道密碼遮蔽蓋不到這裡,實跑驗過,密碼一個字都沒被遮掉 | 錯誤訊息只印錯誤本身,不要把整組設定丟進去 | ⬜ 未修(工單 CM-1606 已開,未排期) |
系統連郵件伺服器時有加密但不認人,攔在路上的人拿張自簽證明就能收下帳密,連每封信的內容(含一次性驗證碼、新帳號初始密碼信)都被攔走
M16 第 3 條(M16-notification.md:81) | 3 | 連郵件伺服器時「有加密但沒認人」——對方拿一張隨便自簽的證明來,系統照單全收 | 🟡 中 | 密碼外流 | 除了同樣洩漏郵件帳密之外,每一封信的內容都會落到攔截者手上——包含登入用的一次性驗證碼與新帳號的初始密碼信。等於帳號被接管的材料整批送出去。這條要成立,攻擊者得先在我們與郵件伺服器之間的網路路徑上(郵件服務在外部雲端時比較容易做到) | 選了加密就驗證對方身分,客戶看到的設定畫面完全不用動 | ⬜ 未修(工單 CM-1606 已開,未排期) |
系統向原廠回報「偵測到竄改」時,會把主機紀錄檔最後 50 行原封不動送出,那 50 行若剛好夾帶密碼或登入憑證就一起被送出去
M08 第 6 條(M08-integrity.md:88) | 6 | 回報「偵測到竄改」時,會把主機紀錄檔最後 50 行原封不動送回原廠 | ⚪ 低 | 敏感內容寫進日誌 | 那 50 行若剛好夾帶密碼或登入憑證,就會一起被送出去。評低是因為這個回報目前送的是本機位址,不會離開那台機器 | 送出前套用系統其他地方送日誌時用的那套遮蔽規則——工具是現成的,不需要重寫 | ⬜ 未修 |
有正當權限的客戶管理員打開「儲存設定」頁時,瀏覽器就收到那把共用密鑰的明文——任何看得到他瀏覽器流量、存檔或前端錯誤紀錄的人都拿得到
M22 第 3 條(M22-system-core.md:83) | 3 | 密碼遮蓋名單漏掉檔案儲存那一組 | ⚪ 低 | 密碼外流 | 就算第 2 條補好了,有正當權限的客戶管理員打開「儲存設定」頁時,瀏覽器仍會收到那把共用密鑰的明文——任何看得到他瀏覽器流量、存檔或前端錯誤紀錄的人都拿得到 | 把儲存設定加進遮蓋名單、把帳密欄位名加進要遮蓋的清單,並改用寄信與員工帳號目錄那套「不回密碼、沒帶就沿用」的做法 | ⬜ 未修 |