Security advisory HCSEC-2026-01 เปิดเผยช่องโหว่วิกฤต (CVE-2026-0969) ในไลบรารี next-mdx-remote ซึ่งอนุญาตให้ผู้โจมตีสามารถเรียกใช้โค้ดจากระยะไกล (RCE) บนเซิร์ฟเวอร์ที่ทำการเรนเดอร์เนื้อหา MDX ที่ไม่น่าเชื่อถือ ช่องโหว่นี้ส่งผลกระทบต่อเวอร์ชัน 4.3.0 ถึง 5.0.0 ของไลบรารีที่ใช้ในแอปพลิเคชัน React บน Next.js ที่มีการเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR)
Severity: วิกฤต (Critical)
System Impact:
- ไลบรารี next-mdx-remote (เวอร์ชัน 4.3.0 ถึง 5.0.0)
- เซิร์ฟเวอร์ที่เรนเดอร์เนื้อหา MDX ที่ไม่น่าเชื่อถือ
- แอปพลิเคชัน React ที่ใช้ Next.js
- การเรนเดอร์ฝั่งเซิร์ฟเวอร์ (Server-Side Rendering – SSR)
Technical Attack Steps:
- ผู้โจมตีป้อนเนื้อหา MDX ที่เป็นอันตราย ซึ่งมีนิพจน์ JavaScript (เช่น eval(), Function(), require()) ซ่อนอยู่ในวงเล็บปีกกา ({})
- ฟังก์ชัน serialize และ compileMDX ของไลบรารี next-mdx-remote ซึ่งขาดการตรวจสอบความถูกต้องที่เหมาะสม จะประมวลผล MDX ที่ไม่น่าเชื่อถือนี้
- ระหว่างกระบวนการเรนเดอร์ฝั่งเซิร์ฟเวอร์ (SSR) เซิร์ฟเวอร์จะดำเนินการโค้ด JavaScript ที่เป็นอันตรายด้วยสิทธิ์เต็มของเซิร์ฟเวอร์
- สิ่งนี้นำไปสู่การเรียกใช้โค้ดจากระยะไกล (RCE) ซึ่งอาจทำให้ผู้โจมตีสามารถขโมยข้อมูล ติดตั้งมัลแวร์ หรือเข้าควบคุมเซิร์ฟเวอร์ได้
Recommendations:
Short Term:
- อัปเกรดเป็น next-mdx-remote เวอร์ชัน 6.0.0 ทันที
Long Term:
- ตรวจสอบโค้ดที่มีอยู่สำหรับการเรียกใช้ฟังก์ชัน compileMDX หรือ serialize โดยเฉพาะอย่างยิ่งเมื่อจัดการ MDX ที่ผู้ใช้ป้อนเข้ามาหรือไม่น่าเชื่อถือ
- หลีกเลี่ยงการเรนเดอร์ MDX ที่มาจากผู้ใช้โดยไม่มีการตรวจสอบความถูกต้องที่รัดกุม
- ใช้ไลบรารี sanitization เพิ่มเติม เช่น remark-rehype เพื่อความปลอดภัยที่เพิ่มขึ้น
- ทำการทดสอบการเปลี่ยนแปลงและการอัปเดตในสภาพแวดล้อมจำลอง (staging environment) เสมอเพื่อระบุปัญหาที่อาจเกิดขึ้น
- ในเวอร์ชัน 6.0.0 ควรกำหนดให้ blockJS: true เพื่อบล็อกนิพจน์ JavaScript โดยค่าเริ่มต้น หรือใช้ blockDangerousJS: true (เปิดใช้งานโดยค่าเริ่มต้นใน v6.0.0) หากจำเป็นต้องใช้นิพจน์
Source: https://cybersecuritynews.com/vulnerability-in-next-mdx-remote/
Share this content: