ช่องโหว่ใน NodeBB อาจทำให้ผู้โจมตีสามารถฝัง Payload แบบ Boolean-Based Blind และ PostgreSQL Error-Based ได้

NodeBB เป็นแพลตฟอร์ม Forum แบบ Open-source ที่ได้รับความนิยม โดยถูกพบว่ามีช่องโหว่ SQL Injection ที่มีความรุนแรงระดับ Critical ในเวอร์ชัน 4.3.0

ช่องโหว่ดังกล่าวมีหมายเลข CVE-2025-50979 อยู่ใน API endpoint ของ search-categories ซึ่งอาจทำให้ผู้โจมตีจากภายนอกที่ไม่จำเป็นต้องยืนยันตัวตนสามารถฝัง Payload แบบ Boolean-Based Blind และ PostgreSQL Error-Based ได้

หากการโจมตีสำเร็จ อาจนำไปสู่การเข้าถึงข้อมูลโดยไม่ได้รับอนุญาต, การเปิดเผยข้อมูลสำคัญ หรือแม้แต่การเข้าควบคุมระบบในระดับที่สูงขึ้นได้

ช่องโหว่ประเภท SQL Injection

ใน NodeBB เวอร์ชัน 4.3.0 พบว่า พารามิเตอร์ search ของ API search-categories ไม่ได้รับการตรวจสอบข้อมูลอย่างเหมาะสม ก่อนที่จะถูกส่งต่อไปยัง SQL query builder ที่อยู่เบื้องหลัง

ผลที่ตามมาก็คือ Payload ที่ถูกสร้างขึ้นมาเป็นพิเศษสามารถเปลี่ยนแปลง logic การทำงานของคำสั่ง SQL ได้ โดยมี Payload ตัวอย่าง 2 รูปแบบที่ใช้ใน Proof-of-Concept ที่แสดงให้เห็นถึงความรุนแรงของช่องโหว่ โดยมีรายละเอียดดังต่อไปนี้ :

การโจมตีแบบ Boolean-Based Blind Injection :

 

Payload ดังกล่าวจะเพิ่มคำสั่ง AND 4638=4638 เข้าไปในส่วนของ WHERE clause ซึ่งเงื่อนไขดังกล่าวจะเป็น true เสมอ และเพื่อแสดงให้เห็นว่าผู้โจมตีสามารถควบคุม logic ของเงื่อนไขในคำสั่ง SQL ได้

การโจมตีแบบ PostgreSQL Error-Based Injection :

 

Payload ลักษณะนี้จะทำให้เกิด Casting Error ของ PostgreSQL จึงทำให้ผู้โจมตีสามารถยืนยันความสำเร็จของการโจมตีได้ ผ่านทางข้อความแสดง Error ของฐานข้อมูลที่จะมี Marker ที่ผู้โจมตีฝังเอาไว้ปรากฏอยู่ด้วย

มาตรการป้องกัน และแนวทางการแก้ไข

ผู้โจมตีที่ใช้การโจมตีจากช่องโหว่ CVE-2025-50979 จะสามารถอ่าน หรือแก้ไขข้อมูลสำคัญ, ยกระดับสิทธิ์ของตนเองภายใน forum และเรียกใช้คำสั่ง SQL ใด ๆ ก็ได้ตามต้องการ

ระบบของ NodeBB ที่เปิดให้เข้าถึงได้จากอินเทอร์เน็ตทั่วไปจะมีความเสี่ยงสูงเป็นพิเศษ โดยเฉพาะอย่างยิ่งระบบที่ไม่ได้กำหนดค่า Firewall อย่างเข้มงวด หรือทำงานอยู่หลัง Reverse Proxy ที่มีการป้องกันหละหลวมเกินไป

ทีมพัฒนาของ NodeBB ได้ออกแพตช์เพื่อแก้ไขช่องโหว่ดังกล่าวแล้วใน เวอร์ชัน 4.3.1 โดยได้ทำการแก้ไข search input ด้วยวิธีการ Escape และ Parameterize อย่างเหมาะสมแล้ว

ผู้ดูแลระบบจึงควรอัปเกรดโดยทันที สำหรับผู้ที่ไม่สามารถอัปเกรดได้ในทันทีนั้น มีแนวทางการลดความเสี่ยงชั่วคราว โดยมีรายละเอียดดังนี้ :

  • กำหนด rule บน Web Application Firewall (WAF) เพื่อ block requests ที่มีอักขระพิเศษของ SQL
  • จำกัดการเข้าถึง API ให้สามารถใช้ได้เฉพาะจาก IP ที่เชื่อถือได้เท่านั้น โดยตั้งค่าผ่าน Network ACLs หรือการกำหนดค่าบน Proxy
  • ตรวจสอบ Log ของระบบอย่างสม่ำเสมอ เพื่อค้นหารูปแบบที่น่าสงสัยที่อาจถูกส่งเข้ามาในพารามิเตอร์ search

ช่องโหว่ดังกล่าวได้แสดงให้เห็นถึงความสำคัญอย่างยิ่งของการตรวจสอบ Input Sanitization และการนำเทคนิค Prepared Statements มาปรับใช้กับการทำงานที่เกี่ยวข้องกับ SQL ทั้งหมด

การเฝ้าระวังอย่างต่อเนื่อง และการอัปเดตระบบอย่างทันท่วงที ยังคงเป็นหัวใจสำคัญในการปกป้องแพลตฟอร์ม Community อย่าง NodeBB ให้ปลอดภัยจากการโจมตีแบบ Injection ที่มีความซับซ้อนมากขึ้นเรื่อย ๆ

ที่มาcybersecuritynews