ช่องโหว่บน Node.js ทำให้ Window App เสี่ยงต่อการโจมตีแบบ Path Traversal และ HashDoS

Node.js Project ได้ออกอัปเดตความปลอดภัยสำคัญในหลายเวอร์ชัน เพื่อแก้ไขช่องโหว่ระดับ Critical 2 รายการ ซึ่งส่งผลกระทบต่อแอปพลิเคชันบน Windows และการทำงานของ V8 engine

ดดยปัจจุบันมีการปล่อยแพตช์สำหรับ Node.js เวอร์ชัน 20.x, 22.x, และ 24.x โดยมีแพตช์ที่แก้ไขช่องโหว่ Path Traversal Bypass และการโจมตีแบบ HashDoS ซึ่งอาจส่งผลกระทบอย่างมีนัยสำคัญต่อความปลอดภัย และประสิทธิภาพของแอปพลิเคชัน

ช่องโหว่ Path Traversal บน Windows

ช่องโหว่ระดับ Critical หมายเลข CVE-2025-27210 ใน Node.js มุ่งเป้าไปที่ Windows device names โดยเฉพาะ ได้แก่ CON, PRN และ AUX

ช่องโหว่นี้ มาจากการแก้ไขที่ไม่สมบูรณ์จากช่องโหว่ CVE-2025-23084 ที่เคยมีการแพตช์ไปก่อนหน้านี้ และแสดงให้เห็นว่ายังสามารถ bypass กลไกป้องกัน path traversal ในฟังก์ชัน path.normalize() ได้อย่างไร

ช่องโหว่นี้ส่งผลกระทบต่อผู้ใช้ Windows ทุกคนที่ใช้งาน API path.join() ทั้งเวอร์ชัน 20.x, 22.x และ 24.x

เมื่อ processing file paths มี device names ที่ Windows สำรองไว้ ฟังก์ชัน path.normalize() จะไม่สามารถกรองข้อมูลได้อย่างถูกต้อง ทำให้ผู้โจมตีสามารถเจาะผ่านโครงสร้างไดเรกทอรี และเข้าถึงไฟล์สำคัญที่อยู่นอกขอบเขตที่กำหนดไว้ได้

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

ช่องโหว่นี้เกิดขึ้นในกระบวนการ normalize path เมื่อระบบเจอกับ device names เฉพาะของ Windows ซึ่งจะมองว่าเป็น system files พิเศษของระบบปฏิบัติการ

ผู้โจมตีสามารถสร้าง malicious paths เช่น ../../../CON/../../sensitive.txt เพื่อ bypass กลไกควบคุมความปลอดภัยที่ควรจะป้องกันการเข้าถึง parent directories

ช่องโหว่ V8 HashDoS

ช่องโหว่อีกหนึ่งรายการหมายเลข CVE-2025-27209 ส่งผลกระทบต่อ V8 JavaScript engine ที่ใช้ใน Node.js เวอร์ชัน 24.0.0 ซึ่งนำไปสู่การโจมตีแบบ Hash Denial of Service (HashDoS)

ช่องโหว่ระดับ High นี้เกิดจากการเปลี่ยนแปลงในกระบวนการคำนวณ String Hash ใน V8 ซึ่งใช้การทำงานของ rapidhash ส่งผลให้เกิดช่องโหว่ collision-based ซ้ำอีกครั้ง

การโจมตี HashDoS ทำให้ผู้ไม่หวังดีสามารถสร้าง Hash Collision จำนวนมากได้โดยการควบคุมสตริงอินพุต แม้จะไม่ทราบค่า Hash Seed ก็ตาม

ซึ่งอาจนำไปสู่การโจมตีแบบ Algorithmic Complexity Attack ที่ประสิทธิภาพการทำงานของตารางแฮชลดลงจาก O[1] to O[n] ซึ่งอาจทำให้แอปพลิเคชันทำงานช้าลงอย่างรุนแรง หรืออาจถึงขั้นหยุดให้บริการ

ต่างจากการโจมตีแบบ Hash Collision ในอดีตที่ต้องใช้ความรู้เกี่ยวกับกับฟังก์ชันแฮชภายใน ช่องโหว่นี้ช่วยให้ผู้โจมตีสามารถสร้างสตริงที่มีแนวโน้มชนกันได้ง่าย ส่งผลให้ hash table เข้าสู่สถานการณ์ที่มีประสิทธิภาพต่ำที่สุด

แอปพลิเคชันที่ประมวลผลข้อมูลที่ผู้ใช้ควบคุมผ่านข้อมูล hash-based จะมีความเสี่ยงสูงต่อการถูกโจมตีแบบ CPU Exhaustion

Node.js Project ได้ให้ความสำคัญกับช่องโหว่ด้านความปลอดภัยนี้ แม้ทีมงาน V8 จะมีการจำแนกประเภทช่องโหว่นี้ไว้แล้วก็ตาม โดยพิจารณาจากผลกระทบที่อาจเกิดขึ้นในสถานการณ์ใช้งานจริง ซึ่งความพร้อมใช้งานของแอปพลิเคชันถือเป็นเรื่องสำคัญอย่างยิ่ง

 

องค์กรที่ใช้งานแอปพลิเคชัน Node.js ควรดำเนินการอัปเดตเป็นเวอร์ชันที่ได้รับการแพตช์ล่าสุดทันที ได้แก่ Node.js v20.19.4, v22.17.1 และ v24.4.1

การอัปเดตด้านความปลอดภัยครั้งนี้ช่วยแก้ไขช่องโหว่ทั้งสองรายการอย่างครอบคลุม โดยเป็นผลจากการพัฒนาร่วมกันระหว่างทีมความปลอดภัยของ Node.js และนักวิจัยด้านช่องโหว่ oblivionsage, sharp_edged, RafaelGSS และ targos

 

ที่มา : cybersecuritynews.com