刷弱點管理那一章的時候,題目很常直接丟一串這種東西出來:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
我第一次看到的感覺Be like: what?。
後來發現它其實沒有很難,每一個縮寫知道他是甚麼意思,那就簡單多了。
CVSS 全名 Common Vulnerability Scoring System,通用弱點評分系統,由 FIRST 這個組織維護。它做的事是把一個漏洞用同一套問題問一遍,最後算出 0 到 10 的分數。
分數旁邊通常會掛一個等級,0.1–3.9 是 Low、4.0–6.9 Medium、7.0–8.9 High、9.0 以上 Critical。
那串字的格式是:開頭 CVSS:3.1 講用的是哪一版,後面每一段用 / 隔開,冒號前面是指標、後面是答案。
所以 AV:N 讀起來就是「AV等級屬於N」。
我自己的理解是把它切成兩半看,前半段在問好不好打,後半段在問打下去壞掉什麼。
AV(Attack Vector,攻擊向量),攻擊者要站多近才打得到。
N(Network)隔著網際網路就能打;A(Adjacent)要在同一個網段,像同一個 Wi-Fi、同一個藍牙範圍;L(Local)要先能在那台機器上動作,或是騙使用者自己把檔案打開;P(Physical)要摸得到機器本體,像是插一支USB。
危險性:N>A>L>P。
AC(Attack Complexity,攻擊複雜度),這個漏洞要利用,有多複雜。
L 是照著做就成功;H 是要看運氣或看環境。
危險性:L>H
PR(Privileges Required,需要的權限),打之前要先有什麼身分。
N 是不用登入;L 是一般帳號就行;H 要管理員。
危險性:N>L>H
UI(User Interaction,使用者互動),需不需要受害者配合。
N 是對方什麼都不用做就中;R(Required)是要有人點下去、打開檔案。
危險性:N>R
所以開頭那串的 AV:N/AC:L/PR:N/UI:N,翻成白話就是:隔著網路、不用提權、不用使用者互動、照著做就會成功。
這四格全部是最好打的那個答案。
S(Scope,影響範圍),問的是打下去之後,受影響的東西有沒有跑出這個漏洞原本所在的那個範圍。
U(Unchanged)是出事的就是有漏洞的那個元件本身。
C(Changed)是透過這個洞,影響到另一個「歸別人管」的東西。常見的例子是 VM 逃逸,洞在虛擬機裡,結果動到的是底下的 host。
這一格在 3.1 會讓分數差很多。開頭那串 S:U 加上 CIA 全 H,算出來是 9.8;同樣的東西只把 S 改成 C,就變 10.0。
像 2021 年的 Log4Shell(CVE-2021-44228),NVD 上的 3.1 向量就是 AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H,滿分 10。
剩下三格就是資安的老朋友 CIA,每一格答 H、L、N。
C(Confidentiality,機密性)資料會不會被看到。
I(Integrity,完整性)資料會不會被改。
A(Availability,可用性)服務會不會掛掉。
這三格拿兩個有名的漏洞放在一起看,就很有感覺。
| 格子 | Heartbleed(CVE-2014-0160) | Log4Shell(CVE-2021-44228) |
|---|---|---|
| AV / AC / PR / UI | N / L / N / N | N / L / N / N |
| S | U | C |
| C / I / A | H / N / N | H / H / H |
| 分數 | 7.5 High | 10.0 Critical |
前面四格一模一樣,兩個都是隔著網路、不用提權、不用user互動就能打。
差在後面。Heartbleed 是 OpenSSL 多讀了一段記憶體回傳出去,所以 C 是 H,但它沒有改到資料、也沒有把服務弄掛,I 跟 A 都是 N。
Log4Shell 是遠端執行程式碼,拿到的是在那台機器上跑東西的能力,看、改、弄掛都做得到。
前面說到的分數,全部都屬於 Base 這一組,也就是漏洞本身的特性。這組分數不管這個洞出現在Air Gap的機器上,還是公開在網路上可以給外部存取的機器上,都是同一個分數。
CVSS 4.0 是 FIRST 在 2023 年 11 月發布的,考試主要還是 3.1,但 4.0 的向量我也有在題目裡看到。
我在這裡錯過一題。那題要找出「有漏洞的那台系統本身資料完整性受影響」的向量,我挑了 SI:H 那選項,但正解是 VI:H 那個選項。
原因是 4.0 把 Scope 那一格拿掉,改成兩組 CIA:
所以同樣是「I」,前面掛 V 還是掛 S,講的是完全不同的對象。3.1 時代用一格 S 表示「有沒有跑出去」,4.0 直接讓你分開寫本體壞到什麼、旁邊壞到什麼。
我錯的時候只看到 I:H 就停了,沒回頭看前面那個字母。
4.0 其他比較有感的改動大概是這幾個: