ช่องโหว่ PHP2Shell คืออะไร และวิธีแก้ไขเบื้องต้น

ถ้าใครดูแลเว็บไซต์หรือเซิร์ฟเวอร์ที่ใช้ PHP อยู่ โพสต์นี้จะสรุปสั้นๆ ว่าเกิดอะไรขึ้น และเราควรอัปเดตเป็นเวอร์ชันไหนถึงจะปลอดภัย
ช่องโหว่ PHP2Shell คืออะไร และวิธีแก้ไขเบื้องต้น
Share this

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

PHP2Shell คืออะไร?

จริงๆ แล้ว PHP2Shell ไม่ใช่ชื่อช่องโหว่เดียว แต่เป็นชื่อที่ใช้เรียกช่องโหว่ร้ายแรง 2 ตัวที่พบใน PHP พร้อมกัน คือ CVE-2026-109618 และ CVE-2026-109619

จุดที่น่ากังวลคือช่องโหว่นี้อยู่ใน ตัว Engine ของ PHP เอง ไม่ใช่ในโค้ดเว็บไซต์ของเรา แปลว่าต่อให้เราเขียนโค้ดอย่างปลอดภัยแค่ไหน หรือเว็บเป็นแค่หน้า Hello World ก็ยังมีความเสี่ยงที่จะถูกโจมตีได้ ถ้าเวอร์ชัน PHP ที่รันอยู่มีช่องโหว่

ช่องโหว่ทั้งสองตัวนี้ส่งผลกระทบต่อการติดตั้ง PHP แทบทุกรูปแบบที่ให้บริการเว็บ เช่น PHP-FPM, Apache mod_php, php-cgi, FrankenPHP และ LiteSpeed โดยเฉพาะระบบที่ใช้ Apache mod_php ถือว่ามีความเสี่ยงสูงที่สุด เพราะแฮกเกอร์อาจส่ง request เดียวก็สามารถโจมตีได้สำเร็จก่อนที่โค้ดแอปพลิเคชันจะเริ่มทำงานด้วยซ้ำ

เราจะเช็กเวอร์ชัน PHP ของเราได้อย่างไร?

ก่อนจะอัปเดต สิ่งแรกที่ต้องรู้คือตอนนี้เราใช้ PHP เวอร์ชันอะไรอยู่ ซึ่งมีหลายวิธีในการเช็ก ขึ้นอยู่กับว่าเราเข้าถึงเซิร์ฟเวอร์ได้แค่ไหน

1. ถ้าเข้าถึงเซิร์ฟเวอร์ผ่าน SSH หรือ Terminal ได้

วิธีที่ตรงที่สุดคือใช้คำสั่งนี้

php -v

ระบบจะแสดงเวอร์ชัน PHP ที่ติดตั้งอยู่ เช่น PHP 8.3.35 (cli) ... แต่ต้องระวังว่าคำสั่งนี้จะแสดงเวอร์ชันของ PHP CLI ซึ่งอาจไม่ตรงกับเวอร์ชันที่ Web Server ใช้รันเว็บจริงก็ได้

ถ้าใช้ PHP-FPM ให้ลองเช็กเวอร์ชันของ binary ที่รันอยู่โดยตรง

php-fpm -v

หรือดูจาก service ที่กำลังทำงานอยู่

systemctl status php8.3-fpm

2. ถ้าใช้เว็บโฮสติ้งและไม่มีสิทธิ์เข้า SSH

วิธีง่ายที่สุดคือสร้างไฟล์ชื่อ info.php วางไว้ในโฟลเดอร์เว็บ แล้วใส่โค้ดนี้

<?php phpinfo(); ?>

จากนั้นเปิดผ่านเบราว์เซอร์ เช่น https://yourdomain.com/info.php จะเห็นเวอร์ชัน PHP อยู่ด้านบนสุดของหน้า

⚠️ ข้อควรระวังสำคัญ: อย่าลืมลบไฟล์ info.php ออกทันทีหลังเช็กเสร็จ porqueไฟล์นี้เปิดเผยข้อมูล sensitive ของเซิร์ฟเวอร์ให้ใครก็ตามที่เข้าถึงได้

