弱點管理最難的不是找出更多問題,而是在有限人力與變更窗口中,判斷哪一個風險必須立刻處理、哪一個可以排入近期版本,以及每項決策如何向工程、管理層與稽核人員說明。CVSS、EPSS、CISA KEV 與 SSVC 分別描述嚴重度、利用可能性、已知利用證據與決策脈絡;只有再結合資產適用性、暴露程度、業務影響與控制有效性,才能形成真正可執行的修復順序。

先講結論:弱點優先排序不是把 CVSS 由高到低排列
CVSS 9.8 的弱點可能存在於已下線的測試映像、未載入的元件或受到有效網路隔離的資產;CVSS 6.5 的弱點則可能已列入 CISA KEV、位於公開身分系統,並且能讓攻擊者取得敏感資料。若只按 Base Score 排隊,團隊會把技術嚴重度誤當成當下風險,既浪費修復量能,也可能延誤真正正在被利用的問題。
可靠排序應先回答『我們真的受影響嗎』,再回答『攻擊現在多可能發生』與『一旦成功會造成什麼後果』。接著檢查現有控制是否真的切斷攻擊路徑、修補或緩解需要什麼變更,最後才決定處理層級、期限、負責人與複驗方式。
因此優先順序不是一個永遠不變的分數,而是一項有時間戳記的決策。新 PoC、KEV 收錄、資產對外開放、補償性控制失效或業務用途改變,都可能讓同一筆弱點立即升級;資產移除、版本確認不受影響或可靠隔離則可能改變處理方式。
- 先確認資產、版本、元件路徑與弱點條件確實命中
- 分開保存嚴重度、利用可能性、已知利用、暴露與業務影響
- 用清楚的決策規則產生 P0–P4,而不是製造無法解釋的黑箱總分
- 每項決策都要有資料來源、查詢時間、Owner、期限與重新評估觸發條件
- 修補完成後仍需部署驗證、弱點複驗與風險關閉證據
先分清楚五個概念:CVE、CWE、CVSS、EPSS 與 KEV
這五個名詞常出現在同一份報告,卻回答不同問題。CVE 是特定公開弱點的共同識別碼;CWE 描述造成弱點的缺陷類型;CVSS 描述技術特性與嚴重度;EPSS 估計近期被觀察到實際利用的機率;CISA KEV 則列出已有可靠證據顯示遭野外利用的 CVE。
它們都不會自動告訴你企業是否部署了受影響版本、資產能否從攻擊者所在位置抵達、成功利用會碰到什麼資料,以及現有控制是否有效。這些問題必須由資產清冊、SBOM、部署證據、網路路徑、業務擁有者與安全驗證補上。
| 資料 | 主要回答 | 不代表 | 排序時的角色 |
|---|---|---|---|
| CVE | 是哪一個公開弱點 | 企業一定受影響 | 連結廠商公告、修補與威脅資料 |
| CWE | 缺陷屬於哪種根因 | 某個產品實例已確認 | 聚合同類問題並推動根因修復 |
| CVSS | 技術攻擊條件與影響多嚴重 | 完整企業風險 | 建立可比較的技術嚴重度基線 |
| EPSS | 未來 30 天被觀察到利用活動的估計機率 | 損害程度或資產適用性 | 加入會每日變化的利用可能性 |
| CISA KEV | 是否已有可靠的野外利用證據 | 企業一定部署該產品 | 命中適用資產時啟動緊急確認與處理 |
| SSVC | 在特定決策點下該採取何種行動 | 全球通用唯一答案 | 把證據映射成可解釋的處理層級 |
排序的第一個 Gate:資產真的命中這個弱點嗎?
任何分數之前都要先做 Applicability。版本字串、Package 名稱或 CPE 比對只能提供候選訊號;真正命中還要確認產品、版本、作業系統、架構、模組、Feature、設定、呼叫路徑與廠商公告列出的前置條件。若是 Container 或軟體供應鏈弱點,也要確認受影響元件是否出現在實際部署 Artifact,而不只是開發依賴或建置快取。
應將結果分成 affected、not affected、fixed、under investigation 與 unknown。Unknown 不是安全,也不應長期停留;它代表目前資料不足,需要指定 Owner 與期限補證。若供應商提供 VEX,可作為適用性判斷的一項證據,但仍應確認聲明來源、產品範圍、版本與更新時間。
| 確認層次 | 問題 | 可接受證據 | 常見錯誤 |
|---|---|---|---|
| 產品與版本 | 部署的是受影響產品與版本嗎? | Package Inventory、Runtime Banner、Vendor Tool | 只看掃描器猜測的版本 |
| 元件存在 | 弱元件真的進入正式 Artifact 嗎? | SBOM、Lockfile、Image Digest、Binary Analysis | 把 Dev Dependency 當成 Runtime |
| 功能可達 | 受影響功能有載入或可被呼叫嗎? | 設定、Route、Module、Runtime Trace | 只因 Library 存在就判定可利用 |
| 部署條件 | OS、架構、權限與設定符合嗎? | CMDB、IaC、Runtime Configuration | 忽略廠商公告的必要條件 |
| 修補狀態 | 是否已回補或以不同版本號修復? | Vendor Advisory、Patch ID、Build Provenance | 只依上游版本字串判斷 |
資料不完整時怎麼辦?不要把 Unknown 自動當 Low
大型環境一定會遇到 Owner 不明、版本辨識失敗、資產離線、SBOM 過期或掃描憑證不足。最危險的做法是讓缺資料的項目自然落到低優先,因為看不見可能只是觀測能力不足,而不是風險較低。
可將資料信心獨立標示為 High、Medium、Low。若弱點具有 KEV、對外暴露或高業務影響訊號,但適用性仍未知,應提高調查優先級並縮短確認時限;若過期仍無法確認,升級給資產或服務 Owner,而不是讓 Ticket 無限等待。
- Unknown Applicability:要求補齊版本、元件與功能證據
- Unknown Exposure:要求確認 DNS、Firewall、Gateway 與身分邊界
- Unknown Owner:由資產治理流程指派暫時責任人並追查擁有者
- Unknown Business Impact:先按可能支援的重要服務處理,直到 BIA 證據更新
- 所有 Unknown 都要有到期日、升級路徑與下一個可驗證動作
CVSS 4.0 正確用途:描述 Severity,不是替企業算 Risk
FIRST 將 CVSS 4.0 定義為溝通軟體、硬體與韌體弱點特性與嚴重度的開放框架。Base 指標描述跨時間與使用環境相對穩定的技術特性;Threat 反映 Exploit Maturity;Environmental 依企業實際部署、控制與機密性、完整性、可用性需求調整;Supplemental 提供安全、人工作業、自動化、復原與供應商急迫性等額外脈絡,但不修改最終數值。
CVSS-B 採用未緩解環境與合理最壞情境的假設。FIRST 的使用者與消費者指南都強調 Base Score 測量的是 Severity,不應單獨拿來評估 Risk。企業若能維護 Threat 與 Environmental 指標,可產生 CVSS-BT、CVSS-BE 或 CVSS-BTE,讓分數更接近實際部署脈絡;但法規、客戶、財務、生命安全與聲譽後果等因素仍在 CVSS 範圍之外。
| 指標組 | 描述內容 | 通常由誰提供 | 是否影響分數 |
|---|---|---|---|
| Base | 攻擊條件與對受影響/後續系統的技術影響 | 產品供應商、研究者或評估者 | 是 |
| Threat | 目前 Exploit Maturity | CVSS 消費者依威脅情報更新 | 是 |
| Environmental | 本地部署條件、控制與 CIA Requirements | 實際管理資產的企業 | 是 |
| Supplemental | Safety、Automatable、Recovery、Value Density、Response Effort、Provider Urgency | 供應商或企業依指標定義 | 否 |
不要只存 9.8:CVSS Vector String 才能說明判斷
相同分數可能來自不同攻擊條件與影響組合。只有數字無法回答攻擊是否需要網路可達、是否需要低權限帳號、是否仰賴使用者互動,或影響落在受影響系統還是後續系統。FIRST 要求發布 CVSS 資料時同時提供分數與 Vector String,讓接收者能理解計算依據。
資料模型應保存 CVSS 版本、Score Nomenclature、Base/Threat/Environmental 分數、完整 Vector、來源與評估時間。不要拿 v3.1 與 v4.0 的數字直接排序,也不要把不同供應商的向量無條件覆蓋;若存在多個來源,保留來源差異並由分析人員決定哪一個符合實際產品與部署。
| 面向 | CVSS 4.0 指標 | 實務問題 | 排序價值 |
|---|---|---|---|
| 攻擊位置 | AV | 攻擊者可從網路、相鄰網路、本機或實體接觸嗎? | 連結實際 Exposure |
| 利用條件 | AC、AT | 是否有難以穩定控制的技術或部署前提? | 辨識可重複性與限制 |
| 身分與互動 | PR、UI | 需要何種權限或受害者行為? | 建立攻擊路徑 |
| 直接影響 | VC、VI、VA | 受影響系統的資料與服務會如何改變? | 連結資產 CIA 需求 |
| 後續影響 | SC、SI、SA | 是否進一步影響其他系統? | 辨識橫向與連鎖後果 |
| 利用成熟度 | E | 目前是未報告、PoC 還是已遭攻擊? | 隨時間更新 Threat |
CVSS v3.1 與 v4.0 可以直接比較嗎?
不建議把不同版本的分數當成同一尺度直接做大小比較。CVSS 4.0 新增 Attack Requirements,細分 User Interaction,將受影響與後續系統的影響分開呈現,並重整 Threat 與 Supplemental 指標。相同弱點在 v3.1 與 v4.0 下可能得到不同分數,原因是模型與資訊表達方式不同,不代表弱點本身突然變嚴重或變安全。
過渡期間應在報表與 API 明確顯示版本,並以同版本群組比較。若政策門檻仍以 v3.1 撰寫,不要悄悄換成 v4.0 後沿用同一門檻;先用歷史資料做影響分析,更新 SLA 規則,再記錄生效日期與例外處理。
EPSS 是什麼?它預測 30 天利用可能性,不衡量損害
FIRST 的 Exploit Prediction Scoring System 是資料驅動模型,估計一筆已發布 CVE 在未來 30 天內被其資料來源觀察到野外利用活動的機率。EPSS 每日重新計算並發布 0 到 1 的 Probability 與相對 Percentile;分數會因新的利用程式、威脅訊號與其他特徵改變。
EPSS 回答 Likelihood 的一部分,不回答 Impact,也不知道企業是否部署受影響產品。0.20 表示模型估計在相似條件下約有 20% 的 30 天觀察利用機率,不代表有 20% 資產已被入侵、弱點嚴重度 20 分,或企業有 20% 機率遭受損失。
- Probability:模型的主要輸出,表示未來 30 天觀察到利用活動的估計機率
- Percentile:相對所有已評分 CVE 的排名位置,不是機率
- Created/Score Date:判讀與稽核必須保存的查詢日期
- Trend:分數快速上升可作為重新排序觸發條件,不應只看首次匯入值
- Applicability 與 Impact:EPSS 不提供,必須由企業自己的資料補上
EPSS Probability 與 Percentile 最容易被搞混
EPSS Probability 是絕對的模型估計;Percentile 是相對排名。某筆 CVE 的 Probability 為 5%,可能因整體利用基準率很低而落在很高的 Percentile。把 95th Percentile 寫成『95% 會被利用』會把兩種完全不同的數值混在一起,造成錯誤升級。
FIRST 建議在溝通單一 EPSS Score 時以 Probability 為主,並盡可能同時呈現 Percentile。若企業只在自己的受影響清單中重算排名,必須明確標註這是 Internal Rank,不能冒充 FIRST 對全部公開 CVE 提供的 Percentile。
| 欄位 | 正確解讀 | 可以用來 | 不可解讀為 |
|---|---|---|---|
| EPSS Probability | 未來 30 天觀察利用活動的估計機率 | 門檻、趨勢與量能分析 | 損害程度或入侵率 |
| EPSS Percentile | 在全部 EPSS CVE 中的相對位置 | 理解相對稀有度與排序位置 | 同數值的利用機率 |
| Internal Rank | 企業受影響弱點集合中的排序 | 安排自身處理隊列 | FIRST 官方 Percentile |
| Score Change | 新訊號使模型估計發生變化 | 觸發重新評估 | 證明企業已受攻擊 |
EPSS 門檻怎麼訂?從修復量能與 Coverage/Effort 開始
沒有一個適用所有企業的 EPSS Critical 門檻。FIRST 不替 EPSS 定義固定的 Low、Medium、High 分箱,因為任意切點會壓縮資訊,也可能把幾乎相同的分數分到不同處理方式。企業應先估算每個週期能安全處理多少項、希望涵蓋多少未來利用活動,再以歷史資料觀察 Coverage 與 Effort 的取捨。
門檻也不應覆蓋 KEV、攻擊跡象或高影響資產等強制 Gate。較合理的做法是:KEV 與內部 Exploitation 先進入獨立快速通道,剩餘候選再以 EPSS、Exposure、Impact 與維護窗口排序。每季回顧門檻實際產生多少 Ticket、逾期率、修補失敗率與事後命中,而不是只追求更高的數字。
CISA KEV 是什麼?它是已知遭利用清單,不是預測模型
CISA Known Exploited Vulnerabilities Catalog 是已有可靠證據顯示遭野外利用的 CVE 權威清單。CISA 明確建議組織把 KEV 當作弱點管理優先排序框架的輸入;美國聯邦文職行政機關另受 BOD 22-01 規範,必須依 Catalog Due Date 完成指定處置。其他組織可參考,但應依自身法規、服務承諾與風險容忍度制定期限。
KEV 的價值在於 Evidence of Exploitation。它和 EPSS 的差異是:KEV 表示已有足夠證據確認野外利用,EPSS 則預測未來 30 天利用可能性。EPSS 很低但已在 KEV 的項目,不能因模型分數低而降級;高 EPSS 但尚未進 KEV 的項目,也不能被誤解為已確認攻擊。
| 狀態 | 代表意義 | 企業下一步 | 不應做的事 |
|---|---|---|---|
| KEV 命中+資產適用 | 已有野外利用證據且企業受影響 | 立即確認暴露、IoC、緩解與修補 | 等待 EPSS 升高才處理 |
| KEV 命中+適用性未知 | 威脅明確但資產證據不足 | 設定短時限完成 Inventory 與版本確認 | 直接標記不受影響 |
| 高 EPSS+非 KEV | 近期利用可能性較高但未被 KEV 確認 | 結合暴露與影響加速處理 | 寫成已遭實際利用 |
| 低 EPSS+非 KEV | 目前利用訊號較弱 | 仍檢查高影響、內部威脅與本地條件 | 永久忽略或取消追蹤 |
KEV 命中後的第一小時要確認什麼?
KEV Feed 命中不應只建立一般 Ticket。第一階段是 Scoping:找出所有受影響產品、版本、Internet Exposure、管理介面、身分權限、資料類型、Owner 與可用 Patch。第二階段是 Threat Hunting:依廠商與 CISA 公告確認 Log、程序、帳號、檔案、網路連線與其他 IoC 是否存在異常。第三階段才是 Patch、Mitigation、Isolation 或 Service Disable。
若資產位於邊界、VPN、身分、郵件、管理或遠端存取路徑,即使尚未觀察到入侵,也應以更短時限處理。若已發現利用跡象,工作已從 Vulnerability Management 轉成 Incident Response;單純安裝 Patch 不足以證明攻擊者沒有持久化或竊取憑證。
- 確認受影響產品、版本、部署數量、Owner 與網路可達性
- 核對 Vendor Advisory、Required Action、Patch、Workaround 與 CISA Due Date
- 保全必要 Log 並依可信公告執行入侵跡象檢查
- 若有跡象,立即啟動事件應變、憑證輪替與影響範圍調查
- 修補後驗證版本、控制、服務健康與外部攻擊面已更新
SSVC 提供什麼?把分數排序改成可解釋的決策樹
Stakeholder-Specific Vulnerability Categorization 的核心不是再發明一個總分,而是依特定利害關係人的決策需求,選擇可觀察的 Decision Points,再映射到明確 Outcome。CERT/CC 的 Deployer Model 使用 Exploitation、System Exposure、Automatable 與 Human Impact,輸出 Defer、Scheduled、Out-of-Cycle 或 Immediate。
企業可以採用這種方法建立自己的 P0–P4 規則,但不能只複製結果名稱。每個 Decision Point 都要有定義、資料來源、負責人與 Unknown 處理方式;每條路徑要能解釋為什麼得到這個行動。這比把 CVSS、EPSS 與資產分數任意相乘,更容易稽核與調整。
| Decision Point | 要回答的問題 | 企業資料來源 | 可能輸出 |
|---|---|---|---|
| Exploitation | 無證據、公開 PoC 或已遭主動利用? | KEV、威脅情報、內部偵測、Vendor | 提高調查與修復急迫性 |
| System Exposure | 攻擊者能否抵達受影響功能? | ASM、Firewall、Gateway、Identity、Segmentation | 區分 Small、Controlled、Open |
| Automatable | 偵察、武器化、傳遞與利用能否可靠自動化? | Exploit Analysis、Attack Path、Rate Controls | 辨識大量攻擊與蠕蟲風險 |
| Human Impact | 對任務與人員安全的後果? | BIA、Safety、Service Criticality、Data Classification | 決定是否超越例行窗口 |
Exposure 不是只有 Public 或 Internal 兩種
對外 IP 與 DNS 是重要訊號,但無法完整描述攻擊路徑。受 VPN、SSO 或 Allowlist 保護的服務仍可能被已入侵帳號、合作夥伴或內部主機抵達;內部資產若位於高權限管理網段,也可能成為橫向移動的關鍵節點。
Exposure 應同時評估網路可達性、身分門檻、必要權限、攻擊前置條件、Egress、分段與偵測控制。控制只有在範圍正確、設定可驗證、無旁路且持續監控時才可調降風險;『有 WAF』或『在內網』不是自動成立的補償性控制。
| 等級 | 典型條件 | 驗證證據 | 排序影響 |
|---|---|---|---|
| Open | Internet 可直接抵達受影響服務或管理面 | 外部探測、DNS、Firewall、Route | 大幅提高急迫性 |
| Controlled | 需驗證、VPN、Partner 或特定網路,但仍有可行路徑 | IdP Policy、ACL、Network Path、Role | 依控制強度與憑證風險調整 |
| Small | 嚴格分段且僅少數可信主體可達 | Segmentation Test、Jump Host、mTLS、Deny Log | 可降低機率但不消除高影響 |
| Unknown | Inventory 或路徑證據不足 | 待補資料 | 提高調查優先,不自動視為 Low |
Business Impact 要從服務與資料出發,不是只貼 Critical Asset 標籤
NIST 的 Business Impact Analysis 指引強調先理解 Mission-Essential Functions 與支援它們的資產。對弱點排序而言,應具體描述成功利用會造成哪些情境:帳號接管、敏感資料讀取、交易竄改、付款中斷、供應鏈擴散、法規通報、生命安全或長時間復原。
資產重要度也要帶入 Dependency。看似一般的身分服務、DNS、CI/CD、Secret Store 或管理平台,可能支援大量核心系統;單一弱點若能跨越信任邊界或取得高 Value Density,實際影響遠高於該主機本身。
| 面向 | 要記錄的問題 | 證據 Owner | 常見後果 |
|---|---|---|---|
| 機密性 | 可接觸哪些資料、多少主體與哪些法規範圍? | Data Owner、Privacy | 個資、憑證、商業機密外洩 |
| 完整性 | 可修改何種交易、設定、權限或供應鏈產物? | Service Owner、Finance、Engineering | 詐欺、未授權變更、惡意發布 |
| 可用性 | 停機多久、是否有替代流程與復原目標? | BCP、SRE、Operations | 營運中斷、SLA 違約 |
| 橫向影響 | 能否取得其他系統、Tenant 或管理平面? | Architecture、IAM、Network | 擴大攻擊範圍與權限 |
| 安全與公共影響 | 是否涉及人員、設備或關鍵服務安全? | Safety、OT、Risk | 人身傷害或公共服務中斷 |
補償性控制何時可以調降優先級?
控制必須針對這個弱點的實際 Attack Path 有效。例如 WAF 規則可能暫時阻擋特定 HTTP Payload,卻無法處理管理介面、非 HTTP Protocol、編碼變形或已登入使用者的越權;網路隔離可能降低遠端攻擊,但不能阻擋本機惡意程式或已進入同區域的攻擊者。
要用控制調降優先級,至少記錄控制目標、作用位置、涵蓋資產、規則版本、測試證據、旁路分析、監控與失效日期。控制 Owner 必須接受責任,並設定永久修復期限。若只能降低 Likelihood 而不能降低 Impact,決策紀錄也要明確分開。
- 有效性:已用代表性攻擊案例驗證阻擋,而不只是看到設定存在
- 完整性:涵蓋所有入口、版本、協定與受影響資產,沒有已知旁路
- 持續性:設定受到版本控制、監控與變更偵測,不會無聲失效
- 可回復性:控制不造成不可接受的服務副作用,且有回復方案
- 時效性:臨時控制有到期日,不能永久取代根因修復而無人追蹤
建立優先排序 Gate:先處理不能等待的情況
與其把所有訊號壓成一個分數,先建立少數不可被平均掉的 Gate。只要企業受影響且出現內部利用跡象、KEV 命中公開核心資產、可直接造成管理權限接管,或涉及生命安全與不可逆後果,就應進入 P0/P1 快速通道。
Gate 後的剩餘項目,再依 EPSS、Exposure、CVSS Vector、Business Impact、Control Strength、Patch Availability 與 Change Risk 排列。這樣可以避免一個非常高的資產分數把不成立的弱點升級,也避免低 CVSS 把已利用問題壓到隊列後方。
| Gate | 成立條件 | 立即行動 | 退出條件 |
|---|---|---|---|
| Incident | 內部 Log、EDR 或第三方證據顯示已遭利用 | 啟動 IR、保全證據、遏止與修復 | 事件調查與復原完成 |
| KEV+Open | 適用 KEV 位於公開或邊界關鍵資產 | 當日 Scoping、Hunt、Mitigation/Patch | 複驗且暴露已更新 |
| Privilege Control | 可取得管理權、繞過身分或跨 Tenant | 立即限制入口並安排緊急變更 | 攻擊路徑被可靠切斷 |
| Safety/Mission | 可能造成安全、核心任務或不可逆重大影響 | 跨部門風險決策與緊急處置 | 經權責人確認剩餘風險 |
| Unknown Critical | 高威脅訊號但適用性/Owner 不明 | 限時補證並管理升級 | 確認 affected 或 not affected |
P0 到 P4 怎麼定義?把行動與時限綁在一起
Priority 必須對應可觀察的行動,不只是顏色。下列 P0–P4 是制度設計範例,不是通用法規;企業應依產業要求、契約、營運窗口、復原能力與風險承受度調整。每一級至少拆成 Triage、Mitigation、Permanent Fix 與 Retest 四個時限。
同一項弱點的 Priority 可以變動,但歷史不可被覆蓋。每次升降級都要保存前後狀態、觸發訊號、核准人與時間。這能解釋為何某項原本排程處理的弱點,在進入 KEV 後改成 Out-of-Cycle。
| 層級 | 典型條件 | Triage/Mitigation | 永久修復與複驗 |
|---|---|---|---|
| P0 Incident | 已確認或高度懷疑正在被利用 | 立即啟動事件應變與遏止 | 依 IR 計畫修復、復原與 Hunt |
| P1 Immediate | KEV+Open、高影響身分/邊界、重大可自動化路徑 | 數小時至 1 個工作日確認並降低暴露 | 以緊急變更或最短可行窗口完成 |
| P2 Out-of-Cycle | 高 EPSS、高影響或控制不足,不宜等例行週期 | 1–3 個工作日確認與安排 | 近期非例行版本完成並複驗 |
| P3 Scheduled | 問題成立但利用與影響可由控制管理 | 納入正常 Backlog 與 Owner | 下一個約定維護/開發週期 |
| P4 Monitor/Defer | 低暴露、低影響或可靠控制,但仍需追蹤 | 記錄理由、監控與到期日 | 觸發條件成立時重新評估 |
三個案例:為什麼 CVSS 最高的不一定排第一?
以下案例刻意使用不同訊號,示範排序理由。重點不是複製數字,而是讓每項決策能清楚指出 Applicability、Threat、Exposure、Impact、Control 與 Action。
| 案例 | 主要證據 | 建議層級 | 理由 |
|---|---|---|---|
| 公開 VPN 的 KEV RCE | 受影響版本、Internet-facing、KEV、無有效旁路控制 | P1 Immediate;若有 IoC 則 P0 | 已知利用且位於邊界,不能等待例行週期 |
| 內部測試工具 CVSS 9.8 | 不含正式資料、嚴格隔離、無路由、即將銷毀 | P3 或限時 P4 | Severity 高但 Exposure 與 Impact 低;仍需確認隔離與退役 |
| 公開客戶 API 的 CVSS 6.5 BOLA | 可跨 Tenant 讀取個資、無 KEV/EPSS | P1 或 P2 | 企業自研弱點沒有 CVE,仍具有直接重大業務影響 |
| 高 EPSS Library 但 Function 未載入 | SBOM 命中、Runtime 證明路徑不可達、Vendor VEX | P4 Monitor | 利用訊號高但目前不適用;監控部署與 VEX 變更 |
| 低 EPSS 的管理權限繞過 | 僅需內部帳號、可控制 CI/CD Secret | P2 | 外部利用訊號低,但權限與供應鏈影響高 |
不要把所有欄位相乘:看似精準的公式可能掩蓋錯誤
CVSS、EPSS、Asset Criticality 與 Control Score 的尺度、定義與不確定性不同。任意相乘後得到 8.347,不代表風險真的精確到小數點第三位;更糟的是,任何一個被設成零的欄位都可能把 KEV 或高影響問題完全消掉。
如果組織需要數值輔助大量排序,可先用不可覆蓋的 Gate 保護重大情境,再在同一 Priority Bucket 內用透明、可回測的分數安排順序。權重、正規化、Missing Value、截斷與 Tie-breaker 都要公開,並定期拿實際利用、逾期與事件資料驗證,而不是把 Dashboard 排名當成真相。
- 先定義每個欄位的尺度、方向、更新頻率與資料 Owner
- 不得讓 Unknown 或缺值默認為 0 風險
- KEV、內部 Exploitation、Safety 等 Gate 不得被平均掉
- 分數只用於同一決策層級內排序,最終理由仍以可讀證據呈現
- 保留模型版本並用歷史結果回測 Coverage、Effort 與 False Priority
弱點優先排序的最小資料模型
沒有一致資料模型,排序只能依賴試算表與個人記憶。每一筆 Finding 應能連結 Vulnerability、Affected Asset、Deployment、Owner、Evidence、Threat Signal、Decision、Remediation 與 Verification。CVE 是重要 Join Key,但企業自研的 BOLA、XSS 或業務邏輯弱點可能沒有 CVE,資料模型不能以 CVE 為唯一主鍵。
所有會變動的欄位都要保存 observed_at 或 effective_at,例如 EPSS、KEV、Exposure、Asset Owner 與 Control Status。這讓系統能在資料過期時重新查詢,也能解釋某天的決策是基於哪個版本的證據。
| 資料域 | 必要欄位 | 更新觸發 | 品質控制 |
|---|---|---|---|
| Finding | ID、位置、證據、信心、首次/最後發現 | 掃描、人工驗證、複驗 | 去重不丟失位置與歷史 |
| Asset | Asset ID、環境、Owner、服務、資料、Internet Exposure | CMDB、部署與網路變更 | 禁止只用 Hostname 自由文字 |
| Vulnerability | CVE/CWE、Vendor、Version、Advisory、Fix | 公告與 Feed 更新 | 來源與版本可追溯 |
| Severity | CVSS Version、Score Type、Vector、Source | 上游評分更新 | 不同版本不可混算 |
| Threat | EPSS Probability/Percentile/Date、KEV/Date、PoC、Internal IoC | 每日 Feed 與事件訊號 | 保留時間與來源 |
| Decision | Applicability、Priority、Reason、Approver、Due、Next Review | 任何訊號或情境變更 | 歷史不可覆蓋 |
| Closure | Patch/Mitigation、Deployment、Retest、Residual Risk | 變更與複驗 | 未驗證不得標 Closed |
九階段可稽核流程:從 Feed 命中到修復複驗
成熟流程要把資料匯入、技術確認、業務決策與修復驗證串成同一條證據鏈。每個階段都有明確輸入、輸出與 Owner,才能避免掃描平台顯示已關閉,但實際部署仍未更新。
下列九階段可以由工具自動化資料蒐集與提醒,但 Applicability、Business Impact、Control Effectiveness 與風險接受仍需要對環境負責的人員判斷。
| 階段 | 核心工作 | 輸出證據 | 主要 Owner |
|---|---|---|---|
| 01 Normalize | 匯入掃描、SBOM、Advisory 與 CVE 資料並去重 | Finding 與來源關係 | Vulnerability Platform |
| 02 Match | 確認 Asset、Product、Version、Component 與 Deployment | affected/not affected/unknown | Asset/Service Owner |
| 03 Validate | 驗證弱點條件、證據信心與實際位置 | 最小重現與適用條件 | Security Analyst |
| 04 Enrich | 加入 CVSS Vector、EPSS、KEV、PoC 與內部偵測 | 帶時間戳的 Severity/Threat | Vulnerability/Threat Team |
| 05 Context | 確認 Exposure、Business Impact、Dependency 與 Controls | Attack Path 與 Impact Scenario | Architecture/Business Owner |
| 06 Decide | 套用 Gate 與決策樹,指派 P0–P4 | 理由、Approver、Due Date | Risk/Security Owner |
| 07 Treat | Patch、Upgrade、Config、Isolation 或其他 Mitigation | Change、Artifact、Control Evidence | Engineering/Operations |
| 08 Verify | 確認部署成功、原攻擊失敗且服務正常 | Retest 與 Regression 結果 | Security+Service Owner |
| 09 Learn | 更新根因、規則、資產、例外與指標 | Post-Action 與流程改善 | Program Owner |

