8 คะแนน โดย GN⁺ 2025-12-06 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • React Server Components ถูกพบว่ามีช่องโหว่ การรันโค้ดระยะไกล (RCE) ที่อนุญาตให้รันโค้ดโดยไม่ได้รับการยืนยันตัวตน และต้อง อัปเกรดทันที
  • Next.js ก็ได้รับผลกระทบเช่นกัน และจะอ่อนแอหากใช้ App Router; Next.js กำลังติดตามประเด็นนี้ภายใต้ CVE-2025-66478
  • สาเหตุรากฐานของช่องโหว่นี้คือ server-side prototype pollution โดยผู้โจมตีสามารถควบคุม prototype ของอ็อบเจกต์ JavaScript เพื่อรันคำสั่งผ่าน child_process.execSync และ API อื่นๆ
  • PoC (Proof of Concept) ที่เผยแพร่สู่สาธารณะแพร่กระจายอย่างรวดเร็ว และ Datadog รายงานว่าจนถึงวันที่ 5 ธันวาคมตรวจพบความพยายามโจมตีจริงจาก มากกว่า 800 IP
  • ช่องโหว่นี้ได้รับการประเมิน CVSS 10/10 และรุนแรงเป็นพิเศษบน Next.js 15.x~16.x จึงจำเป็นต้องอัปเดตแพตช์ล่าสุดโดยด่วน

ภาพรวมช่องโหว่หลัก

  • เมื่อวันที่ 3 ธันวาคมพบช่องโหว่ที่ทำให้สามารถรันโค้ดได้โดยไม่ต้องยืนยันตัวตนใน React Server Components และได้ขึ้นทะเบียนเป็น CVE-2025-55182
    • ช่องโหว่นี้ทำงานฝั่งเซิร์ฟเวอร์ และผู้โจมตีสามารถรันโค้ดจากระยะไกลได้
  • Next.js ก็ได้รับผลกระทบเช่นกัน เนื่องจากรวมคอมโพเนนต์ที่มีช่องโหว่นี้อยู่
    • Next.js กำลังจัดการแยกเป็น CVE-2025-66478 แต่ NVD ได้ปฏิเสธ CVE นี้อย่างเป็นทางการ
  • CVSS ได้รับค่าประเมิน 10/10 โดย Datadog ระบุว่า การโจมตีนี้ทำได้ง่ายมาก และสามารถจำลองได้ในแอป Next.js ที่สร้างจากเทมเพลตเริ่มต้น
  • ตามข้อมูลถึงวันที่ 5 ธันวาคม มีการสังเกตการโจมตีจริงที่ใช้ payload ที่มุ่งโจมตี

เวอร์ชันที่ได้รับผลกระทบและวิธีลดความเสี่ยง

  • ไลบรารี React ที่มีปัญหา:
    • react-server-dom-parcel, react-server-dom-webpack, react-server-dom-turbopack
    • เวอร์ชันที่มีช่องโหว่: 19.0~19.2.0 / เวอร์ชันที่มีแพตช์: 19.0.1, 19.1.2, 19.2.1
  • เวอร์ชัน Next.js ที่ได้รับผลกระทบ
    • มีช่องโหว่: 15.x, 16.x, หลังจาก 14.3.0-canary.77 เป็นต้นไป
    • แพตช์: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
  • สามารถตรวจสอบว่ามีช่องโหว่หรือไม่ด้วยคำสั่ง npm audit
  • แนวทางแก้ไขคือ อัปเกรดเป็นเวอร์ชันที่มีแพตช์

วิเคราะห์ช่องโหว่และ PoC

  • วันที่ 3 ธันวาคมมีการคอมมิตโค้ดแพตช์ในรีโพซิทอรีของ React
    • การแก้ไขเปลี่ยนเป็นการตรวจสอบการมีอยู่ของคุณสมบัติในอ็อบเจกต์ภายในฟังก์ชัน requireModule
  • ช่องโหว่นี้เป็นประเภท server-side prototype pollution โดยการปนเปื้อน prototype ของอ็อบเจกต์เพื่อเปิดโอกาสให้รันโค้ดอิสระได้
  • PoC ที่เผยแพร่:
    • PoC ตัวแรก (ejpir/CVE-2025-55182-poc) อยู่ในสถานะใช้งานไม่ได้
    • PoC ตัวที่สอง (msanft/CVE-2025-55182) ทำงานได้แม้ในแอป Next.js มาตรฐาน
    • ในวันที่ 5 ธันวาคม ผู้รายงานดั้งเดิม Lachlan Davidson ได้เผยแพร่ PoC อย่างเป็นทางการ 3 รูปแบบ

