สรุปสั้น

ทีมความปลอดภัยของ Drupal ออกแพตช์ช่องโหว่ระดับ critical ในโมดูล Field UI ของ Drupal core เมื่อวันที่ 14 ตุลาคม 2569 ช่องโหว่นี้ได้รหัส CVE-2026-108097 อาจทำให้ผู้โจมตีรันโค้ดบนเซิร์ฟเวอร์ของเว็บไซต์ได้ และได้คะแนน 19 จาก 25 ตามมาตรวัดความเสี่ยงของ Drupal เอง Field UI คือโมดูลหลักที่อยู่เบื้องหลังหน้าแอดมินสำหรับจัดการฟิลด์และการแสดงผล ซึ่งติดตั้งมาพร้อม Standard install profile เว็บไซต์ที่สร้างจากโปรไฟล์นี้จึงมีโมดูลนี้อยู่ เว้นแต่จะมีคนถอนออก ทีมความปลอดภัยระบุว่าผู้โจมตีเข้าถึงช่องโหว่ผ่าน core อย่างเดียวไม่ได้ แต่มีหลายเส้นทางผ่านโมดูลเสริม (contributed module) และอย่างน้อยหนึ่งเส้นทางไม่ต้องล็อกอิน แพตช์อยู่ในเวอร์ชัน 11.4.10, 11.3.19 และ 10.6.19

ปัญหาใหญ่คือเว็บไซต์จำนวนมากไม่มีแพตช์ให้ติดตั้ง ในสัปดาห์ที่เริ่มวันที่ 4 ตุลาคม เว็บไซต์ 151,442 แห่งจาก 531,499 แห่งที่รายงานเวอร์ชันให้ drupal.org หรือ 28.5% อยู่บนสายเวอร์ชันที่ได้รับผลกระทบแต่หมดอายุแล้ว ได้แก่ 11.2.x และต่ำกว่า 10.5.x และต่ำกว่า รวมถึง Drupal 8 และ 9 เว็บไซต์ที่ยังอัปเดตไม่ได้ให้ถอนโมดูล field_ui ออกชั่วคราว ณ วันที่ 15 ตุลาคม ยังไม่มีโค้ด exploit สาธารณะและยังไม่มีรายงานการโจมตี แต่ทีมความปลอดภัยเตือนไว้ล่วงหน้าว่า exploit อาจถูกพัฒนาได้ภายในไม่กี่ชั่วโมงหรือไม่กี่วัน

รายละเอียดข่าว

เว็บไซต์ The Hacker News รายงานเมื่อวันที่ 15 ตุลาคม 2569 ว่าทีมความปลอดภัยของ Drupal ประกาศล่วงหน้าตั้งแต่วันที่ 12 ตุลาคม ให้เว็บไซต์กันเวลาไว้สำหรับอัปเดต “เพราะ exploit อาจถูกพัฒนาได้ภายในไม่กี่ชั่วโมงหรือไม่กี่วัน” ประกาศไม่ได้ระบุชื่อโมดูลเสริมที่เปิดเส้นทางไปยังช่องโหว่ และระบุว่าโค้ดที่เขียนเอง (custom code) ก็อาจเปิดทางได้เช่นกัน ผู้ที่ได้รับเครดิตการรายงานคือนาย Drew Webber จากทีมความปลอดภัยและนาย Octavio Galland

เวอร์ชันที่แก้ไขแล้วของแต่ละสาย

  • Drupal 11.4.x: อัปเดตเป็น 11.4.10
  • Drupal 11.3.x: อัปเดตเป็น 11.3.19
  • Drupal 10.6.x: อัปเดตเป็น 10.6.19
  • Drupal 12.0.0 beta: 12.0.0-beta2 (ไม่ใช่สำหรับใช้งานจริง)
  • ไม่มีแพตช์: Drupal 11.2.x และต่ำกว่า, 10.5.x และต่ำกว่า, Drupal 8 และ 9 ซึ่งหมดอายุทั้งหมด

ทั้งสาย 11.3.x และ 10.6.x จะหมดการสนับสนุนด้านความปลอดภัยในเดือนธันวาคม 2569 ส่วน Drupal 7 ซึ่งหมดอายุบน drupal.org ตั้งแต่มกราคม 2568 บริษัท Pantheon ระบุว่าบริการ long-term support ร่วมกับบริษัท Tag1 Consulting ได้ออก Drupal 7.107 ที่ backport การแก้ไขนี้แล้ว บริการ Drupal Steward ซึ่งเป็น WAF ที่ทีมความปลอดภัยเขียนกฎเอง บล็อกเวกเตอร์การโจมตีที่รู้จักบางส่วนแล้ว โดยมี Acquia, Pantheon, Ironstar และ Skpr ใช้ให้ลูกค้า แต่ไม่ครอบคลุมทุกเส้นทาง เว็บไซต์เหล่านั้นจึงยังต้องอัปเดต

เมื่อเดือนพฤษภาคม Drupal เคยรายงานความพยายามโจมตีภายใน 2 วันหลังออกประกาศช่องโหว่ SQL injection ใน core ที่กระทบเฉพาะเว็บไซต์ที่ใช้ PostgreSQL และ CISA ได้เพิ่มช่องโหว่นั้นใน KEV (โพสต์ 2026/05/037 )