3. ถ้าใช้ CMS อย่าง WordPress

เข้าไปที่ Tools → Site Health → Info แล้วดูหัวข้อ Server จะเห็นเวอร์ชัน PHP ที่ใช้งานอยู่ โดยไม่ต้องสร้างไฟล์ใดๆ เลย

4. ถ้าใช้ Hosting Panel

พวก cPanel, Plesk, DirectAdmin มักมีหน้าแสดงข้อมูลเวอร์ชัน PHP ให้ดูได้โดยตรง หรือในส่วน "Select PHP Version" / "MultiPHP Manager" ก็จะบอกเวอร์ชันที่แต่ละโดเมนใช้อยู่

หลังเช็กเสร็จแล้ว ถ้าเวอร์ชันที่ได้ต่ำกว่าตารางด้านล่างนี้ ให้รีบอัปเดตโดยด่วน

เวอร์ชัน PHP ที่ปลอดภัยต้องอัปเดตเป็นอะไร?

ทีมพัฒนา PHP ได้ออกแพตช์ฉุกเฉินมาแล้ว เราสามารถเช็กเวอร์ชันที่ปลอดภัยได้ตามนี้

สายเวอร์ชัน PHP เวอร์ชันที่ปลอดภัย (มีแพตช์แล้ว)
PHP 8.5 อัปเดตเป็น 8.5.12 ขึ้นไป
PHP 8.4 อัปเดตเป็น 8.4.27 ขึ้นไป
PHP 8.3 อัปเดตเป็น 8.3.36 ขึ้นไป
PHP 8.2 อัปเดตเป็น 8.2.35 ขึ้นไป (แต่สายนี้จะหมด support ปลายปี 2026)

ข้อควรระวังสำหรับคนที่ใช้เวอร์ชันเก่า: ถ้าใครยังใช้ PHP 8.1 หรือเวอร์ชันที่เก่ากว่านั้น (เช่น 7.4, 5.4) ทางทีม PHP ไม่มีแพตช์อย่างเป็นทางการให้แล้ว เพราะว่าสายเหล่านี้หมดอายุการสนับสนุนไปแล้ว (End of Life) ทางเลือกคือต้องอัปเกรดขึ้นมาใช้เวอร์ชันที่ยังมี support หรือถ้าจำเป็นจริงๆ อาจต้องปรึกษาผู้ให้บริการโฮสติ้งว่ามี backport patch ให้หรือไม่

วิธีแก้ไขและสิ่งที่ต้องทำหลังอัปเดต

การแก้ไขที่สมบูรณ์ที่สุดคือ การอัปเดต PHP แต่อย่าลืมขั้นตอนสำคัญเหล่านี้ด้วย:

  1. รีสตาร์ทบริการ: แค่ติดตั้งแพตช์เฉยๆ ไม่เพียงพอ porqueว่า process ที่รันค้างอยู่จะยังใช้โค้ดเก่าอยู่ ต้องรีสตาร์ท PHP-FPM, Apache และ worker process ทั้งหมดด้วย
  2. ตรวจสอบ Changelog: บางครั้งผู้ให้บริการโฮสติ้งหรือ Linux Distro อาจทำ backport แพตช์มาโดยที่เลขเวอร์ชันดูเก่า ให้ดูที่ changelog ของแพ็กเกจว่ามีการแก้ไข CVE นี้หรือยัง
  3. ถ้ายังอัปเดตไม่ได้ทันที: PHP ยืนยันว่าไม่มีวิธีตั้งค่าอะไรที่ทดแทนการแพตช์ได้ 100% แต่มีมาตรการชั่วคราวที่พอช่วยลดความเสี่ยงได้ เช่น การปิด session.upload_progress.enabled ใน php.ini หรือการจำกัดขนาด request ที่ Web Server

ถ้าใครมีเว็บที่รัน PHP อยู่ แนะนำให้รีบเช็กเวอร์ชันด้วยคำสั่ง php -v แล้วอัปเดตกันโดยด่วนครับ ความปลอดภัยของข้อมูลผู้ใช้สำคัญที่สุด

Post Views: 49