📌 ภาพรวม (Overview)
พบการเปิดเผยช่องโหว่ความปลอดภัยระดับวิกฤต (Critical) ในตัวแก้รหัสหลัก (Core Engine) ของภาษา PHP รวม 2 ช่องโหว่ ภายใต้ชื่อเรียกกลุ่มช่องโหว่นี้ว่า PHP2Shell
ความน่ากลัวของช่องโหว่นี้คือ ผู้โจมตี (Attacker) สามารถส่งคำสั่งเพื่อควบคุมเครื่องเซิร์ฟเวอร์จากระยะไกล (Remote Code Execution - RCE) ผ่าน HTTP Request เพียงครั้งเดียวได้ โดยไม่ต้องมีการยืนยันตัวตน (Unauthenticated) และไม่ขึ้นอยู่กับว่าเว็บไซต์หรือแอปพลิเคชันจะเขียนโค้ดปลอดภัยดีแค่ไหน เนื่องจากช่องโหว่นี้เกิดขึ้นในระดับ Engine ของ PHP เอง
คะแนนความรุนแรง (CVSS v4.0): 9.2 (Critical)
รูปแบบการโจมตี (CWE): CWE-824 (Access of Uninitialized Pointer)
CVE Reference:
CVE-2026-109618: RCE ผ่านสภาวะ หน่วยความจำเต็ม (Out-of-Memory)
CVE-2026-109619: RCE ผ่านสภาวะ ข้อผิดพลาดร้ายแรง (Fatal Errors)
⚙️ รายละเอียดเชิงลึกทางเทคนิค (Technical Analysis)
ช่องโหว่ทั้งสองมีสาเหตุหลัก (Root Cause) ร่วมกันจากกลไกการจัดการความผิดพลาดของ PHP เมื่อเกิดสภาวะ Fatal Condition เช่น:
การใช้ RAM เกินขีดจำกัดที่ตั้งไว้ใน
memory_limitการประมวลผลนานเกิน
max_execution_timeการที่ Client ตัดการเชื่อมต่อกลางคัน (Lost Connection)
เมื่อเกิดเหตุการณ์เหล่านี้ PHP จะยกเลิกการทำงานกลางคันทันทีโดยใช้ฟังก์ชัน longjmp() ซึ่งข้ามกระบวนการล้างข้อมูล (Cleanup / Destructor) แบบปกติ ส่งผลให้โครงสร้างข้อมูล (Data Structure) ใน C อยู่ในสภาวะที่ไม่สมบูรณ์ (Inconsistent State) แต่ PHP กลับพยายามทำความสะอาดกระบวนการตามปกติหลังจากนั้น
CVE-2026-109618 (Out-of-Memory Context):
เมื่อเมมโมรี่เต็มขณะกำลังจองพื้นที่ (Allocation) โครงสร้างข้อมูลจะชี้ไปยังหน่วยความจำ Heap เก่าที่ไม่ได้ถูก Initialize (Stale Heap Data) เมื่อสคริปต์ Cleanup อ่านค่านี้จะทำให้ผู้โจมตีแทรกแซงการทำงานได้
CVE-2026-109619 (Fatal Error Context):
เมื่อเกิด Fatal Error ตัวแปร Global ของโมดูลจะยังคงชี้ไปยัง Heap Memory ของ Request ก่อนหน้าที่ถูกคืนค่า (Freed) ไปแล้ว เมื่อมี Request ถัดไปเข้ามาใน Worker Process เดียวกัน จะเกิดการอ่าน/เขียนข้อมูลบน Memory ที่ถูกปลดปล่อยไปแล้ว (Use-After-Free Behavior)
การพิสูจน์แนวคิด (PoC): ทาง CrowdStrike ทดสอบยืนยันแล้วว่า เพียงแค่ส่ง
HTTP POST Requestที่ออกแบบมาเป็นพิเศษไปยัง Web Server (เช่น Apachemod_php) ผู้โจมตีก็สามารถสั่งให้เซิร์ฟเวอร์เปิด Shell Process และรันคำสั่ง Arbitrary Command ได้ทันที
🛡️ ผลกระทบต่อลูกค้า ServerToday
เนื่องจากช่องโหว่นี้เกิดขึ้นในขั้นตอนที่ PHP กำลังอ่าน Request ข้อมูล (Request Parsing) ก่อน ที่ตัวขยาย (Extensions) จะทำงาน และ ก่อน ที่โค้ดของเว็บไซต์ (เช่น WordPress, Laravel หรือเว็บที่เขียนเอง) จะเริ่มถูกคอมไพล์ด้วยซ้ำ
นั่นหมายความว่า:
ความเสี่ยงสูงมาก: ต่อให้เว็บไซต์ของคุณแพตช์ระบบความปลอดภัยของซอฟต์แวร์ประยุกต์ครบถ้วน แต่หากตัว PHP Engine ยังไม่ได้ลงแพตช์ ช่องโหว่นี้ก็ยังคงถูกโจมตีได้
ผลกระทบ: เครื่อง Web Server อาจถูกฝัง Backdoor, โดนขโมยข้อมูล หรือกลายเป็นส่วนหนึ่งของ Botnet
💡 แนวทางการป้องกันและแก้ปัญหา (Mitigation & Action Plan)
เพื่อป้องกันระบบของคุณบน ServerToday ให้ปลอดภัยสูงสุด แนะนำให้ดำเนินการดังนี้:
อัปเดต PHP Core ทันที (Immediate Patching):
ตรวจสอบและอัปเดต PHP บนเซิร์ฟเวอร์ของคุณให้เป็นเวอร์ชันล่าสุดที่มีการอัปเดตแพตช์ความปลอดภัยแก้ปัญหา
PHP2Shellแล้ว ผ่านแพ็กเกจการอัปเดตประจำระบบ OS หรือพาเนลผู้ดูแลระบบ (DirectAdmin / cPanel / Plesk)เปิดใช้งาน WAF และ Endpoint Detection (EDR):
ใช้บริการ Web Application Firewall (WAF) เพื่อกรองและตรวจจับ Malicious Payload ใน HTTP POST Request
สำหรับเซิร์ฟเวอร์ที่ติดตั้ง CrowdStrike Falcon® ตัวระบบจะมีกฎการตรวจจับ (Out-of-the-box IOAs) สำหรับพฤติกรรม Post-Exploitation (เช่น การสร้าง Shell Process ที่ผิดปกติจาก Web Server) อยู่แล้ว
มอนิเตอร์ Log ของ Web Server:
คอยเฝ้าระวัง Log ที่มีการแจ้งเตือน
memory_limitถี่ผิดปกติ หรือพฤติกรรม Crash ของ Worker Process (เช่น Apache/Nginx Worker Segfaults)
🔗 แหล่งอ้างอิง (References)
