CVSS Score Calculator: ให้คะแนนช่องโหว่ด้วย CVSS v3.1 และ v4.0 อย่างมั่นใจ
รู้จัก CVSS Score Calculator ฟรี ๆ ที่ช่วยสร้าง vector ทั้ง CVSS v3.1 และ v4.0 คำนวณ base score ตามสูตรทางการของ FIRST พร้อมคำอธิบาย metrics เป็นภาษาง่าย ๆ ทำงานในเบราว์เซอร์ทั้งหมด
Table of Contents
CVSS Score Calculator: ให้คะแนนช่องโหว่ด้วย CVSS v3.1 และ v4.0 อย่างมั่นใจ
ช่องโหว่ทุกตัวต้องเจอคำถามเดียวกัน นั่นคือ "มันแย่ขนาดไหนกันแน่?" scanner เจอ CVE, researcher เผยแพร่ advisory หรือ pentester รายงานช่องโหว่ จากนั้นก็ต้องมีคนแปลงสิ่งที่พบให้กลายเป็นตัวเลขที่ทีมทั้งทีมใช้ตัดสินใจได้ ตัวเลขนั้นก็คือ CVSS base score ซึ่งกลายเป็นภาษากลางของ vulnerability severity ไปแล้ว ไม่ว่าจะเป็นคิวแพตช์, SLA การแก้ไข, การจ่ายค่า bug bounty หรือรายงาน compliance ล้วนอ้างอิงมันทั้งนั้น เมื่อทุกคนพูดภาษาเดียวกัน การจัดลำดับความสำคัญก็เลิกเป็นการเถียงกัน และกลายเป็นเรื่องของตัวเลขไปเลย
แต่การคำนวณเลขนี้ด้วยมือเปล่าไม่มีใครสนุกหรอก สเปก CVSS v3.1 กำหนดสูตรคำนวณที่ซ้อนกันหลายชั้น และมาตรฐาน CVSS v4.0 ที่ใหม่กว่าก็จัดโครงสร้าง metrics ใหม่เกือบทั้งหมด แค่อ่าน metric เดียวผิด เช่น สับสนระหว่าง Privileges Required แบบ None กับ Low ช่องโหว่ RCE ที่โจมตีจาก network ได้ก็เงียบ ๆ ไปอยู่ในแถว medium ได้ง่าย ๆ เครื่องมือ CVSS Score Calculator ฟรีช่วยตัดความเสี่ยงตรงนี้ออก คุณประกอบ vector แบบ interactive เครื่องมือคำนวณ base score ด้วยสูตรทางการของ FIRST และอธิบายทุก metric เป็นภาษาง่าย ๆ ข้างตัวเลือกที่คุณเลือกทันที ทุกอย่างรันในเบราว์เซอร์ ไม่ต้องสมัครสมาชิก ไม่มีการอัปโหลด ข้อมูลไม่หลุดออกจากเครื่องคุณ
ในบทความนี้เราจะพาไปดูว่าเครื่องมือนี้ทำอะไรได้บ้าง แต่ละ metric หมายความว่าอะไรทั้งใน v3.1 และ v4.0 ช่วงคะแนน severity สัมพันธ์กับความเร่งด่วนจริงอย่างไร และ workflow ที่ใช้ CVSS อย่างมีระเบียบช่วยงาน security ประจำวันได้ตรงไหนบ้าง
ทำไมต้องใช้ CVSS Score Calculator?
- มีทั้งสองเวอร์ชันปัจจุบันในที่เดียว v3.1 ยังครอง feeds และ vendor advisories ส่วน v4.0 กำลังค่อย ๆ ขึ้นมาเป็นมาตรฐานของการประเมินรอบใหม่ เครื่องมือมี metric sets ของทั้งสองเวอร์ชัน รวมถึง optional metrics ของ v4.0 จึงสร้าง vector ตามที่รายงานหรือโปรแกรมของคุณต้องการได้โดยไม่ต้องสลับเครื่องมือ
- สร้าง vector แบบ interactive ไม่ต้องท่องจำว่า S:U คือ Scope Unchanged หรือ UI:R คือ User Interaction Required คุณเลือกจากปุ่มที่มีป้ายกำกับชัดเจน แล้ว vector string ประกอบตัวเองขึ้นมาพร้อม prefix CVSS:3.1 หรือ CVSS:4.0 ที่ถูกต้อง
- อธิบาย metrics เป็นภาษาคน ทุก metric มีคำอธิบายสั้น ๆ ว่ามันวัดอะไร และการเลือกของคุณทำให้คะแนนขยับอย่างไร เครื่องมือนี้สอนมาตรฐานไปพร้อมกับที่คุณใช้งาน
- ใช้สูตรทางการของ FIRST เครื่องมือ implement สมการตามสเปกที่ FIRST เผยแพร่ ผลลัพธ์จึงตรงกับที่ vulnerability databases และ vendor advisories เผยแพร่ ไม่มีสูตรเฉพาะที่แต่งขึ้น ไม่มีเรื่องการปัดทศนิยมแปลก ๆ
- บอก severity ได้ทันที นอกจากตัวเลขดิบ คุณยังได้ band เชิงคุณภาพ None, Low, Medium, High หรือ Critical ซึ่งเป็นคำที่ผู้มีส่วนได้ส่วนเสียใช้ตอบสนองจริง ๆ ในห้อง triage
- ทำงาน client-side 100% คณิตศาสตร์การให้คะแนนรันในเบราว์เซอร์ทั้งหมด ช่องโหว่ที่ยังไม่เปิดเผยก็ยังไม่ถูกเปิดเผย และเครื่องมือยังใช้ได้แม้เน็ตหลุด
ฟีเจอร์หลัก
| ฟีเจอร์ | ทำอะไร |
|---|---|
| รองรับสองเวอร์ชัน | metric sets ครบทั้ง CVSS v3.1 และ CVSS v4.0 สลับใช้ได้ตลอดเวลา |
| Vector builder แบบ interactive | เลือก Attack Vector, Complexity, Privileges, User Interaction และค่า impact แล้ว vector string เขียนตัวเอง |
| Optional metrics ของ v4.0 | เพิ่ม supplemental metrics เมื่อ base vector อย่างเดียวยังไม่พอ |
| คำอธิบายภาษาง่าย | คำอธิบายสั้น ๆ ไม่มีศัพท์ยาก สำหรับทุก metric และทุกตัวอักษรตัวเลือก |
| บอก severity ทันที | base score บวก band None / Low / Medium / High / Critical อัปเดตแบบเรียลไทม์ |
| ใช้ในเบราว์เซอร์ทั้งหมด | คำนวณตามสูตร FIRST ทางการ ไม่มีการติดต่อ server เลย |
จุดที่ทำให้ใช้งานทุกวันแล้วสบายใจมีสองอย่าง หนึ่ง แผงคำอธิบายไม่ได้แค่โชว์ตัวเลข แต่โชว์ว่าทำไมตัวเลขเป็นอย่างนั้น ทำให้ทุกการคำนวณกลายเป็นบทเรียนเล็ก ๆ เรื่องสเปก สอง คะแนนและ vector อัปเดตสด ๆ ระหว่างที่คุณปรับ metrics การวิเคราะห์ความไวแบบ "ถ้าผู้โจมตีต้องมีบัญชีผู้ใช้ก่อน คะแนนจะเป็นเท่าไร" ใช้เวลาแค่ไม่กี่วินาที
วิธีการใช้งาน
- เปิด CVSS Score Calculator แล้วเลือกเวอร์ชันที่ต้องการ ใช้ v3.1 เมื่องานเดิม ๆ และ feeds ส่วนใหญ่ยังใช้อยู่ หรือ v4.0 สำหรับการประเมินรอบใหม่
- ไล่ตั้ง exploitability metrics ก่อน ได้แก่ Attack Vector, Attack Complexity, Privileges Required และ User Interaction vector string จะค่อย ๆ ประกอบขึ้นระหว่างที่คุณเลือก
- ตั้งค่าฝั่ง impact ใน v3.1 คือ Scope บวก Confidentiality, Integrity และ Availability ส่วนใน v4.0 คือชุด impact ของ vulnerable system และ subsequent system (VC/VI/VA และ SC/SI/SA) รวมถึง metric Attack Requirements กรณีที่เกี่ยวข้อง
- อ่าน base score, severity band และคำอธิบายภาษาง่าย ลองปรับ metric ไปมาเพื่อดูว่าผลลัพธ์ไวต่อสมมติฐานนั้นแค่ไหน และเพิ่ม optional metrics ของ v4.0 ได้ถ้าอยากให้บริบทละเอียดขึ้น
- คัดลอก vector string ที่เสร็จแล้วไปใส่ในรายงาน, ticket หรือ tracking sheet พร้อมแนบคะแนนไว้ข้าง ๆ
ทำความเข้าใจ CVSS Metrics
Base metrics ของ CVSS v3.1
base score ของ CVSS v3.1 ประกอบจาก 8 metrics ซึ่งแต่ละตัวบอกข้อเท็จจริงเฉพาะเรื่องว่าช่องโหว่นี้ถูก exploit ได้อย่างไร
- Attack Vector (AV) — ผู้โจมตีต้องอยู่ห่างแค่ไหน Network (N), Adjacent (A), Local (L) หรือ Physical (P) ช่องโหว่ที่ exploit ผ่าน network ได้จะได้คะแนนสูงสุด เพราะใครก็บนอินเทอร์เน็ตคือเป้าหมายที่เป็นไปได้
- Attack Complexity (AC) — Low (L) เมื่อ exploit ได้แน่นอน High (H) เมื่อผู้โจมตีต้องพึ่งเงื่อนไขที่ควบคุมไม่ได้ เช่น ต้องชนะ race condition
- Privileges Required (PR) — None (N), Low (L) หรือ High (H) ยิ่งต้องมีสิทธิ์มากก่อน exploit กลุ่มผู้โจมตีที่เป็นไปได้ยิ่งเล็กลง และคะแนนยิ่งต่ำลง
- User Interaction (UI) — None (N) หรือ Required (R) ช่องโหว่ที่เกิดกับตัวเองทันทีที่เหยื่อแค่เปิดหน้าเว็บ ได้คะแนนสูงกว่าแบบที่ต้องหลอกให้คลิกลิงก์
- Scope (S) — Unchanged (U) หรือ Changed (C) ถ้า Changed แปลว่าการ exploit กระทบทรัพยากรเลยขอบเขตความปลอดภัยของ component ที่มีช่องโหว่ ซึ่งเป็นตัวคูณคะแนนที่แรงพอทำให้ Log4Shell ขึ้นไปถึง 10.0
- Confidentiality / Integrity / Availability (C/I/A) — แต่ละด้านให้คะแนน None (N), Low (L) หรือ High (H) เพื่อบอกว่าผู้โจมตีอ่าน แก้ไข หรือทำให้ใช้งานไม่ได้ได้มากแค่ไหน
v4.0 เปลี่ยนอะไรบ้าง
CVSS v4.0 ที่ FIRST เผยแพร่ปลายปี 2023 ยังคงจิตวิญญาณเดิมของ v3.1 แต่สร้างโมเดล metrics ใหม่
- Scope หายไป แทนที่ metric Scope เดิมตัวเดียวด้วยการแยก impact เป็นของ vulnerable system (VC/VI/VA) และ subsequent system (SC/SI/SA) คือระบบที่ถูกกระทบผ่านระบบที่มีช่องโหว่ ตัด metric ที่คนเข้าใจผิดมากที่สุดใน v3.1 ออกไป
- Attack Requirements (AT) มาใหม่ ใช้จับเงื่อนไขการ exploit เช่น ต้องมี plug-in เฉพาะ หรือต้องชนะ timing โดยมีค่า None (N) หรือ Present (P)
- User Interaction ละเอียดขึ้น แยก Passive (P) ที่เหยื่อแค่เปิดหน้าเว็บก็พอ ออกจาก Active (A) ที่เหยื่อต้องคลิกหรือกรอกอะไรสักอย่าง
- กลุ่ม metrics ใหม่วางซ้อนบน Base Threat metrics ตามความสุกงอมของ exploit, Environmental metrics ปรับคะแนนให้เข้ากับองค์กร และ optional Supplemental metrics อย่าง Automatable, Recovery และ Value Density เพิ่มบริบทที่มีประโยชน์ เครื่องมือเปิดให้ใช้ optional metrics เหล่านี้เพื่อให้ vector สะท้อนบริบทได้
- ช่วง severity เชิงคุณภาพไม่เปลี่ยน คะแนน 7.0 ใน v4.0 หมายความเหมือน 7.0 ใน v3.1 สำหรับผู้บริหารของคุณ
Severity Bands
ทั้งสองเวอร์ชันใช้ช่วงเชิงคุณภาพเดียวกัน ซึ่งทำให้ป้ายคะแนนเหล่านี้ใช้ข้ามรายงานได้ทั่วกัน
| Base Score | Severity |
|---|---|
| 0.0 | None |
| 0.1 - 3.9 | Low |
| 4.0 - 6.9 | Medium |
| 7.0 - 8.9 | High |
| 9.0 - 10.0 | Critical |
ตัวอย่างการให้คะแนนจริง
ลองหยิบโปรไฟล์ช่องโหว่ remote code execution คลาสสิกที่ไม่ต้องมีสิทธิ์ แล้วสร้าง vector ในเครื่องมือ
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H -> 9.8 Critical
อ่านทีละ metric คือ exploit ผ่าน network ได้ ความซับซ้อนต่ำ ไม่ต้องมีสิทธิ์ ไม่ต้องมี user interaction impact จำกัดอยู่ใน component ที่มีช่องโหว่ แต่สูญเสีย confidentiality, integrity และ availability เต็ม ๆ เครื่องมือให้ 9.8 หรือ Critical ลองเปลี่ยนตัวอักษรเดียว จาก S:U เป็น S:C ช่องโหว่เดิมก็ขึ้นไป 10.0 ทันที เพราะตอนนี้มันกระทบทรัพยากรเลยขอบเขตของ component ตัวเองแล้ว นี่คือ what-if analysis ที่ vector builder แบบ interactive ทำให้ง่ายมาก และเป็นเหตุผลว่าทำไม vector string ไม่ใช่แค่ตัวเลข จึงควรอยู่ในทุกรายงาน ส่วน v4.0 ใช้ไวยากรณ์ใหม่ในรูปทรงเดียวกัน เช่น CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:N
กรณีการใช้งานจริง
จัดลำดับการแพตช์
scanner โยนช่องโหว่มา 400 รายการหลัง Patch Tuesday ที่ยุ่ง ๆ แต่ทีมแก่ได้แค่ 20 ช่องในสัปดาห์นี้ ให้คะแนนตัวที่ exploit ได้จริง เรียงตาม base score และ severity band แล้วปล่อยให้รายการ Critical และ High เป็นตัวกำหนดแผนสปรินต์ คำอธิบายภาษาง่ายยังช่วยให้คุณตอบเจ้าของระบบที่คิดว่า medium ของเขาพิเศษกว่าใครได้อีกด้วย
รายงาน bug bounty
การเถียงเรื่องรางวัลง่ายขึ้นเมื่อทั้งสองฝ่ายอ้างมาตรฐานเดียวกัน แนบ vector ที่แม่นยำไปกับ submission แล้ว triager จะตรวจ claim เรื่อง severity ของคุณทีละ metric ได้ แทนที่จะเดา โปรแกรม bounty มักตัดคะแนนที่บวมเกินจริงอย่างรวดเร็ว และ vector ที่ซื่อสัตย์ เช่น ยอมรับตรง ๆ ว่า Privileges Required เป็น Low จะรักษาความน่าเชื่อถือของคุณไว้สำหรับรายงานถัดไป
รายงานเพื่อการ compliance
framework และ auditor ต่างคาดหวังให้ช่องโหว่ถูกให้คะแนนบนมาตราส่วนที่ยอมรับกันทั่วไปพร้อมเกณฑ์ที่บันทึกไว้ vector จากเครื่องมือที่ใช้สเปกทางการให้ audit trail ครบ ทั้งคะแนน, band และสมมติฐานเรื่อง metrics เบื้องหลัง ซึ่งใครก็ทำซ้ำได้ด้วย vector เดียวกันในเครื่องมือเดียวกัน
Triage ช่องโหว่ภายในองค์กร
ticket ที่เขียนว่า "ช่วยแก้สักวันนึงนะ" ไม่มีใครลุกมาทำ แต่ ticket ที่เขียนว่า "8.8 High, AV:N, ไม่ต้องใช้สิทธิ์, แพตช์ภายในวันศุกร์" ความเร่งด่วนชัดเจนไม่ต้องตีความ การให้คะแนนทุก finding ภายในเปลี่ยน backlog ให้เป็นคิวที่จัดอันดับแล้ว และ severity bands ก็ให้ศัพท์ร่วมกันสำหรับตัดสินใจยอมรับความเสี่ยง
แนวปฏิบัติที่ดี
- ให้คะแนนตามสภาพจริงที่ deploy ไม่ใช่ตามที่หวังว่าจะตั้งค่าไว้ สมมติฐานเรื่อง mitigation ที่ฝันไกล ๆ ควรอยู่ใน Environmental analysis ไม่ใช่ใน base score
- บันทึก vector ไม่ใช่แค่ตัวเลข คะแนน 7.5 สองตัวอาจบรรยายช่องโหว่คนละแบบ vector string เก็บเหตุผลเอาไว้และทำให้ทุกคนคำนวณซ้ำได้ในภายหลัง
- ให้ band เป็นภาษาของการสื่อสาร และ vector เป็นภาษาของงานวิศวกรรม ผู้บริหารต้องการคำว่า Critical ส่วนวิศวกรต้องรู้ว่ามัน exploit ผ่าน network ได้โดยไม่ต้องมีสิทธิ์
- อย่าปรับ metrics ให้ได้เลขตามที่ตั้งใจ ถ้ารางวัลหรือ SLA ผูกกับคะแนน การบวมหรือยุบ metric จะทำลายระบบจัดลำดับทั้งระบบ
- คำนวณใหม่เมื่อรู้ข้อเท็จจริงใหม่ ความสุกงอมของ exploit, PoC สาธารณะ และศักยภาพการต่อ chain ล้วนเปลี่ยนความเสี่ยงจริง threat metrics ของ v4.0 เกิดมาเพื่อเรื่องนี้โดยเฉพาะ และการให้คะแนนใหม่ใช้เวลาไม่กี่วินาที
- จับคู่ CVSS กับบริบทเสมอ base score วัด severity ในตัวของช่องโหว่ ไม่ใช่ exposure ของคุณ ให้รวมกับความสำคัญของ asset และการที่ระบบเปิดสู่อินเทอร์เน็ตหรือไม่ ก่อนตัดสินใจว่าจะแพตช์อะไรก่อน
เริ่มให้คะแนนช่องโหว่แรกของคุณภายในหนึ่งนาที
การให้คะแนนช่องโหว่ควรเป็นเรื่องสม่ำเสมอ ทำซ้ำได้ และรวดเร็ว ไม่ใช่การเปิดแท็บไล่หาสูตรใน PDF เปิด CVSS Score Calculator สร้าง vector ให้ finding ที่อยู่บนสุดของ backlog แล้วดู base score, severity band และคำอธิบาย metrics โผล่มาทันที ไม่ว่าทีมคุณจะยังอยู่กับ v3.1 หรือกำลังย้ายไป v4.0 แท็บเดียวในเบราว์เซอร์ก็รองรับทั้งคู่แล้ว
Related Tools You Might Like:
- Security Headers Generator — ปิด attack surface ฝั่งเว็บที่คะแนน CVSS คอยเตือนคุณอยู่ ด้วยการสร้าง CSP, HSTS และชุด security headers ตาม OWASP สำหรับ stack ของคุณ
- PII Redactor — ลบข้อมูลส่วนบุคคลออกจาก log, รายงานและภาพหน้าจอก่อนส่งต่อ เพื่อให้ vulnerability write-up ปลอดภัยกับการแชร์ให้บุคคลที่สาม
- Hash Type Identifier — ระบุรูปแบบ hash ที่น่าจะใช่ เช่น bcrypt, Argon2 และ sha512crypt เมื่อ credential โผล่มาใน finding
ขอให้ทุกการให้คะแนนแม่นยำ และคิวแพตช์ของคุณเรียงตาม severity เสมอ
คำถามที่พบบ่อย
ถ: ข้อมูลเรื่องช่องโหว่ของฉันถูกส่งไปเซิร์ฟเวอร์หรือไม่?
ตอบ: ไม่ เครื่องมือทำงาน client-side ทั้งหมด vector ที่คุณสร้างและคะแนนที่ได้ไม่เคยออกจากเบราว์เซอร์ ซึ่งสำคัญมากเวลาคุณกำลังจัดการกับช่องโหว่ที่ยังไม่เปิดเผยหรืออยู่ระหว่าง embargo
ถ: ควรใช้ CVSS v3.1 หรือ v4.0?
ตอบ: ใช้ v4.0 สำหรับการประเมินรอบใหม่ เพราะเป็นมาตรฐานปัจจุบันของ FIRST และจับความหมายของ impact ได้ละเอียดกว่า ส่วนโปรแกรม, feed หรือสัญญาที่ระบุ v3.1 ไว้ชัดเจนก็ใช้ v3.1 ต่อได้ เครื่องมือรองรับทั้งสองเวอร์ชันเต็มรูปแบบ
ถ: คะแนน CVSS สูงกว่าแปลว่าต้องแพตช์ก่อนเสมอไหม?
ตอบ: ไม่เสมอไป CVSS วัด severity ในตัวของช่องโหว่ ไม่ใช่ exposure ที่คุณมีต่อมัน Critical บนเครื่อง lab ที่แยกขาดอาจรอได้ ขณะที่ Medium บนเซิร์ฟเวอร์ payment ที่เปิดสู่อินเทอร์เน็ตรอไม่ได้ ให้ใช้ base score ร่วมกับความสำคัญของ asset และข่าวสารเรื่อง exploit เสมอ
ถ: ทำไม v3.1 กับ v4.0 ให้คะแนนช่องโหว่เดียวกันไม่เท่ากัน?
ตอบ: เพราะสูตรและชุด metrics ต่างกัน v4.0 แยก impact ของ vulnerable system กับ subsequent system เพิ่ม Attack Requirements และปรับ User Interaction ให้ละเอียดขึ้น คะแนนทั้งสองถูกต้องตามสเปกของตัวเอง แต่เปรียบเทียบตรง ๆ ไม่ได้ จึงควรระบุเสมอว่าคะแนนนั้นมาจากเวอร์ชันใด
ถ: ตัวอักษรใน vector string หมายความว่าอะไร?
ตอบ: แต่ละคู่คือ metric หนึ่งตัวกับค่าของมัน เช่น AV:N คือ Attack Vector แบบ Network, PR:L คือ Privileges Required ระดับ Low และ C:H คือ impact ด้าน Confidentiality ระดับสูง เครื่องมือติดป้ายอธิบายทุกตัวเลือกขณะที่คุณเลือก จึงไม่ต้องถอดรหัสตัวอักษรเอง