ในที่สุดหลังจากรอมานาน ตอนนี้แอดได้รับการเผยแพร่ CVE อย่างเป็นทางการแล้ว ดังนั้น แอดก็จะสามารถเขียนเนื้อหาได้แบบจัดเต็ม เดี๋ยวจะเล่าให้ฟังว่าไปหามายังไง และใช้แพลตฟอร์มไหนครับ แต่ก่อนอื่นเรามาทำความเข้าใจนิยามแต่ละอย่างกันก่อน จะได้ง่ายกับการเล่าเรื่องต่อไป
CVE คืออะไร
CVE มาจากคำว่า Common Vulnerabilities and Exposures ซึ่งเป็นระบบการระบุช่องโหว่ด้านความปลอดภัยทางไซเบอร์ที่เปิดเผยต่อสาธารณะ โดยแต่ละช่องโหว่ที่ทราบแล้วจะมีรหัสเฉพาะ ที่อ้างอิงไปถึงช่องโหว่ที่เกิดขึ้นกับแพลตฟอร์มใดแพลตฟอร์มหนึ่ง เพื่อให้ง่ายต่อการสืบค้นข้อมูลของนักทดสอบระบบความปลอดภัยครับ
ยกตัวอย่างเช่น เว็บไซต์ A ติดตั้งปลั๊กอิน XXX เวอร์ชัน 1.0 พอเราไปสืบค้นข้อมูลพบว่าปลั๊กอิน XXX v.10 มีช่องโหว่ CVE 2025-ZZZZ ในฐานข้อมูลก็จะมีบอกไว้ว่า CVE 2025-ZZZZ พบในปลั๊กอิน XXX v.10 เจอเป็นช่องโหว่ Cross-site scripting บลา ๆ นี่แหละตัวเลขเหล่านี้ก็จะเพิ่มความสะดวกเวลาเราค้นหาช่องโหว่ที่อาจเกิดขึ้นได้กับระบบครับ
Bug Bounty คืออะไร
ล่าบั๊กหาเงิน คำอธิบายที่สั้นที่สุดของคำนี้เลยครับ คือบางแพลตฟอร์มจะมีการเปิด Bug Bounty Program ให้ผู้ที่สนใจมาทดสอบระบบหรือทดสอบส่วนเสริมที่เกี่ยวข้องกับระบบนั้น และเมื่อเจอช่องโหว่แล้วให้เรารายงานไป หากช่องโหว่เข้าเงื่อนไขเราก็จะได้รับค่าตอบแทนตามความเหมาะสม นอกจากนี้ ยังสามารถแจ้งขอเลข CVE ได้ด้วย แล้วชื่อของเราก็จะปรากฏขึ้นในฐานะ Finder ที่เจอช่องโหว่นี้ครับ
ที่มาของการค้นหา CVE
กำลังจะเข้าสู่เรื่องราวแล้วนะครับ ขอวนกลับมาเล่าความเป็นมาให้ฟังสักหน่อย พอดีว่าก่อนหน้านี้แอดก็ศึกษาเรื่อง Pentesting มาพอสมควรและ แล้วรู้สึกว่าอยากมีเลข CVE ที่มีชื่อเราเป็น Finder กับเขาบ้าง ตอนแรกแอดไปตามหาจากพวกแพลตฟอร์มเปิดที่มีคนเข้าร่วมเยอะ ๆ อย่างพวก HackerOne, Bug Crowd และ Intigriti แต่ว่าคนเก่ง ๆ เขาก็หากันจนพรุนไปหมดแล้ว ถ้ามีเหลือคงเหลือแต่ช่องโหว่ยาก ๆ ซึ่งแอดคงไม่สามารถทำได้แน่ ๆ
แอดจึงได้สอบถามรุ่นน้องคนนึงที่เป็นเทพ Cross-site scripting ว่าถ้าจะมี CVE สักตัวนึงจะหายังไงดี ขอแบบที่เป็นแนวช่องโหว่เว็บละกัน เพราะเราถนัดแนวนี้และมันน่าจะง่ายต่อการค้นหามากกว่าระบบแบบอื่น ๆ ตอนแรกน้องแนะนำให้ลองหาจากพวก github แต่พอมาลองเองแล้วมันก็ยังยากอยู่ ต้องสร้างสิ่งแวดล้อมมารันวุ่นวายเกิน
จนกระทั่งแอดปิ๊งไอเดียว่า เราทำ WordPress เป็น ทำไมเราไม่หาช่องโหว่จาก WordPress แอดเลยกลับไปถามน้องอีกครั้งว่ามันสามารถหาได้ไหม น้องก็บอกว่าทำได้ครับ พร้อมส่งลิงก์ Wordfence Bug Bounty Program มาให้
Wordfence Bug Bounty Program
Wordfence Bug Bounty Program คือ โครงการที่ Wordfence จัดตั้งขึ้นเพื่อให้รางวัลแก่ผู้ค้นพบช่องโหว่ด้านความปลอดภัยในปลั๊กอินและธีมของ WordPress ซึ่งตรงนี้เราจะมีคลังปลั๊กอินและธีมให้ค้นหาเยอะมาก แถมมีของใหม่เข้ามาทุกวันเลยนะครับ
ทาง Wordfence ได้มีการกำหนดชนิดช่องโหว่ที่จะได้รับเงินรางวัล (In-scope) โดยอ้างอิงจากหลายส่วนประกอบกัน เงินรางวัลเริ่มต้นจะอยู่ที่ราว 5 ดอลลาร์ (163 บาท) สูงสุดที่ 31,200 ดอลลาร์ (1.02 ล้านบาท) สำหรับนักแฮกระดับ Standard รายละเอียดไปดูที่ ลิงก์นี้
สำหรับผู้ที่สนใจสามารถสมัครบัญชีได้เลยจาก ลิงก์นี้ หลังจากรอกรายละเอียดเสร็จแล้วอาจจะต้องรอสักพักเพื่อให้ทาง Wordfence เขายืนยันให้เราเข้าร่วมโปรแกรม (จะมีเมลส่งมาแจ้งอีกที)
ถ้าได้รับอีเมลยืนยันแล้ว ลองล็อกอินจะได้หน้าขึ้นมาประมาณนี้
แนวทางการค้นหา Bug จากปลั๊กอิน WordPress
วิธีการที่แอดใช้หาช่องโหว่ปลั๊กอินของ WordPress นั้น แอดไม่ได้ใช้เว็บไซต์ออนไลน์ใด ๆ ในการทดสอบนะครับ แต่สร้างระบบขึ้นมาภายในเครื่องเลย โดยจำลองเว็บไซต์ WordPress ผ่าน XAMPP เปิดเป็น Localhost เพื่อทดสอบเสมือนเว็บไซต์จริง
ขั้นตอนติดตั้ง XAMPP และ WordPress ในคอมนั้น ลองศึกษาดูจากอ้างอิงนี้นะครับ https://www.webmonsterlab.com/howto-install-wordpress-on-xampp/
สมมุติว่าได้ WordPress มาแล้ว ทีนี้ก็ถึงขั้นตอนการหาปลั๊กอิน โดยเข้าไปช้อปปิงปลั๊กอินที่เราอยากทดสอบได้บนเว็บไซต์นี้ครับ https://wordpress.org/plugins/ ในนี้จะมีปลั๊กอินอยู่เยอะมาก และอัปเดตทุกวันครับ สำหรับคนที่จะหาปลั๊กอินที่คนใช้เยอะ ๆ เพื่อการันตีว่าเราจะได้รับเงิน ให้หาในโซน Popular ครับ ส่วนใครที่จะลองทดสอบปลั๊กอินใหม่ให้หาผ่านลิงก์ https://wordpress.org/plugins/browse/new
หรือถ้าเราคิดว่าจะหาช่องโหว่ที่จำเพาะเจาะจงกับชนิดของปลั๊กอิน เช่น แอดอยากหา Cross-site scripting แอดก็อาจจะค้นหาปลั๊กอินจากคีย์เวิร์ดประมาณว่า Form, comment, review, message,… เพราะเป็นกลุ่มที่มีการใส่ข้อความลงไปได้ และ/หรือมีการบันทึกข้อความลงฐานข้อมูล ซึ่งถ้าปลั๊กอินมันไม่กรองสคริปต์อันตราย เราก็จะเจอช่องโหว่ XSS ทันที
หลังจากได้ปลั๊กอินมาเรียบร้อย ให้นำไปติดตั้งใน WordPress แล้วลองทดสอบดูได้เลยครับ สมมุติว่าเราได้ช่องโหว่มันมาแล้ว พร้อมที่จะเขียนส่งเพื่อขอ CVE แล้ว ให้ล็อกอินเข้าบัญชี Wordfence ของเรา แล้วกดที่ Submit Vulnerability
เรามาดูข้อมูลแต่ละส่วนว่าจะต้องกรอกอะไรบ้าง
ส่วน Software Details ให้เราเลือก Plugin แล้วใส่ชื่อปลั๊กอินที่เราเจอช่องโหว่ (ก็อปมาจากหน้าเว็บได้เลย) แล้วใส่ Slug ซึ่งได้มาจากลิงก์ของปลั๊กอิน (ดูตามภาพด้านล่าง) และใส่เลขเวอร์ชันปลั๊กอินที่เราทดสอบ (มีแจ้งอยู่บนหน้าเว็บของปลั๊กอินเลย) แล้วเลือกที่ Yes ยังไงก็ต้องเอา Bounty ไว้ก่อน
ถัดมาที่ส่วนรายละเอียดช่องโหว่
เราจะต้องกรอกรายละเอียดของช่องโหว่ โดย Description ให้เราเขียนอธิบายคร่าว ๆ ว่าเจออะไร เพราะอะไร ผลลัพธ์ประมาณไหน แน่นอนครับต้องเขียนเป็นภาษาอังกฤษเท่านั้นนะครับ
CWE Type คือประเภทของช่องโหว่ที่เข้ากับช่องโหว่ที่เราเจอ สามารถค้นหาข้อมูลได้ตามอินเทอร์ และส่วนสุดท้ายคือ Authentication Level required หมายถึงว่าตอนที่เราทดสอบช่องโหว่แล้วเจอว่าช่องโหว่มันติด เจอในสิทธิ์ผู้ใช้แบบไหน ถ้าไม่ได้ล็อกอินอะไร ให้เลือกเป็น Unauthenticated หรือถ้าล็อกอินผ่านสิทธิ์ไหนก็เลือกตามที่ทดสอบไปครับ (ยิ่งเจอสิทธิ์ต่ำเท่าไร แสดงว่าช่องโหว่แรง)
มาต่อที่ส่วน Proof of Concept อันนี้คือขั้นตอนที่เราเจอช่องโหว่ครับ เราเขียนเล่าไปเลยว่าขั้นตอนของการเจอช่องโหว่นี้ 1,2,3,4 ทำยังไง เขียนเป็นภาษาอังกฤษ ผมแนะนำให้เลือกเป็น Text ไว้ก่อนครับ แล้วตกแต่งด้วย Markdown อีกที (วิธีเขียน Text กับ Markdown อันนี้ลองศึกษาเพิ่มเติมดูครับ)
และส่วนสุดท้ายเลือกตามนี้เลยครับ อย่างที่บอกยังไงเอา Bounty ไว้ก่อน ถ้ามันเป็น In-scope จะตรวจเร็วมากครับ พอเสร็จแล้วกด Submit ได้เลย จะมีอีเมลส่งมาแจ้งอีกทีว่ารับแล้วเรียบร้อย
รอนานไหมกว่าจะได้ CVE
กลไกการตรวจของ Wordfence จะเป็นประมาณนี้ครับ หลังจาก submit ไปแล้ว ถ้าโดนติดแท็กเป็น In-scope จะโดนตรวจเร็วหน่อย แต่!!! แม้ว่าตอนแรกเป็น In-scope แล้ว แต่ถ้าเขามาเช็กเบื้องต้นแล้วพบว่ามันเป็น Out of scope เราจะยังได้ CVE อยู่นะครับ แต่เขาจะตรวจพวก Out of scope ช้ามาก บางตัวแอดรอมาเกือบสองเดือนละยังไม่ตรวจเลย
แต่ถ้าเป็น In-scope จะตรวจเร็วครับ อย่างน้อยไม่เกิน 1 เดือน และถ้าเป็นปลั๊กอินที่มีคนใช้เยอะจะตรวจเร็วมาก
จากภาพตัวอย่างสถานะด้านบนครับ Report Status จะมี
- Pending Triage: รอตรวจ
- In Triage: กำลังตรวจ
- Validated: ตรวจแล้ว ยืนยันแล้วว่าเจอช่องโหว่ของจริง
- Published: ข้อมูลช่องโหว่ได้รับการเผยแพร่แล้ว >> เฉพาะสถานะนี้เท่านั้นที่เราจะสามารถนำข้อมูลช่องโหว่ไปเผยแพร่ได้
ส่วน Disclosure Status จะมี
- Awaiting: รอเปิดเผยข้อมูล
- Disclosed: เปิดเผยข้อมูลไปยังผู้พัฒนาปลั๊กอินแล้ว
- Resolved: ช่องโหว่ได้รับการแก้ไข
และ Bounty status จะมี
- Pending: ยังไม่ยืนยันว่า In-scope ไหม เพราะรอตรวจ
- Approved: ยืนยันแล้วว่า In-scope จะมีจำนวนเงินที่ได้บอกด้วย
- Out of scope: เช็กแล้วว่า Out of scope จะไม่ได้เงิน
อันนี้ข้อมูลคร่าว ๆ ครับ เรามาดูตัวอย่างด้านล่าง
ภาพนี้คือตัวอย่างช่องโหว่ที่ได้รับการตรวจแล้วว่าผ่านเรียบร้อย ตอนนี้แหละที่เราจะได้เลข CVE เมื่อ Report status เป็น Validated และตอนนี้กำลังส่งเรื่องให้ทางนักพัฒนา ย้ำนะครับ !!! ถ้าขึ้น Disclosed จะยังไม่สามารถเผยแพร่ข้อมูลช่องโหว่ได้ ไม่งั้นผิดกฎ
ส่วนแบบนี้ขึ้น Published แล้ว แสดงว่าเขาเผยแพร่ข้อมูลช่องโหว่สู่สาธารณะแล้ว อันนี้เราจะสามารถนำข้อมูลช่องโหว่ไปเผยแพร่ได้เลย อย่างเช่นแอดที่เอามาโชว์ในคอนเทนต์นี่แหละ
กลับมาที่คำถามว่ารอนานไหม เลข CVE อาจจะไม่นานครับ แต่ถ้ารอให้มัน Published เนี่ย โดยเฉลี่ยจะนานครับ แต่อย่างเจ้าตัว WPC Smart Wishlist มีคนใช้ 1 แสน เป็นปลั๊กอินที่ใช้เยอะเขาจึงตรวจและแก้ไขค่อนข้างเร็วนั่นเอง
และนี่คือแนวทางของแอดในการค้นหา CVE ตัวแรกนะครับ หวังว่าจะเป็นประโยชน์และเป็นแรงบันดาลใจให้น้อง ๆ เพื่อน ๆ พี่ ๆ ทุกคนที่กำลังก้าวเข้ามาสู่สายงานด้าน Cybersecurity ครับ
You must be logged in to post a comment.