Chuyển đến nội dung chính
Quay lại danh sách bài viết

PHP ออกแพตช์ CVE-2026-109618/109619 แล้ว: รุ่นที่ต้องอัปเดตและวิธีตรวจระบบ

PHP ปล่อย 8.2.35, 8.3.36, 8.4.27 และ 8.5.12 แก้ช่องโหว่ RCE สองรายการ; ดูผลกระทบ วิธีอัปเดต และขั้นยืนยัน PHP ที่เว็บใช้จริง

PHP ออกแพตช์ CVE-2026-109618/109619 แล้ว: รุ่นที่ต้องอัปเดตและวิธีตรวจระบบ

อัปเดต 21 ตุลาคม 2026 หลังประกาศแพตช์: ทีม PHP เผยแพร่รุ่นแก้ไขแล้ว ได้แก่ 8.2.35, 8.3.36, 8.4.27 และ 8.5.12 สำหรับ CVE-2026-109618 และ CVE-2026-109619 ทั้งสองรายการเป็นช่องโหว่ระดับ Critical ที่อาจนำไปสู่การรันโค้ดจากระยะไกลโดยไม่ต้องยืนยันตัวตน ผู้ดูแลควรอัปเดต PHP ที่รับคำขอเว็บและรีสตาร์ต worker หลังติดตั้งแพตช์ ประกาศทีม PHP

รุ่นใดต้องอัปเดต

สาย PHPรุ่นที่แก้แล้วรุ่นก่อนหน้าที่ต้องตรวจ
8.28.2.35ต่ำกว่า 8.2.35
8.38.3.36ต่ำกว่า 8.3.36
8.48.4.27ต่ำกว่า 8.4.27
8.58.5.12ต่ำกว่า 8.5.12

ตัวเลขนี้อ้างอิงรุ่นที่ออกโดย PHP โดยตรง Linux distribution และผู้ให้บริการ LTS อาจนำแพตช์ไปใส่ในแพ็กเกจที่ยังแสดงเลข upstream เดิม ดังนั้นเครื่องที่ใช้แพ็กเกจจากระบบปฏิบัติการต้องตรวจเลขรุ่นแพ็กเกจและประกาศของผู้ผลิตแพ็กเกจด้วย PHP 8.1 และเก่ากว่าไม่ได้รับแพตช์ปกติจากโครงการ PHP แล้ว แม้บางผู้ให้บริการจะมี backport ให้ก็ตาม ประกาศทีม PHP

ช่องโหว่สองรายการต่างกันอย่างไร

CVE-2026-109618 — RCE via OOM corruption: PHP เคยใช้การกระโดดออกจากบริบทเมื่อหน่วยความจำหมด หากเหตุการณ์นี้เกิดระหว่างข้อมูลภายในคำขอยังตั้งค่าไม่ครบ ขั้นตอนปิดคำขออาจนำสถานะที่ผิดไปใช้ต่อ การประมวลผล multipart ทำให้เกิด OOM ได้หลายทาง แม้ขนาดคำขอที่เห็นภายนอกดูอยู่ในเกณฑ์ ช่องทางที่ยืนยันการโจมตีเต็มรูปแบบคือ Apache mod_php ซึ่งอาจเกิดก่อนโค้ดของแอปเริ่มทำงาน ส่วน PHP-FPM และ SAPI อื่นมีเงื่อนไขและระดับหลักฐานต่างกัน แพตช์เปลี่ยนวิธีจัดการ OOM เพื่อไม่ให้ขั้นปิดคำขอใช้สถานะเสียหาย advisory ของ PHP สำหรับ CVE-2026-109618

CVE-2026-109619 — RCE via stale global state: ข้อมูลภายในที่ควรมีอายุเพียงหนึ่งคำขออาจค้างอยู่ใน global state หลังหน่วยความจำของคำขอนั้นถูกคืนไป คำขอถัดไปที่เข้า worker เดิมสามารถแตะข้อมูลค้างก่อนการตั้งค่าสถานะปกติจะรีเซ็ตมันได้ เงื่อนไขหนึ่งเกี่ยวข้องกับ session.upload_progress แต่ไม่ใช่ทางเดียว ทีม PHP ยืนยันผลกระทบถึง RCE ในบางเส้นทางของ mod_php และ FPM แพตช์แก้การรีเซ็ตสถานะที่เกี่ยวข้องให้ครบ advisory ของ PHP สำหรับ CVE-2026-109619

การที่ PoC หนึ่งทำให้ PHP ตอบ 500 หรือเกิด OOM ไม่เท่ากับ พิสูจน์ว่าเรียกคำสั่งได้ และการนำไฟล์ session ไป include ผ่าน endpoint ที่มี LFI พิสูจน์ RCE ภายใต้ช่องโหว่ LFI ของแอป ไม่ใช่หลักฐานว่า CVE สองรายการนี้ถูกใช้สำเร็จโดยลำพัง แยกหลักฐานแต่ละขั้นก่อนสรุปผลทดสอบเสมอ

ตรวจ PHP ที่เว็บใช้จริง

เริ่มจากทำ inventory ทุกโดเมน เว็บไซต์ และ pool เพราะ php -v ใน shell อาจไม่ใช่ PHP ที่เว็บใช้งานอยู่ บนเครื่อง Linux ตรวจแพ็กเกจด้วย package manager ของระบบ เช่น apt-cache policy php8.4-cli php8.4-fpm libapache2-mod-php8.4 หรือเครื่องมือที่เทียบเท่า แล้วตรวจค่า PHP จาก runtime ของเว็บผ่านวิธีที่จำกัดการเข้าถึงชั่วคราว ดูทั้ง PHP_VERSION, PHP_SAPI, path ของ php.ini, เวอร์ชัน FPM หรือโมดูล Apache และแพ็กเกจของผู้ขาย หลังตรวจให้ลบหน้า diagnostic ที่แสดงข้อมูลระบบ

สำหรับผู้ใช้ Plesk ระดับเว็บไซต์ เปิด Websites & Domains → PHP Settings เพื่อจด handler และรุ่น PHP ของแต่ละโดเมน ถ้าไม่มีสิทธิ์ติดตั้งแพ็กเกจ ให้ส่งรายการโดเมนและรุ่นที่พบให้ผู้ดูแลโฮสต์พร้อมขอหลักฐานเลข build ที่รวมแพตช์แล้ว การเปลี่ยนตัวเลือก PHP ในหน้าเว็บไม่ใช่การติดตั้ง security update ให้เครื่องด้วยตัวเอง และเวอร์ชันที่เว็บใช้จริงอาจต่างจาก PHP CLI ของเซิร์ฟเวอร์

อัปเดตและยืนยันผล

  1. สำรองการตั้งค่าและระบุ PHP handler ที่ใช้งานจริง รวมถึงข้อกำหนดของส่วนขยายที่แอปต้องใช้
  2. ติดตั้งรุ่นแก้ไขจากช่องทางที่ดูแลเครื่องอยู่: 8.2.35, 8.3.36, 8.4.27 หรือ 8.5.12 หรือแพ็กเกจ backport ที่ผู้ขายยืนยันชัดเจน อย่าผสมแพ็กเกจคนละแหล่งโดยไม่ตรวจ dependency
  3. รีสตาร์ต FPM pool, Apache หรือ worker ที่เกี่ยวข้อง เพื่อให้ process เก่าซึ่งยังโหลดโค้ดเดิมหยุดทำงาน
  4. ตรวจรุ่นผ่านคำขอเว็บจริงทุกโดเมนและทุก handler แล้วทดสอบการอัปโหลด การล็อกอิน session และเส้นทางสำคัญของแอป พร้อมดู error log หลังเปลี่ยน
  5. บันทึกเลขแพ็กเกจ เวลาติดตั้ง เวลาที่ worker ใหม่เริ่ม และผลตรวจของแต่ละโดเมนไว้เป็นหลักฐาน หากยังพบ worker เก่าหรือรุ่นเดิม ให้แก้ที่ deployment หรือ service ที่ใช้จริงก่อนปิดงาน

ใน lab ที่ใช้ทดสอบบทความนี้ Debian Security มีแพ็กเกจ 8.4.27-1~deb13u1 แล้ว เราอัปเดต PHP 8.4 จาก 8.4.26 เป็น 8.4.27 และยืนยันเลขแพ็กเกจ CLI, common, opcache, readline และ mod_php ตรงกัน ข้อมูลนี้เป็นผลเฉพาะ lab ไม่ใช่หลักฐานว่า Plesk หรือทุกเว็บไซต์ได้รับแพตช์แล้ว

ถ้าอัปเดตทันทีไม่ได้

PHP ระบุชัดว่าการตั้งค่าชั่วคราว ไม่ใช่วิธีแก้ครบถ้วน สำหรับ CVE-2026-109618 การตั้ง memory_limit=-1 ในระดับที่แอปเปลี่ยนไม่ได้ช่วยตัด OOM ที่อาศัย limit ของ PHP แต่การจัดสรรหน่วยความจำระดับระบบยังล้มเหลวได้ จำกัด post_max_size และจำนวน/ขนาดส่วนของ multipart ที่ reverse proxy หรือเว็บเซิร์ฟเวอร์ด้วย สำหรับ CVE-2026-109619 หากไม่ได้ใช้ upload progress ให้ตั้ง session.upload_progress.enabled=0 ก่อน parse คำขอและรีสตาร์ตทุก worker วิธีนี้ปิดเฉพาะเส้นทาง session ที่ยืนยันแล้ว ไม่ครอบคลุม global state รูปแบบอื่น PHP 8.5 ยังมีคำแนะนำเฉพาะเรื่อง fatal_error_backtraces=0 สำหรับเส้นทางที่ยืนยันหนึ่งแบบ ทั้งหมดเป็นมาตรการลดความเสี่ยงระหว่างรอแพตช์เท่านั้น คำแนะนำจากทีม PHP

GIF สาธิตลำดับตรวจ PHP และเตรียมอัปเดต โดยไม่จำลองการโจมตี

แหล่งข้อมูลหลัก: ประกาศแพตช์ PHP วันที่ 21 ตุลาคม 2026 · CVE-2026-109618 · CVE-2026-109619 · ประกาศ Plesk สำหรับ PHP ที่จัดส่งกับ Plesk

Chia sẻ bài viết:
Xem thêm bài viết