รายละเอียดช่องโหว่

ต้นเหตุ — Field UI สร้างตารางในหน้าแอดมินจาก render array ซึ่งเป็น PHP array ที่ Drupal แปลงเป็น HTML ก่อนแก้ไข ขั้นตอน pre-render ของ element ตารางจะรัน PHP callable ใดก็ได้ที่แต่ละแถวพกมาในคุณสมบัติ #region_callback ผ่าน call_user_func_array โดยไม่ตรวจว่า callable นั้นคืออะไร

ทำไมกลไกป้องกันเดิมไม่ทำงาน — ตั้งแต่ Drupal 8.8 เมื่อปี 2562 renderer ปฏิเสธการรัน render callback ที่ไม่น่าเชื่อถือ ซึ่งเป็นข้อจำกัดที่เพิ่มหลังประกาศช่องโหว่หลายครั้งที่แสดงว่าระบบ render เรียก callback ใดก็ได้ง่ายเกินไป แต่ renderer เชื่อถือเมธอดของ element ตารางเอง จึงรันขั้นตอน pre-render และการตรวจไม่ไปถึง callable ที่ขั้นตอนนั้นรันต่อ โค้ดที่มีปัญหานี้อยู่มาตั้งแต่อย่างน้อย Drupal 8.9.0 เมื่อปี 2563

สิ่งที่แพตช์เปลี่ยน — เวอร์ชัน 11.4.10 ไม่เรียก callback นี้อีกต่อไป แต่อ่าน region ของแต่ละแถวจากค่า region ของแถวเอง และใช้ region ที่ซ่อนหรือ region แรกของตารางเมื่อค่านั้นไม่ใช่ region ที่รู้จัก ใน core มีเพียงฟอร์มแสดงผลของ Field UI เองที่ตั้งค่า callback นี้ โค้ดที่เขียนเองซึ่งตั้ง #region_callback บนแถวของ field_ui_table จะไม่ทำงานหลังอัปเดต

ช่องโหว่อื่นในรอบเดียวกัน — โมดูลเสริม Entity List ได้รับประกาศช่องโหว่รันโค้ดระดับ critical แยกต่างหาก คือ CVE-2026-108099 ซึ่งมีเงื่อนไขเดียวกัน รวมถึงเส้นทางที่ไม่ต้องล็อกอิน บันทึกเวอร์ชัน 3.0.10 ระบุว่าการแก้ไขเหมือนกับของ Field UI และการอัปเดต core ไม่ได้อัปเดตโมดูลนี้ ในสัปดาห์ที่เริ่ม 4 ตุลาคมมีเว็บไซต์รายงานว่าใช้โมดูลนี้ 90 แห่ง นอกจากนี้ core รอบเดียวกันยังแก้ช่องโหว่ XSS ระดับ moderately critical อีก 2 รายการ ในโมดูล Link (CVE-2026-108515) และ Navigation (CVE-2026-108514) ซึ่งต้องเป็นผู้ใช้ที่ล็อกอินแล้ว

ผลกระทบ

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

กลุ่มที่น่ากังวลที่สุดคือเว็บไซต์ราว 28.5% ที่อยู่บนสายเวอร์ชันหมดอายุ ซึ่งไม่มีแพตช์ให้ ทางเลือกจึงมีเพียงอัปเกรดข้ามสายเวอร์ชันหรือถอน Field UI ชั่วคราว ประวัติของ Drupal เองแสดงว่าช่วงเวลาระหว่างประกาศกับการโจมตีจริงอาจสั้นเพียง 1-2 วัน แม้ขณะนี้จะยังไม่มี exploit สาธารณะก็ตาม

คำแนะนำ

  • อัปเดต Drupal core เป็น 11.4.10, 11.3.19 หรือ 10.6.19 ตามสายเวอร์ชันโดยเร็ว
  • ถ้ายังอัปเดตไม่ได้ ให้ถอนโมดูล field_ui ออกชั่วคราว (หน้าแอดมินจัดการฟิลด์และการแสดงผลจะใช้ไม่ได้ระหว่างนั้น) แล้วติดตั้งกลับหลังอัปเดต
  • เว็บไซต์บน 11.2.x, 10.5.x และต่ำกว่า หรือ Drupal 8/9 ให้วางแผนอัปเกรดไปสายที่ยังได้รับการสนับสนุนทันที และวางแผนย้ายออกจาก 11.3.x และ 10.6.x ก่อนธันวาคม 2569
  • ถ้าใช้โมดูล Entity List ให้อัปเดตเป็น 3.0.10 แยกต่างหาก เพราะการอัปเดต core ไม่ครอบคลุม
  • ตรวจโค้ดที่เขียนเองที่ตั้ง #region_callback บนแถวของ field_ui_table และทดสอบหน้า Manage fields และ Manage display หลังอัปเดต
  • ผู้ใช้ Drupal 7 ที่อยู่ในบริการ long-term support ให้ติดตั้ง Drupal 7.107
  • อย่าพึ่ง WAF อย่างเดียว แม้ Drupal Steward จะบล็อกเวกเตอร์ที่รู้จักบางส่วน ให้เฝ้าระวังล็อกเว็บและการสร้างไฟล์ PHP ใหม่ในช่วงหลังประกาศ

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