自動化應該做什麼?把人力留給脈絡與例外
自動化很適合抓取 KEV JSON、EPSS API、NVD/Vendor Advisory、SBOM、CMDB、ASM 與掃描結果,完成 ID 對應、時間戳記、變更偵測、重複項聚合與到期提醒。當 KEV 新增、EPSS 大幅變化、資產變成公開或 Owner 異動時,系統可以重新跑決策並通知負責人。
但自動化不應自行宣告 Business Impact、補償性控制有效或風險已接受。這些判斷需要系統與業務脈絡,而且必須留下可追責核准。若工具只能產生一個無法拆解的 Risk Score,也應保留原始訊號,避免日後無法重建決策。
| 工作 | 自動化角色 | 人工角色 | 必要防護 |
|---|---|---|---|
| Feed Enrichment | 每日抓取 EPSS、KEV、Vendor 與時間序列 | 選擇可信來源與衝突規則 | 快取、來源驗證、失敗告警 |
| Asset Match | 依 Package、CPE、PURL、Digest 建立候選 | 確認功能、設定與部署條件 | 避免模糊比對直接關閉 |
| Priority | 執行透明 Gate/Decision Table | 評估 Impact、Controls 與 Unknown | 保存規則版本與理由 |
| Ticket Routing | 依 Owner、Service、Priority 建單與提醒 | 承接、排程與風險升級 | Owner 缺失不可靜默失敗 |
| Closure | 檢查部署與重新掃描訊號 | 確認最小攻擊案例與剩餘風險 | 不能只因 Ticket Closed 就結案 |
Feed 與資料更新失敗,本身就是一項風險
EPSS 每日更新、KEV 持續新增,Vendor Advisory 也可能補充受影響版本與緩解方式。若 Pipeline 數日沒有抓到新資料,Dashboard 看起來仍正常,但排序已經過期。系統應監控最後成功時間、資料筆數、Schema 變更、HTTP/簽章錯誤與異常空檔。
不要讓最新值直接覆蓋歷史。保留 raw source、retrieved_at、effective date 與 transformation version,才能在來源更正、模型變更或稽核時重建當時決策。對無法取得資料的情況,顯示 Stale/Unavailable,而不是沿用舊值卻標成最新。
- 監控 EPSS、KEV、Vendor、CMDB、SBOM 與掃描資料的 Freshness SLO
- Schema、欄位型別、筆數與日期異常必須阻止錯誤資料進入正式決策
- 來源衝突時保存所有值與 Provenance,不任意選最大或最新數字
- Priority Engine 每次執行都保存規則版本與輸入快照
- 資料恢復後重新評估受影響隊列,並記錄升降級結果
沒有 Patch 時怎麼處理?選擇真正切斷攻擊路徑的措施
沒有官方 Patch 不等於只能接受風險。可以依弱點條件採取停用受影響功能、限制管理面、隔離資產、移除公開路由、收緊身分與權限、阻擋 Egress、更新 WAF/IPS 規則、降低服務權限、關閉不必要 Protocol 或暫停高風險整合。
每項 Mitigation 都要標明它降低的是哪一段 Attack Path、剩餘風險與驗證結果。若控制只能增加攻擊難度,不能消除影響,就不應把 Finding 標成 Fixed;應標記 Mitigated,持續監控 Vendor Update,並保留永久修復期限。
| 措施 | 主要降低 | 必須驗證 | 狀態 |
|---|---|---|---|
| Disable Feature/Service | 移除受影響功能 | 所有入口已停用且無旁路 | Mitigated,等待正式修復或退役 |
| Network Isolation | 降低可達性 | 攻擊者與橫向路徑確實被阻擋 | Mitigated |
| WAF/IPS Rule | 阻擋已知 Payload/Protocol | 代表性變形、編碼與旁路測試 | Temporary Mitigation |
| Privilege Reduction | 降低成功後影響 | 服務帳號、檔案、Secret 與網路權限 | Residual Risk Exists |
| Asset Retirement | 移除受影響部署 | DNS、Route、Compute、Credential 與資料均已清除 | Closed after Verification |
風險接受與例外必須有到期日
Risk Acceptance 代表問題成立但暫不修復,不是誤報或遺忘。申請人應描述業務理由、受影響範圍、Threat、Exposure、Impact、現有控制、剩餘風險、監控、永久處理計畫與到期日,再由具備權責的人員核准。
任何會改變優先級的訊號都應提前終止例外,例如進入 KEV、EPSS 顯著上升、資產改為公開、控制失效、攻擊跡象或業務資料敏感度提升。到期時若仍要接受,必須重新提供當下證據,不能自動續期。
修補已部署不代表已關閉:還要做四層驗證
NIST 將 Patch Management 描述為識別、排序、取得、安裝並驗證 Patch、Update 與 Upgrade 的完整流程。Ticket 顯示 Done 或套件管理器執行成功,只證明有人做過變更,不證明所有受影響 Instance 已更新,也不證明原攻擊路徑失效。
關閉前至少驗證四層:Deployment 確認所有目標版本或設定已生效;Security Retest 重播原最小案例;Regression 確認正常功能與控制沒有被破壞;Exposure Validation 確認外部攻擊面、Cache、舊節點與備援環境沒有保留弱版本。
| 驗證層 | 問題 | 證據 | 失敗時處理 |
|---|---|---|---|
| Deployment | 所有 Instance 都更新了嗎? | Version、Digest、Config、Deployment Record | 找出漏部署、回滾或 Shadow Asset |
| Security Retest | 原弱點還能重現嗎? | 相同前置條件與最小攻擊案例 | 回到根因與修復設計 |
| Regression | 正常流程、授權與監控仍正常嗎? | 功能、自動化與觀測測試 | 修正副作用並重新驗證 |
| Exposure | 公開與內部路徑都已更新嗎? | ASM、DNS、LB、Gateway、Backup/DR | 補齊所有環境後再關閉 |
如何衡量優先排序有沒有真的變好?
弱點數量下降不一定代表風險下降,可能只是掃描範圍變小或大量 Low 被關閉。指標應觀察高急迫風險被多快確認、Mitigate、Fix 與 Verify,以及資料與決策品質。將 Metrics 依 Priority、Asset Tier、Exposure、Owner 與根因分層,才能找到真正瓶頸。
也要防止指標驅動錯誤行為。若只考核 MTTR,團隊可能優先關閉容易項目或濫用 Risk Acceptance;若只考核 Open Count,可能刪除重複位置卻失去攻擊面資訊。指標應與 Coverage、Evidence Quality、Reopen、Exception Age 與 Incident Outcome 一起看。
| 指標 | 衡量目的 | 建議切分 | 警訊 |
|---|---|---|---|
| Time to Triage/Mitigate/Verify | 各階段反應與完成速度 | P0–P4、KEV、Open、Owner | 高急迫項目仍等一般排程 |
| KEV Applicable Coverage | KEV 資產確認與處理覆蓋 | 產品、資產層級、環境 | Unknown 長期未解 |
| Priority Aging | 不同層級逾期與停滯 | 原因、團隊、變更窗口 | 例外成為永久狀態 |
| Decision Data Freshness | 排序輸入是否仍可信 | EPSS、KEV、CMDB、SBOM、Exposure | Dashboard 正常但 Feed 過期 |
| Retest Pass/Reopen Rate | 修復品質與根因處理 | 弱點類型、修復方式、團隊 | 大量假性關閉或回歸 |
| Coverage vs Effort | 有限量能捕捉多少高威脅項目 | EPSS Threshold、KEV Gate | 處理量增加但威脅覆蓋未改善 |
最常見的十個排序錯誤
排序制度失效通常不是缺少更多 Feed,而是把資料定義、時間與責任混在一起。下列錯誤應直接納入流程與 Dashboard 的品質檢查。
- 把 CVSS Base Score 直接命名為 Risk Score
- 把 EPSS Percentile 誤寫成利用機率
- 因 EPSS 低就降低已列入 KEV 或已有內部利用證據的弱點
- 未確認產品、版本、功能與部署條件就大量派工
- 把 Unknown Applicability、Unknown Owner 或 Feed 失敗當成 Low
- 認為 Internal、VPN、WAF 或 MFA 一定能消除攻擊路徑
- 用任意加權公式製造精確小數,卻無法解釋權重與缺值
- 只在發現當天抓 EPSS 與 KEV,後續從不重新排序
- Ticket 完成或 Patch Command 成功就直接關閉弱點
- 風險例外沒有到期日、重新評估觸發與權責核准
30、60、90 天導入路線圖
不需要等所有系統資料完美才開始,但要先保護高急迫情境。前 30 天建立最低可行的 KEV 與公開資產 Gate;60 天補上 EPSS、CVSS Vector、Owner、Asset Tier 與透明決策表;90 天再導入自動重新排序、控制驗證、SLA、複驗與成效回測。
每個階段都應從少量關鍵服務驗證資料與工作流,再擴到全組織。若 Inventory 與 Owner 品質不足,優先修正治理底座,而不是用更多權重掩蓋缺失。
| 階段 | 制度目標 | 技術工作 | 完成證據 |
|---|---|---|---|
| 0–30 天 | 建立 KEV/Incident/Open Asset 快速通道 | 接入 KEV、盤點邊界資產、指派 Owner | 高急迫命中能在時限內 Triage |
| 31–60 天 | 建立一致資料與 P0–P4 Decision Table | 加入 CVSS Vector、EPSS、Asset Tier、Exposure | 每項 Priority 都有可讀理由與來源 |
| 61–90 天 | 完成 Treatment、Retest、Exception 與 Metrics 閉環 | 自動重新排序、Freshness、SLA、複驗證據 | 可量測 Aging、Coverage、Effort 與 Reopen |
最終檢查清單:每一筆高優先弱點都應回答這些問題
一項排序若無法回答下列問題,就還不足以支持緊急變更、延後處理或風險接受。可將清單做成 Ticket Template 與 Review Gate,確保不同分析人員產生一致、可追蹤的決策。
- 受影響的是哪個 Asset、Service、Environment、Version 與實際功能?
- 判定 affected、not affected 或 unknown 的證據與時間是什麼?
- CVSS 使用哪個版本、Score Type、Vector 與資料來源?
- EPSS Probability、Percentile 與查詢日期分別是多少?
- 是否列入 CISA KEV、有公開 PoC、內部 IoC 或其他利用證據?
- 攻擊者如何抵達受影響功能,需要何種身分與前置條件?
- 成功利用會對資料、交易、服務、其他系統與人員造成什麼後果?
- 補償性控制切斷哪段攻擊路徑,如何驗證,有沒有旁路與到期日?
- Priority、理由、Owner、Approver、Triage/Mitigation/Fix/Retest 期限是什麼?
- 修復後有哪些 Deployment、Security Retest、Regression 與 Exposure 證據?
資料來源
- FIRST — CVSS v4.0 Specification Document↗
- FIRST — CVSS v4.0 User Guide↗
- FIRST — CVSS v4.0 Consumer Implementation Guide↗
- FIRST — Exploit Prediction Scoring System (EPSS)↗
- FIRST — Using EPSS↗
- FIRST — EPSS Probability, Percentiles, and Binning↗
- CISA — Known Exploited Vulnerabilities Catalog↗
- CISA — BOD 22-01: Reducing the Significant Risk of Known Exploited Vulnerabilities↗
- CERT/CC — SSVC Deployer Decision Model↗
- NIST SP 800-40 Rev. 4 — Guide to Enterprise Patch Management Planning↗
- NISTIR 8286D — Using Business Impact Analysis to Inform Risk Prioritization and Response↗
- NIST SP 1800-31 — Improving Enterprise Patching for General IT Systems↗


