Guidant AI 資安檢視 · 模組報告
決定「客戶買了哪些功能、用到什麼時候」的那套機制。這是大部分問題已經修好的一塊——十二條資安發現裡十條已修好;第 7 條(三個環境共用公鑰)已裁記錄不修、等正式簽發站建好一併處理;未修的只剩第 8 條(資料庫門禁規則方向寫反),歸 1.21.1 hotfix(CM-2289)。另有一條非資安的表單問題(第 10 條)已裁定處理方式、程式還沒改。
產品是賣授權的:客戶買了哪些功能、可以用到哪一天,靠一張授權檔決定。這套機制由兩端組成:
| 這一端 | 在哪裡 | 做什麼 |
|---|---|---|
| 簽發站 | 我們公司內部 | 簽出授權檔(蓋章的私鑰在這裡) |
| 驗證端 | 裝在客戶的產品裡 | 收到授權檔,驗章是不是真的、有沒有過期、綁的是不是這台機器 |
簽發站是一套獨立的系統——它有自己的程式、自己的資料庫,跟客戶手上的產品完全分開,而且簽授權用的那把私鑰就放在它手上。它不是這塊的一個小角落,本頁九條問題裡有五條就出在它身上。
攻擊者的動機直接而明確:繞過授權等於免費使用整套產品。
其他模組的問題多半要先有帳號或有網路位置;這塊的誘因是金錢,而且簽發站有一個免登入的對外入口(客戶輸入開通序號線上領取授權的那個)。
檢視期間:2026-09-06(單日完成四輪)|範圍:118 個檔案(驗證端 43、簽發站 75)|共 4 輪
原始技術報告放在需求中心的 FR-076 站,檔名見下表最後一欄。那裡有每一輪的完整技術細節、檔案清單與逐條推理,供需要深究或稽核抽查時查閱。
| 輪次 | 查什麼 | 檔數 | 覆核投票 | 結果 | 原始報告檔名 |
|---|---|---|---|---|---|
| L1 | 驗章核心——怎麼確認這張授權檔是真的(客戶端) | 10 | 12 票全投完,零中斷 | 通過 1 條(屬這塊),另 2 條是讀到別的模組撈到的 | scan-L1-verification-core |
| L2 | 授權狀態怎麼記、怎麼被查詢(客戶端) | 33 | 12 票全投完,零中斷 | 通過 1 條;人工另外查出 1 條,比工具報的任何一條都嚴重 | scan-L2-license-state-api |
| L3 | 簽發站的簽章核心 | 32 | 24 票全投完(中途有一次程序卡住,自動重試成功) | 通過 2 條(屬這塊),另 3 條與下一輪重複 | scan-L3-issuance-core |
| L4 | 簽發站的網頁後台 | 43 | 21 票全投完,零中斷 | 通過 4 條,全部集中在兩個地方 | scan-L4-web-backoffice |
四輪裡有兩輪、共 75 個檔查的是簽發站——它被查的份量比客戶端還重,本頁的發現也大半出自那裡(開通序號太短、序號遮罩失效、防猜機制失靈、登入跳轉沒檢查,以及公鑰清單那條連帶查出的打包守門壞掉)。
四輪全部覆核完整跑完——這是整批檢視裡執行品質最穩的一組
四輪都是一次跑完、沒有任何一輪撞到用量上限。這不是運氣,是把每一輪控制在 43 個檔案以內換來的。
在此之前的那一組(登入與權限模組)曾經用錯設定跑四輪大範圍,全部失敗、共燒 29.6 小時、零產出。這一組改用小範圍之後,最大的一輪 43 個檔案 110 分鐘一次跑完。
兩件事必須說清楚
① 這四輪都沒查「主系統這一端怎麼把授權機制接上來」——那一端由主系統自己的程式那組掃描(U1、U2 兩輪)查過,查出本頁第 11~13 條。
② 有一條問題是工具讀過了但沒報,由人工發現的——L2 那條「被停權的客戶換一張新授權檔就能解除停權」。工具的四輪都沒提,是統籌者人工核對時追出來的,而且它比工具報出來的任何一條都嚴重。
這說明一件事:「工具沒報」不等於「沒有問題」,只代表工具那一輪沒往那個方向想。
還有一件事四輪都沒查:那把私鑰本身怎麼保管
四輪查的是「用到私鑰的那些程式寫得對不對」——簽章怎麼做、金鑰怎麼被讀進來、驗章怎麼驗。但「私鑰檔案本身放在哪、誰拿得到、那台機器怎麼保護」,四輪一次都沒進過範圍。
工作規範裡確實有一條「不可以把私鑰內容寫進任何檔案」,但那是作業規定,不是檢視結論——它管的是我們自己別寫出去,不代表有人去查過它現在放得安不安全。
為什麼這件事要特別講:私鑰是整套授權機制的根。拿到它就能偽造任何一張授權檔,前面那些修好的防線全部繞過。這裡誠實交代:這件事我們還沒查過——而「還沒查」跟「查過沒事」意義完全不同。
排序按風險,同風險的同一類排在一起。「出事會怎樣」那欄講的是業務影響——誰受影響、損失什麼,不是技術現象。
| # | 問題 | 風險 | 分類 | 出事會怎樣(誰受影響) | 怎麼修 | 狀態 |
|---|---|---|---|---|---|---|
| 1 | 被停權的客戶,自己上傳一張舊授權檔就能解除停權 | 🟠 高 | 只驗登入、不檢查歸屬 | 我們把欠費或違約的客戶停權之後,他自己點兩下就恢復了,完全不需要我們同意。停權這件事在商務上是最後手段,形同無效 | 把「停權」從授權檔搬到客戶身上——換照就不會把它洗掉 | ✅ 已修:新增一張獨立的停權紀錄表,與授權檔完全脫鉤;換照不會動到它。統籌者已開檔確認新表與讀取邏輯都在。⚠️ 但資料庫那一層還留著另一條解除停權的路,見第 8 條 |
| 2 | 驗章之前就先解壓縮,而且沒有上限 | 🟠 高 | 資源耗盡 | 任何一個登入帳號用一個 1.4MB 的請求,就能讓伺服器吃掉 1GB 記憶體、把整個產品打掛。落地版是單一容器,等於全產品停擺 | 解壓縮前先擋長度、解壓縮時設上限 | ✅ 已修:兩道上限都在(解碼前先擋長度、解壓時有界),程式旁邊還寫明了「兩道都不可省、順序不可對調」的理由 |
| 3 | 開通序號只有 8 個字,43 億組——猜得到別人的授權 | 🟠 高 | 身分驗證缺失 | 猜中別人的序號就能領走那張授權。而這是簽發站唯一一個不用登入的對外入口 | 序號長度大幅拉長 | ✅ 已修:序號改用約 128 位元的隨機值產生 |
| 4 | 專門「把序號遮起來再寫紀錄」的那段程式,遮罩取前 8 碼——而序號剛好 8 碼,等於整串印出去 | 🟡 中 | 敏感內容寫進日誌 | 未兌換的開通序號等同一張可以領走授權的票,整串落在系統紀錄裡,看得到紀錄的人就撿得到 | 改成只印無法回推的摘要,不留明文前綴 | ✅ 已修:改成純摘要、不帶明文前綴。程式旁邊寫明了理由——「遮罩這段程式不該依賴『呼叫的人剛好序號夠長』才安全」 |
| 5 | 線上開通入口的防猜機制等於沒鎖:用被猜的那組序號當鎖定對象 | 🟡 中 | 身分驗證缺失 | 猜錯一次就換下一組序號,永遠不會被鎖。連同「計數用的那份暫存沒有上限、而且查詢時也會寫入」——不用登入就能把伺服器記憶體撐爆 | 改成按來源位址鎖定、計數改存資料庫 | ✅ 已修:改成按來源位址鎖定、計數存進資料庫,而且是先查鎖定再查序號(被鎖時連查都不查,猜的人拿不到「序號存不存在」的線索) |
| 6 | 登入後的跳轉網址沒有檢查,可以被導到外站 | 🟡 中 | 外部送什麼就收什麼 | 誘騙簽發站的管理員點一個連結,登入後被導到偽造的頁面把管理密碼交出去——而簽發站的管理員手上握著簽發私鑰 | 限制只能跳回站內 | ✅ 已修:加上一段檢查程式,把跳轉目標收斂成站內相對路徑 |
| 7 | 三個環境共用同一份寫死的公鑰——開發環境簽的授權檔,正式環境也會認 | 🟡 中 | 要先做產品決策 | 拿開發環境的私鑰就能簽出正式環境認得的授權檔。目前私鑰都在自己機器上,實際風險有限;但正式簽發站建好、開始對外簽發之後,這就是一條真正的繞過路徑 | 出貨時按環境只編進該環境的公鑰 | 📋 已裁記錄不修(1.21.0)——決策者裁定等正式簽發站建好一併處理,工單 CM-1582 暫緩。不是遺漏,是判斷過的取捨 |
| 12 | 落地版的商務授權總開關只是一個設定值,客戶自己的主機管理員改一行就能整個關掉 | 🟡 中 | 要先做產品決策 | 客戶可以不付錢就用沒買的模組、授權過期照常寫資料、子公司數量上限失效——受損的是原廠的商務收入,不是客戶資料。防竄改只核對程式檔、不核對設定值,改了不會觸發任何警示 | 決策者裁定:落地版拿掉這兩個開關;真的要暫時放行,改由原廠補發測試用授權 | ✅ 已修(CM-2205,commit c8aa7d026,1.21.0 出貨) |
| 8 | 這塊的三張資料表,資料庫那道門禁規則方向寫反了——而且同一條規則連「改」「刪」一起管 | 🟠 高 | 客戶資料沒隔開 | 被停權的客戶只要有一個子單位帳號,就能直接把母公司頭上那筆停權紀錄刪掉,整棵樹解除停權;也能改掉母公司授權的到期日與模組清單、刪掉追查用的異動紀錄湮滅痕跡。第 1 條在程式那一層修好了,這條是同樣效果的另一條路 | 「看」保持現狀(子單位本來就必須看得到母公司那張照),把「改」「刪」限制成只有最頂層的客戶能做 | ⬜ 未修,歸 1.21.1 hotfix(CM-2289) |
| 9 | 同一張授權檔可能被兩家客戶同時用上 | ⚪ 低 | 客戶資料沒隔開 | 在極短的時間窗內,兩邊同時匯入同一張授權檔都會成功。實際發生的機率很低 | 資料庫加一道「同一時刻只能有一份生效」的限制 | ✅ 已修:資料庫那道限制已經建好,同一份授權不可能再出現兩份同時生效 |
| 11 | 授權過期後轉唯讀,只靠每天一次的排程;讀授權時不當場重算,排程沒跑就一直算「正常」 | ⚪ 低 | 要先做產品決策 | 過期的客戶可以繼續新增、修改資料,最長到排程下一次跑完(每天台灣時間早上 10 點);若部署方式讓排程沒在跑,就一直可寫 | 決策者裁定「過期即唯讀」:讀授權時當場算一次,取較嚴的那個 | ✅ 已修,1.21.0 出貨(8-G,CM-2217,commit 3ed47c7a9/套件 8ccfac73) |
| 13 | 授權過期的唯讀限制有兩個縫:代理程式那一段網址被整段放行、問卷的即時填答通道完全不經過唯讀檢查 | ⚪ 低 | 要先做產品決策 | 過期的客戶還能產生新的代理程式註冊碼、還能填問卷寫入資料——唯讀名存實亡的兩個角落 | 放行範圍收窄成代理程式回報結果那幾支(機器對機器保留);問卷即時通道補上唯讀檢查 | ✅ 已修,1.21.0 出貨(8-G,CM-2217,commit 3ed47c7a9/套件 8ccfac73) |
| # | 問題 | 影響 | 怎麼處理 |
|---|---|---|---|
| 10 | 簽發站的「方案」表單,可以把基礎包裡的模組(設備與資訊系統清冊、意見回饋)逐項取消勾選 | 基礎包設計上每張授權一定有、不拆賣,所以產品那一端刻意不檢查「有沒有買」這兩個模組。哪天簽出一張少了基礎包模組的授權,客戶畫面上的選單會不見、但直接打網址照樣能用——授權與實際能用的功能對不上。這是在資產與意見回饋的主系統接線那一輪查證時帶出來的 | ⬜ 未修——已裁定表單上的基礎包鎖死勾選、不讓人取消,但簽發站表單現在仍可逐項取消勾選,目前沒有修正卡。在簽發站 license_center 的方案表單 plan_form.html:58;模組目錄 license_center/src/license_center/core/module_catalog.py:8-14 |
這一條要整段讀完再下判斷——它有一半是「本來就該這樣、不能改」,另一半才是真正的問題。
除了程式裡的權限檢查,資料庫自己還有一道門禁,規定「哪個客戶碰得到哪幾筆資料」。這是最後一道防線:就算程式那層漏了,這一道還擋得住。
這塊一共只有三張資料表——授權檔、授權異動紀錄、停權紀錄,就是全部了。這三張的門禁規則寫法一模一樣,而且方向是反的。
| 正常應該是 | 這三張實際是 | |
|---|---|---|
| 一個子單位碰得到誰的資料 | 它自己,和它底下的子單位 | 它自己,和它頭上的母公司 |
方向整個倒過來了。
「子單位看得到母公司的授權」這件事本身是對的,一定要保留。
因為授權的設計就是:照綁在最頂層的那個客戶身上,底下所有子單位共用這一張——子單位不另外發照。系統判斷「你買了沒」的第一步,就是把任何一個子單位換算成它頭上那個持照的客戶,再去讀那張照。
所以如果把方向改成跟其他表一樣(只看得到自己和底下),會發生什麼?每個子單位都查不到頭上那張照,被系統判成「沒買」,打任何功能都被擋掉。 功能當場壞掉。
這三條規則不是只管「看得到什麼」,它同一條規則連「改得到什麼」「刪得到什麼」一起管,而且沒有另外加任何寫入限制——所以結論是:看得到,就改得到、刪得到。
實際會發生這三件事:
| 子單位帳號可以做什麼 | 後果 |
|---|---|
| 🔴 刪掉母公司頭上的停權紀錄 | 停權紀錄表的設計是「有一列就代表停權中」,刪掉那一列就等於解除停權——刪除本來就是解除停權的正規做法。所以被停權的客戶只要手上有一個子單位帳號,就能讓整棵樹當場復權,不需要換照,也不需要走任何功能入口 |
| 改掉母公司授權的到期日與模組清單 | 系統判斷「買了什麼、用到哪天」讀的就是那一列——改它等於自己改自己的合約內容 |
| 刪改授權異動紀錄 | 那是用來追查「誰換了照、誰被停權、什麼時候」的時間線。能刪它,就能把上面兩件事的痕跡一併抹掉 |
本頁第 1 條寫的是「被停權的客戶換一張照就能解除停權」,狀態是已修——程式那一層確實修好了,換照不會再洗掉停權。
但資料庫這一層還開著一扇門,效果一模一樣:一樣是解除停權。
而且更要記住的是:那張停權紀錄表就是修第 1 條時新建的,一出生就帶著這條寫反的門禁規則(三張表的寫法一模一樣)——等於修一個洞的時候,順手把同一個洞複製到新表上了。
第 1 條的狀態仍然是「已修」(程式那層的修正確實完成且有效),但必須並列記住:資料庫那條路還在,已經併進跨模組那一批集中處理。
這也是這一條同樣評為高風險的原因——效果一樣,而且這條走的路更短、更難追:
| 第 1 條(已修) | 這一條 | |
|---|---|---|
| 結果 | 被停權的客戶自行復權 | 一樣——被停權的客戶自行復權,而且是整棵樹 |
| 要做什麼 | 得換上一張舊的授權檔 | 只要刪掉一列資料 |
| 走哪條路 | 走正常的功能入口 | 繞過所有功能入口 |
| 留得下痕跡嗎 | 換照這件事本身有紀錄 | 連追查用的異動紀錄都能一起刪掉 |
同樣的結果評不同等級會讓人誤判,所以這一條與第 1 條同列高風險。
「看」保持現狀,「改」和「刪」擋掉。
| 怎麼做 | |
|---|---|
| 看 | 照舊——子單位必須看得到母公司那張照,這是授權繼承的基礎 |
| 改/刪 | 限制成只有最頂層的那個客戶才能做,子單位一律擋掉 |
🔴 施工紅線:這三張絕對不可以照另外八張的做法改
弱點檢測那塊查出同樣「方向寫反」的表一共 11 張,其中 8 張要改成正確方向。但這三張授權表不行——改了會讓每個子單位查不到頭上那張照、被系統判成沒買,打任何功能都被擋掉。
這三張只能做「讀保持現狀、寫擋掉」這一種改法。
決策者裁定:那 11 張表要分兩組改
先前在弱點檢測那塊的裁定是「11 張門禁規則寫反的表集中處理、出貨前完成、改用正確寫法」——那是在「11 張都照同一套改」的前提下做的。
現在知道其中三張不能照那套改,裁定已修正為分兩組:
| 組別 | 幾張 | 怎麼改 |
|---|---|---|
| 一般資料表 | 8 張 | 改成正確方向(自己+底下的子單位) |
| 這塊的授權三張 | 3 張 | 讀保持現狀、寫擋掉(只有最頂層客戶能改能刪) |
其餘條件不變:集中一次處理、出貨前必須完成、施工時逐條比對不要批次取代(會把已經寫對的一起改壞)。
📎 跨頁對照:11 張表這件事由弱點檢測那塊起頭(那頁第 7 條)。那頁講的是「有 11 張寫反、要一起改」;本頁是唯一講清楚「方向寫反對授權會造成什麼實際後果、以及為什麼其中三張不能照那套改」的地方。 兩頁要一起看。
這一條是工具沒報、人工查出來的,而且它比工具報的任何一條都嚴重。
它也是唯一一條會直接影響商務關係的問題——其他條講的是技術風險,這一條講的是「我們的最後手段形同無效」。
我們把某個客戶停權(欠費、違約),系統就會把他的產品轉成唯讀——看得到但改不了。
停權這個狀態,原本是記在「那一張授權檔」上的。
而換授權檔的流程是「新增一張、取代舊的」——新的那一張上面,停權標記是空的。
所以整件事變成:
我們停權某個客戶
↓
客戶把自己手上那張舊授權檔重新上傳一次
↓
系統:「這是一張新的紀錄,停權標記空的」
↓
唯讀解除,客戶照常使用
不需要我們同意、不需要管理員、不需要任何特殊權限。 而且有四條路都會走到同一段程式,其中三條是客戶自己就能打的——那三條只要登入、不需要管理員身分,這是刻意的設計,因為開通授權的當下客戶通常還沒有管理員在場,要求管理員會把自己鎖在門外。
程式沒有任何一行寫錯。錯的是「停權這件事該記在哪裡」這個決定。
| 停權記在哪 | 結果 |
|---|---|
| 記在授權檔上(原本) | 停權跟著「那一張檔」走,換檔就洗掉 |
| 記在客戶身上(修好後) | 停權跟著「那個客戶」走,換幾次檔都在 |
新增一張獨立的停權紀錄表:一列等於一個客戶目前處於停權狀態,解除就刪掉那一列。與授權檔完全脫鉤,換照動不到它。
舊的兩個欄位保留不刪——歷史資料上的值是「當初那一份被停權過」的稽核紀錄,執法只讀新表。
統籌者已開檔確認:新表與讀取邏輯都在,授權狀態查詢與管理後台兩條路都改成讀新表。
但這條要連著第 8 條一起看
程式那一層確實修好了,換照不會再洗掉停權。可是資料庫那一層還開著另一條路——子單位帳號可以直接把停權紀錄刪掉,效果一模一樣。 而那張新表正是修這一條時建的,一出生就帶著寫反的門禁規則。詳見上面第 8 條。
問題:授權檔是壓縮過的,系統要先解開才能驗章。但解壓縮之前沒有任何上限——送一個「壓得極小、解開極大」的檔案(壓縮比可達千倍),程式會在驗章之前就把記憶體吃光。
關鍵在於順序:簽章簽的是解開後的原文,所以不能先驗章再解壓。唯一的解法是在解壓的過程中就設上限。
怎麼修好的:兩道上限——解碼之前先擋字串長度(連解碼都不做),解壓縮時設定上限並檢查有沒有超過。程式旁邊還寫明了「兩道都不可省、順序不可對調」的理由,這一點做得很好——下一個接手的人看到就知道不能省。
簽發站那一側有同源的一段解壓程式,但它沒有對外入口會收外部送進來的檔案,判定不構成問題。
這兩條是同一件事的兩面:
兩邊各自的假設都合理:寫紀錄那邊假設「前綴太短猜不出剩下的」,簽發那邊假設「夠亂就不必更長」。但沒有任何一處把兩個假設對起來看。
更麻煩的是——守門測試一直是綠燈,因為測試餵進去的假序號長度是 18 個字,剛好蓋不到這個問題。
怎麼修好的:序號改用約 128 位元的隨機值;遮罩那段程式改成純摘要、不留明文前綴。程式旁邊寫明了理由:「做摘要的那段程式本身不該依賴『呼叫的人剛好序號夠長』才安全」——這正確地把責任放回那段程式自己身上。
問題:線上開通入口原本有「同一組序號 15 分鐘內失敗 5 次就鎖定」的防猜機制。
但鎖定的對象是「被猜的那組序號」——猜錯一次就換下一組序號繼續猜,永遠不會被鎖。
連同另外兩個問題:計數用的那份暫存沒有上限,而且查詢的時候也會寫入——所以不用登入就能一直打、把伺服器記憶體撐爆。
最能說明問題的是這個對照:同一個專案的後台登入早就做對了(計數存資料庫、按來源位址計、程式旁邊還寫明了為什麼不能存在記憶體裡)。線上開通入口沒有套用那份現成的知識——是遺漏,不是不懂。
怎麼修好的:改成按來源位址鎖定、計數存進資料庫,而且順序改成先查鎖定再查序號(被鎖時連查都不查,猜的人也拿不到「這組序號存不存在」的線索)。取不到來源位址時一律歸到同一個計數槽——否則「取不到位址」就變成免費的無限次嘗試。
問題:簽發站登入頁的網址後面可以掛一段「登入完把我送回哪裡」的指示,程式拿到之後完全不檢查就直接跳轉。
為什麼這在簽發站特別危險:誘騙簽發站管理員點一個連結、登入後被導到偽造的頁面,就可能把管理密碼交出去——而簽發站的管理員手上握著簽發私鑰。
怎麼修好的:加一段檢查程式,把跳轉目標收斂成站內相對路徑,擋掉外站與各種繞過寫法。
驗章時用的公鑰是直接編進產品程式裡的,而且三個環境(開發/測試/展示)的公鑰全部並列在同一份清單裡。
驗章的方式是「照上面帶著一個代號,按代號去清單裡查對應的公鑰」——所以任何一個環境簽出來的授權檔,其他環境都會承認。
開發環境的私鑰簽出來的授權檔,正式環境照樣認。
程式旁邊的說明寫明了這是刻意設計——為了支援日後換發新公鑰時不中斷服務(新版同時帶新舊兩把過渡)。設計本身沒錯,問題在於「過渡期間並列」與「三個不同環境並列」是兩件事,被同一個機制混在一起了。
決策者已裁定:等正式簽發站建好一併處理
這不是遺漏,是判斷過的取捨:目前根本還沒有正式站,等架上去的時候一併處理就好。現階段是展示階段、沒有外部客戶、三把私鑰都在自己機器上;要成立這條攻擊,得先拿到我們某一台機器上的私鑰——那時候問題早就不只是授權了。
但這個裁定有明確的失效條件:正式簽發站建好、開始對外簽發之後,這就變成一條真正的繞過路徑。屆時必須改成「出貨時按環境只編進該環境的公鑰」。
附帶發現並且當場修掉的一件事:檢視時發現打包流程裡本來有一道「檢查公鑰有沒有放對」的守門,但它檢查的那個檔案位置在先前一次搬遷後就不存在了——所以每次打包都用「跳過這道檢查」的方式繞過,沒有人發現守門早就壞了。這是小修正,已經修好。
問題:兩家客戶在極短的時間窗內同時匯入同一張授權檔,兩邊都會成功——因為檢查與寫入之間有一個空檔。
實際發生機率很低,所以評為低風險。
怎麼修好的:資料庫加一道「同一時刻每份授權只能有一份生效」的限制,由資料庫自己保證,不靠程式搶快。
這條有一個「照抄建議會做壞功能」的陷阱,值得記下來
工具原本建議的修法是「加一道整張表都不准重複的限制」,那會擋掉正當的流程——同一個客戶想換回舊的授權檔時,系統會為同一份授權再新增一列(新列生效、舊列留作歷史)。整張表不准重複會讓這條路直接失敗,而「換回舊照」是程式旁邊明文承認的正當用法。
照抄工具的建議會做壞功能。 最後採用的是「同一時刻只能有一份生效」,既擋住撞車、也留得住歷史。
一句話:這是整輪檢視裡大部分問題已經修好的一塊——十二條發現裡十條完成修正(1.21.0 出貨),剩下兩條各有明確歸屬:第 7 條決策者裁定等正式簽發站建好一併處理,第 8 條歸 1.21.1 hotfix(CM-2289),與弱點檢測那塊的資料庫隔離規則同一張卡。
接下來要做的:
兩個方法上的教訓值得記:
| 這塊的數字 | |
|---|---|
| 查了幾輪、幾個檔 | 4 輪、118 個檔案(客戶端 43、簽發站 75) |
| 一共查出幾條問題 | 12 條(本模組四輪 9 條,主系統掃描另查出 3 條:第 11~13 條;另有 1 條非資安的表單問題,第 10 條) |
| 本模組四輪那 9 條怎麼來的 | 工具四輪報出 7 條;人工核對另外查出 2 條(第 1 條與第 8 條)——而且這兩條都比工具報的任何一條更值得注意 |
| 最嚴重的有幾條 | 沒有「最嚴重」等級的;最高是 4 條高風險——其中 3 條已修好,第 8 條(資料庫那道門禁規則)未修 |
| 已經修好 | 10 條(1.21.0 出貨) |
| 已裁記錄不修 | 1 條——第 7 條(決策者裁定等正式簽發站建好一併處理,CM-1582 暫緩) |
| 未修 | 1 條——第 8 條,歸 1.21.1 hotfix(CM-2289) |
| 非資安小表 | 1 條——第 10 條(基礎包勾選鎖死),已裁定、未修、沒有修正卡 |
| 查過但這頁不能替它背書的 | 那把私鑰本身怎麼保管——四輪都沒查過 |