
ทีมความปลอดภัยของ PHP ได้ปล่อยแพตช์ความปลอดภัยฉุกเฉินเพื่อแก้ไขช่องโหว่ระดับ Critical ประเภทการรันโค้ดที่เป็นอันตรายจากระยะไกล (Remote Code Execution หรือ RCE) จำนวน 2 รายการ (CVE-2026-109618 และ CVE-2026-109619) ซึ่งถูกเรียกโดยรวมว่า "PHP2Shell"
ช่องโหว่ RCE ทั้งสองรายการนี้สามารถถูกโจมตีได้โดยไม่ต้องผ่านการยืนยันตัวตน โดยถูกค้นพบโดยนักวิจัยด้านความปลอดภัยจาก Calif, OpenAI และ Wiz ซึ่งส่งผลกระทบต่อการติดตั้ง PHP ทุกรูปแบบที่รองรับการประมวลผล Requests ผ่านเว็บ (Web Requests) ไม่ว่าจะเป็น PHP-FPM, Apache ที่ใช้ mod_php, php-cgi, FrankenPHP หรือ LiteSpeed
ทีมความปลอดภัยของ PHP ระบุว่า "เราประเมินว่าความเสี่ยงอยู่ในระดับสูงสุดสำหรับกรณีที่ใช้ mod_php โดยมีการสาธิตให้เห็นว่า request ที่ไม่ผ่านการยืนยันตัวตน สามารถถูกใช้โจมตีได้ ก่อนที่โค้ดของแอปพลิเคชันจะเริ่มทำงานเสียด้วยซ้ำ"
ช่องโหว่ทั้งสองรายการมีสาเหตุมาจากปัญหาเดียวกัน คือ PHP อาจทิ้ง memory ไว้ในสถานะ Corrupted State เมื่อ request สิ้นสุดลงอย่างผิดปกติ ซึ่งช่องโหว่ทั้งสองสามารถถูกใช้โจมตีเพื่อรันโค้ดที่เป็นอันตรายจากระยะไกลได้
CVE-2026-109618 (คะแนน CVSS 9.4/10 ความรุนแรงระดับ Critical) เป็นช่องโหว่ที่ Hacker สามารถใช้ช่องโหว่หลายจุดที่นำไปสู่ Out-of-memory corruption เพื่อรันโค้ดจากระยะไกลภายใต้สิทธิ์ของบัญชีผู้ใช้งานเว็บ (Web worker account)
CVE-2026-109619 (คะแนน CVSS 9.4/10 ความรุนแรงระดับ Critical) เป็นช่องโหว่ที่เกี่ยวข้องกับสถานะ Stale global state ที่จะทำให้ Hacker ที่ไม่ได้ยืนยันตัวตน สามารถทำ Heap Use-After-Free, เข้าถึงข้อมูลในหน่วยความจำ (Memory disclosure) และรันโค้ดที่เป็นอันตรายจากระยะไกลด้วยสิทธิ์ของ Web worker ได้
ผู้ดูแลระบบควรติดตั้ง PHP เวอร์ชัน 8.5.12, 8.4.27, 8.3.36 หรือ 8.2.35 โดยเร็วที่สุดบนเซิร์ฟเวอร์ที่ใช้งาน PHP 8.x และหากยังคงใช้งาน PHP 7 หรือเวอร์ชันที่เก่ากว่านั้น ควรดำเนินการย้ายไปใช้เวอร์ชันที่ได้รับการแก้ไขแล้ว
ทีมพัฒนา PHP กล่าวเสริมว่า "PHP 8.1 และเวอร์ชันที่เก่ากว่านั้น จะไม่ได้รับการอัปเดตจากโครงการ PHP อีกต่อไป อย่างไรก็ตาม ผู้จัดจำหน่ายซอฟต์แวร์บางราย หรือผู้ให้บริการเวอร์ชันสนับสนุนระยะยาว (LTS) อาจมีการนำแพตช์แก้ไขไปปรับใช้ในเวอร์ชันเก่า (Backported fixes) ดังนั้นโปรดติดต่อผู้ให้บริการเพื่อสอบถามรายละเอียด หรือดำเนินการอัปเกรดไปใช้เวอร์ชันที่ยังคงได้รับการสนับสนุนอยู่" เนื่องจากช่องโหว่เหล่านี้มีความรุนแรง ทีมงานด้านความปลอดภัยของ PHP จึงได้จัดเตรียมแพตช์ย้อนหลัง (backports) สำหรับ PHP 7.4, PHP 8.0 และ PHP 8.1 ไว้ให้ เพื่อช่วยเหลือผู้ที่ใช้ซอฟต์แวร์จากซอร์สโค้ดด้วยตนเอง หรือผู้ที่ไม่มีสิทธิ์เข้าถึงบริการสนับสนุนระยะยาว (LTS) จากผู้ให้บริการ
คำเตือนล่วงหน้า
ก่อนหน้านี้ นักพัฒนา PHP ได้ออกคำเตือนโดยเรียกร้องให้ผู้ดูแลระบบเตรียมพร้อมสำหรับการติดตั้งอัปเดตแพตซ์ความปลอดภัยเหล่านี้ทันทีที่มีการปล่อยออกมา
"ขอแนะนำให้ผู้ใช้งาน PHP ทุกคนเตรียมตัวไว้ตั้งแต่ตอนนี้ เพื่อให้สามารถอัปเกรดได้ทันทีที่มีเวอร์ชันใหม่" "ทั้งนี้ เราขอสงวนสิทธิ์ในการปล่อยอัปเดตเร็วกว่ากำหนด หากรายละเอียดของช่องโหว่ใดช่องโหว่หนึ่งรั่วไหลสู่สาธารณะ หรือหากพบหลักฐานว่ามีการโจมตีเกิดขึ้นจริง"
Gina Peter Banyard นักพัฒนาหลักของ PHP เตือนว่า มาตรการบรรเทาผลกระทบจาก PHP2Shell ไม่สามารถป้องกันการโจมตีได้ทั้งหมด และการติดตั้งแพตช์ความปลอดภัยอย่างเป็นทางการถือเป็นวิธีป้องกันที่ถาวรเพียงวิธีเดียวเท่านั้น
ก่อนที่จะมีการปล่อยแพตช์ออกมา Dane Knecht ประธานเจ้าหน้าที่ฝ่ายเทคโนโลยี (CTO) ของ Cloudflare ยืนยันว่า บริษัทได้ตรวจพบการโจมตีที่มุ่งเป้าไปยังช่องโหว่ทั้งสองนี้แล้ว (โดยก่อนหน้านี้ Cloudflare ได้ปรับใช้ WAF rules เพื่อสกัดกั้นวิธีการโจมตีแบบ PHP2Shell อยู่แล้ว) อย่างไรก็ตาม Knecht เน้นย้ำว่า มาตรการป้องกันเหล่านี้เป็นเพียงวิธีชั่วคราวเท่านั้น พร้อมทั้งเรียกร้องให้ผู้ดูแลระบบทุกคนติดตั้งอัปเดตความปลอดภัยของ PHP ทันทีที่สามารถทำได้
นอกจากนี้ ศูนย์ความปลอดภัยทางไซเบอร์แห่งชาติของสหราชอาณาจักร (NCSC) ยังได้ออกคำเตือนให้องค์กรต่าง ๆ ในสหราชอาณาจักรดำเนินการอัปเดตระบบที่ใช้ PHP โดยทันที หรือนำระบบเหล่านั้นออกจากเครือข่ายจนกว่าจะได้รับการแก้ไขด้วยการติดตั้งแพตช์
มาตรการลดผลกระทบชั่วคราว
ทีมงานด้านความปลอดภัยของ PHP ได้เสนอแนวทางบางประการเพื่อช่วยลดความเสี่ยงจากการโจมตีในบางรูปแบบ สำหรับผู้ที่ยังไม่สามารถติดตั้งแพตช์บนเซิร์ฟเวอร์ได้ในทันที ทั้งนี้ มาตรการดังกล่าวไม่สามารถป้องกันการโจมตีได้อย่างสมบูรณ์ (สามารถดูรายละเอียดเพิ่มเติมได้ในบล็อกของ PHP):
CVE-2026-109618:
- กำหนดค่า `memory_limit=-1` โดยควรตั้งค่าในลักษณะที่แอปพลิเคชันไม่สามารถแก้ไข หรือแทนที่ได้ เช่น การใช้ `php_admin_value` ใน FPM pool หรือในการตั้งค่าของ Apache
- กำหนดค่า `post_max_size` ให้มีขนาดต่ำ โดยตั้งไว้ที่ 8M สำหรับแอปพลิเคชันที่ไม่จำเป็นต้องรองรับการอัปโหลดไฟล์ หรือ 32M หากจำเป็นต้องมีการอัปโหลดไฟล์
- ใช้ Container หรือการจำกัดทรัพยากรด้วย cgroup เพื่อกำหนดขอบเขตการใช้งาน โดยควรตั้งค่า policy ให้ยุติการทำงาน (kill) เฉพาะกระบวนการ (worker) ที่ได้รับผลกระทบเท่านั้น
CVE-2026-109619:
- ตั้งค่า session.upload_progress.enabled=0 และรีสตาร์ท worker ทุกตัว
- ใน PHP 8.5 ให้ตั้งค่า fatal_error_backtraces=0 และรีสตาร์ท worker ทุกตัว การดำเนินการนี้จะบล็อกเฉพาะเส้นทาง fatal backtrace path ที่ได้รับการยืนยันแล้วเท่านั้น
- ลบการตั้งค่าที่ไม่ถูกต้อง หรือล้าสมัยที่ใช้ต่อ request ซึ่งส่ง diagnostics ก่อนการเริ่มต้น การซ่อน diagnostics ด้วย error_reporting, display_errors หรือ @ ไม่ได้ช่วยอะไร
- แก้ไข fatal errors ที่ Hacker สามารถเข้าถึงได้ และ execution timeouts รวมถึง failures in callbacks, การประมวลผลการอัปโหลด หรือการนำเข้า และการล้างข้อมูล
PHP (Hypertext Preprocessor) เป็นภาษาการพัฒนาเว็บฝั่งเซิร์ฟเวอร์แบบ open-source ที่ขับเคลื่อนเว็บไซต์ 75% ถึง 80% รวมถึงเว็บไซต์ที่ใช้ระบบจัดการเนื้อหา (CMS) เช่น WordPress, Joomla และ Drupal
จากข้อมูลการประเมินของ VirusTotal พบว่ามีโฮสต์ PHP มากกว่า 5.1 ล้านเครื่องที่เปิดเผยอยู่บนอินเทอร์เน็ต และประมาณ 3.8 ล้านเครื่องมี port open อย่างน้อยหนึ่งพอร์ต
ที่มา : bleepingcomputer.com

You must be logged in to post a comment.