การโจมตีจริงที่เกิดขึ้น

  • Datadog ตรวจพบกิจกรรมสแกนตั้งแต่เวลา 22:00 (UTC) ของวันที่ 3 ธันวาคม
    • ตามข้อมูลถึงวันที่ 5 ธันวาคมตรวจพบการสแกนและความพยายามโจมตีจาก มากกว่า 800 IP
    • องค์กรอย่างน้อย 2 องค์กรถูกโจมตี และสังเกตเห็นกิจกรรมต่อเนื่องตั้งแต่วันที่ 4 ธันวาคมเป็นต้นมา
  • ลำดับขั้นตอนการโจมตี:
    • ช่วงแรกเริ่มจากการสแกนโดยใช้ PoC ที่ใช้งานไม่ได้
    • ต่อมามีการสลับไปใช้ PoC ของ Moritz Sanft และในที่สุดคือ PoC ของ Davidson ตามลำดับ
  • payload ที่ตรวจพบ:
    • การอ่าน /etc/passwd การรัน whoami และการดาวน์โหลดสคริปต์ระยะไกลผ่าน curl·wget ฯลฯ
    • บางตัวอย่างมีฟังก์ชันขโมยตัวแปรสภาพแวดล้อม (.env) และการรวบรวมข้อมูลระบบด้วย

แนวคิด server-side prototype pollution

  • เป็นประเภท CWE-1321 ที่เกิดขึ้นเมื่อการควบคุมคุณสมบัติ prototype ของอ็อบเจกต์ทำได้ไม่ถูกต้อง
  • โดยทั่วไปมักถูกใช้ทำงานในฝั่ง frontend ผ่าน XSS แต่ในฝั่งเซิร์ฟเวอร์อาจนำไปสู่ RCE หรือการอ่านไฟล์
  • ในโค้ดตัวอย่าง การปนเปื้อนผ่าน __proto__ ทำให้ Object.prototype ถูกแก้ไข และอ็อบเจกต์ทุกตัวที่สร้างภายหลังจะได้รับผลกระทบ
  • ส่งผลให้เมื่อมีการเรียก spawnSync('sh') คำสั่งที่เป็นอันตรายถูกส่งผ่าน input แล้วรันการทำงาน

การตรวจจับและป้องกันของ Datadog

  • Datadog Code Security ตรวจจับไลบรารีที่มีช่องโหว่ได้จาก GitHub หรือ runtime
    • มีฟังก์ชันค้นหาที่เกี่ยวข้องกับ CVE-2025-55182 หรือ CVE-2025-66478
  • Datadog App and API Protection (AAP) สามารถปิดกั้นการโจมตีได้ระหว่าง runtime
  • Datadog Workload Protection ให้ กฎแบบกำหนดเอง เพื่อตรวจจับการรันคำสั่งเช่น wget, curl, bash ใน Node process

แหล่งอ้างอิง

  • ข้อแนะนำทางการ: React, Next.js
  • การตอบสนองของผู้ให้บริการคลาวด์: AWS, Vercel, Google Cloud, Akamai, Cloudflare
  • การวิเคราะห์จากบริษัทความปลอดภัย: Wiz, Tenable, SearchLight Cyber
  • คำเตือนจาก CERT: CERT-EU, CERT-SE, CERT-AU
  • สแกนเนอร์สาธารณะ: assetnote/react2shell-scanner

5 ความคิดเห็น

 
stech 2025-12-08

ช่วงนี้ทีม Vercel ดูเละเทะมาก น่าจะถึงเวลาหนีจาก React/Next แล้ว

 
jeiea 2025-12-08

อาจจะไม่ได้ทำได้ดีนัก แต่มีวิธีรับมือที่ดีกว่านี้ไหม?

 
laeyoung 2025-12-07

ดูเหมือนว่าทีม Vercel จะปล่อย คำสั่ง npx สำหรับอัปเดตเวอร์ชันที่ได้รับผลกระทบจากปัญหานี้ได้ในครั้งเดียวแล้วนะครับ

npx fix-react2shell-next

 
shakespeares 2025-12-07

คงต้องตรวจสอบว่ามีช่องโหว่หรือไม่ด้วยคำสั่ง npm audit แล้วอัปเดตสินะ..