# Hook cvss: ให้คะแนนเวกเตอร์ CVSS v4.0

> ให้คะแนนเวกเตอร์ CVSS v4.0 หนึ่งหรือหลายรายการจากบรรทัดคำสั่ง ด้วยวิธีคำนวณเดียวกับเครื่องคำนวณของ FIRST และอ่านคำอธิบายของแต่ละเวกเตอร์เป็นภาษาที่เข้าใจง่าย

Canonical: https://lagune.ai/th-TH/docs/hooks/cvss
ภาษา: th-TH
ต้นฉบับ: https://lagune.ai/docs/hooks/cvss
อัปเดตล่าสุด: 2026-11-07

hook `cvss` ให้คะแนน **เวกเตอร์ CVSS v4.0** และพิมพ์คะแนนกับช่วงระดับความรุนแรงออกมา ซึ่งเป็นการให้คะแนนที่คำสั่ง [`/lagune-plan`](https://lagune.ai/th-TH/docs/commands/plan) เขียนไว้ในการแก้ไขแต่ละรายการ และคำสั่ง [`/lagune-prove`](https://lagune.ai/th-TH/docs/commands/prove) เขียนไว้ในประกาศแจ้งเตือนด้านความปลอดภัยแต่ละฉบับ hook นี้คือเอนจินแบบ deterministic เบื้องหลังการให้คะแนนเหล่านั้น โดยใช้วิธีคำนวณเดียวกับ [เครื่องคำนวณของ FIRST](https://www.first.org/cvss/calculator/4.0) และคุณรันเองได้

## การรัน

ส่งเวกเตอร์แต่ละรายการด้วย `--vector` แล้ว hook จะพิมพ์บรรทัดละหนึ่งเวกเตอร์: คะแนนและช่วงระดับความรุนแรงของเวกเตอร์นั้น

**เวกเตอร์เดียว**

```bash
npx lagune read cvss --vector 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'
# => 9.3, Critical
```

**หลายเวกเตอร์**

ใส่ `--vector` ซ้ำเพื่อให้คะแนนหลายรายการพร้อมกัน โดยได้ผลรายการละหนึ่งบรรทัดตามลำดับ

```bash
npx lagune read cvss \
  --vector 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N' \
  --vector 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/MAV:A'
# => 9.3, Critical
# => 8.7, High
```

**อธิบายเป็นภาษาที่เข้าใจง่าย**

เพิ่ม `--explain` เพื่ออ่านคำอธิบายของแต่ละเมตริกเป็นภาษาที่เข้าใจง่าย เมื่อเมตริกกลุ่ม Threat หรือ Environmental ทำให้คะแนนเปลี่ยน hook จะแสดงคะแนน Base อย่างเดียวขึ้นก่อน

```bash
npx lagune read cvss --explain --vector 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/MAV:A'
# => 8.7, High
# =>   Base metrics alone: 9.3, Critical
# =>   Attack Vector: Network, modified to Adjacent
# =>   Attack Complexity: Low
# =>   ...
```

## วิธีอ่านผลลัพธ์

| ช่วง       | คะแนน        |
| ---------- | ------------ |
| `None`     | 0.0          |
| `Low`      | 0.1 ถึง 3.9  |
| `Medium`   | 4.0 ถึง 6.9  |
| `High`     | 7.0 ถึง 8.9  |
| `Critical` | 9.0 ถึง 10.0 |

เวกเตอร์ที่มีเฉพาะเมตริก Base จะให้คะแนนตัวช่องโหว่เองโดยสมมติกรณีเลวร้ายที่สุด: ข้อกำหนดด้านความปลอดภัยทุกข้อเป็น High และช่องโหว่ถูกโจมตีจริงในวงกว้างแล้ว เมตริก Environmental (`MAV` และเมตริกแบบ modified อื่น ๆ รวมถึง `CR`, `IR` และ `AR`) ปรับคะแนนให้ตรงกับการดีพลอยหนึ่งแห่ง และเมตริก Threat (`E`) ปรับตามสิ่งที่รู้เกี่ยวกับการนำช่องโหว่ไป exploit

เวกเตอร์ที่ไม่ถูกต้องจะพิมพ์ `invalid vector:` พร้อมบอกว่าผิดตรงไหน และ hook จะจบการทำงานด้วย exit code ที่ไม่ใช่ศูนย์

### ตัวเลือก CLI

| ตัวเลือก    | ค่า                 | คำอธิบาย                                                                                        |
| ----------- | ------------------- | ----------------------------------------------------------------------------------------------- |
| `--vector`  | เวกเตอร์ `CVSS:4.0` | ให้คะแนนเวกเตอร์หนึ่งรายการ ใส่ซ้ำเพื่อให้คะแนนหลายรายการ โดยได้ผลเวกเตอร์ละหนึ่งบรรทัดตามลำดับ |
| `--explain` |                     | เพิ่มคำอธิบายของแต่ละเมตริกเป็นภาษาที่เข้าใจง่ายไว้ใต้ทุกบรรทัดผลการให้คะแนน                    |

ต้องมี `--vector` อย่างน้อยหนึ่งรายการ เอนจินไม่รับเวกเตอร์เป็นอาร์กิวเมนต์ตามตำแหน่งเปล่า ๆ จึงไม่มีทางสับสนเวกเตอร์กับ flag

**ทำไมต้องเป็นค่าของ flag**

เวกเตอร์แต่ละรายการส่งเข้าไปเป็นค่าของ flag และไม่เคยนำไปแทรกลงในคำสั่งโดยตรง ค่าที่มีเครื่องหมายคำพูดหรือ backtick จึงไม่มีผลใด ๆ และ inject เข้า shell ไม่ได้ ครอบค่าด้วยเครื่องหมายคำพูดเดี่ยวเสมอ เพื่อไม่ให้ shell ของคุณขยายค่านั้นก่อน

**สิ่งที่ไม่ครอบคลุม**

รองรับเฉพาะ CVSS v4.0: hook จะปฏิเสธเวกเตอร์ v2.0, v3.0 หรือ v3.1 แทนที่จะให้คะแนน เพราะ **Lagune** ให้คะแนนทุกข้อตรวจพบด้วย v4.0

**เคล็ดลับ**

การตรวจความถูกต้องของเฟส plan จะคำนวณแบบเดียวกันนี้ซ้ำกับทุกบรรทัด CVSS จึงตรวจพบคะแนนที่คลาดไปจากเวกเตอร์ของตัวเองได้ก่อนยอมรับแผน

## คำถามที่พบบ่อย

### Lagune คำนวณคะแนน CVSS อย่างไร

hook cvss ทำตามเครื่องคำนวณอ้างอิงของ FIRST สำหรับ CVSS v4.0 เวกเตอร์หนึ่ง ๆ จึงได้คะแนนตรงกับที่ได้บนเว็บไซต์ของ FIRST ทุกประการ

### ใช้ hook นี้ให้คะแนนเวกเตอร์ CVSS v3.1 ได้ไหม

ไม่ได้ Lagune ให้คะแนนทุกข้อตรวจพบด้วย CVSS v4.0 และ hook จะปฏิเสธเวอร์ชันอื่นทั้งหมดแทนที่จะให้คะแนน

### flag --explain ทำอะไร

flag นี้อธิบายแต่ละเมตริกเป็นภาษาที่เข้าใจง่าย และแสดงคะแนน Base ไว้ข้างคะแนนรวม ทุกคนจึงเห็นได้ว่าเวกเตอร์บอกอะไร และบริบทของโปรเจกต์ทำให้คะแนนเปลี่ยนไปอย่างไร
