แจ้งเตือนช่องโหว่ PHP2Shell ระดับวิกฤต (CVE-2026-109618, CVE-2026-109619) พร้อมวิธีอัปเดต PHP ทุกแพลตฟอร์ม

วิธีอัปเดต PHP ทุกแพลตฟอร์ม

CRITICAL SECURITY ALERT

แนวทางป้องกันสำหรับ Windows Server, Linux, Docker, Kubernetes, Apache, Nginx, XAMPP และ Laragon

ปรับปรุงข้อมูล: 11 พฤศจิกายน 2569

PHP2Shell คืออะไร?

PHP2Shell เป็นชื่อเรียกช่องโหว่ด้านความปลอดภัยระดับวิกฤต ใน PHP Runtime ซึ่งเปิดเผยเมื่อวันที่ 21 ตุลาคม 2569 และเกี่ยวข้องกับช่องโหว่ 2 รายการ ได้แก่ CVE-2026-109618 และ CVE-2026-109619

ช่องโหว่ดังกล่าวอาจเปิดโอกาสให้ผู้โจมตีจากระยะไกล สามารถสั่งรันโค้ดบนเครื่องแม่ข่ายได้โดยไม่ต้องยืนยันตัวตน (Unauthenticated Remote Code Execution: RCE) รวมถึงอาจส่งผลต่อความลับและความถูกต้องของข้อมูล

ข้อควรระวัง: เว็บไซต์ที่ให้บริการด้วย PHP ผ่าน Apache mod_php, PHP-FPM หรือ PHP-CGI อาจได้รับผลกระทบ ผู้ดูแลระบบควรเร่งตรวจสอบและติดตั้ง Security Patch โดยเฉพาะเว็บไซต์ที่เปิดให้บริการผ่านอินเทอร์เน็ต

เวอร์ชัน PHP ที่แก้ไขช่องโหว่แล้ว

PHP Version เวอร์ชันที่แก้ไขแล้ว คำแนะนำ
PHP 8.5 8.5.12+ ใช้สำหรับระบบที่รองรับ
PHP 8.4 8.4.27+ แนะนำสำหรับ Production
PHP 8.3 8.3.36+ อัปเดตทันที
PHP 8.2 8.2.35+ อัปเดตและวางแผนย้ายรุ่น
PHP 8.1 หรือต่ำกว่า ไม่มีแพตช์ปัจจุบันจาก Upstream ย้ายไปยังรุ่นที่ยังสนับสนุน

หมายเหตุ: ระบบ Linux บาง Distribution อาจได้รับแพตช์แบบ Backport โดยใช้หมายเลขเวอร์ชันแตกต่างจาก PHP Upstream โปรดตรวจสอบ Security Advisory ของผู้จำหน่าย

แนวทางอัปเดต PHP ตามสภาพแวดล้อม

1. Windows Server / IIS

สำหรับเครื่องแม่ข่าย Windows Server ที่ใช้งาน IIS และ PHP ผ่าน FastCGI

  1. ตรวจสอบ PHP Version และ IIS Handler Mapping
  2. สำรอง php.ini และ Configuration เดิม
  3. ดาวน์โหลด PHP Windows รุ่นที่แก้ไขแล้ว
  4. ติดตั้ง PHP ใน Directory ใหม่
  5. ปรับ FastCGI และ Handler Mapping ไปยัง PHP ใหม่
  6. Recycle Application Pool และทดสอบเว็บไซต์
where.exe php
php -v

Import-Module WebAdministration

Get-WebHandler | Where-Object {
    $_.scriptProcessor -match "php"
}

แนะนำ PHP แบบ Non Thread Safe (NTS) สำหรับ IIS FastCGI และตรวจสอบเวอร์ชันที่เว็บไซต์ ใช้งานจริง เนื่องจากอาจแตกต่างจาก PHP CLI

2. Linux Server (Ubuntu / Debian / RHEL)

ตรวจสอบ PHP และ PHP-FPM ที่ติดตั้ง

php -v
which php
systemctl list-units --all 'php*-fpm.service'

Ubuntu / Debian ตัวอย่าง PHP 8.4

sudo apt update
apt-cache policy php8.4-fpm

sudo apt install --only-upgrade \
  php8.4-cli php8.4-common php8.4-fpm

sudo systemctl restart php8.4-fpm

RHEL / Rocky Linux / AlmaLinux

sudo dnf check-update 'php*'
sudo dnf update 'php*'
sudo systemctl restart php-fpm

ควรตรวจสอบ Repository ให้มี Security Patch ที่เกี่ยวข้องก่อนดำเนินการ

3. Docker

อัปเดต PHP Base Image และ Build Container ใหม่ ไม่ควรแก้ PHP ภายใน Container ที่กำลังทำงานโดยตรง

ตัวอย่าง Dockerfile

FROM php:8.4.27-fpm

WORKDIR /var/www/html
COPY . /var/www/html

ตัวอย่างคำสั่ง

docker compose build --pull
docker compose up -d --force-recreate
docker compose ps

ตรวจสอบว่า Image Tag มีอยู่จริงและมีแพตช์แล้ว สำหรับ Production ควรใช้ Image Digest ที่ผ่านการทดสอบ

4. Kubernetes (K8s)

สำหรับ Kubernetes ต้องอัปเดต Container Image ที่ Deployment ใช้งาน และทำ Rolling Update

kubectl get deployments -A

kubectl -n production set image \
  deployment/php-app \
  php=registry.example.org/php-app:patched

kubectl -n production rollout status \
  deployment/php-app

Image ในตัวอย่างต้องเปลี่ยนเป็น Image ที่ Build และ Push ไปยัง Registry แล้ว หากใช้งาน Helm หรือ GitOps ควรปรับไฟล์ Configuration ต้นทางให้ตรงกัน

5. Apache HTTP Server

ตรวจสอบว่า Apache ใช้งาน PHP แบบ mod_php หรือ PHP-FPM

apachectl -M | grep -Ei 'php|proxy_fcgi'

อัปเดต PHP Module หรือ PHP-FPM ตามรูปแบบที่ใช้งาน จากนั้นตรวจสอบและ Restart Service

sudo apachectl configtest
sudo systemctl restart apache2

การอัปเดต Apache เพียงอย่างเดียว ไม่สามารถทดแทนการอัปเดต PHP Runtime ได้

6. Nginx + PHP-FPM

Nginx ไม่ได้ประมวลผล PHP โดยตรง แต่ส่งคำขอไปยัง PHP-FPM จึงจำเป็นต้องอัปเดต PHP-FPM

sudo nginx -T 2>&1 | grep fastcgi_pass

sudo systemctl restart php8.4-fpm

sudo nginx -t
sudo systemctl reload nginx

ตรวจสอบ FastCGI Socket หรือ Port ให้ชี้ไปยัง PHP-FPM เวอร์ชันใหม่อย่างถูกต้อง

7. XAMPP

XAMPP เป็นชุดโปรแกรมที่รวม Apache, PHP และฐานข้อมูล ไว้ด้วยกัน การอัปเดตจึงต้องตรวจสอบความเข้ากันได้

  1. สำรองเว็บไซต์ ฐานข้อมูล และ Configuration
  2. ตรวจสอบ PHP Version ใน XAMPP
  3. ตรวจสอบชุด XAMPP หรือ PHP ที่มีแพตช์แล้ว
  4. ทดสอบการทำงานกับ Apache Modules
  5. ทดสอบเว็บไซต์ในสภาพแวดล้อมแยกก่อนใช้งานจริง

ไม่ควรคัดลอกเฉพาะ php.exe ไปทับเวอร์ชันเดิม โดยไม่ตรวจสอบ DLL และ PHP Extensions

8. Laragon

Laragon รองรับการเพิ่ม PHP หลายเวอร์ชัน และสามารถสลับเวอร์ชันได้จากเมนูจัดการ

  1. ดาวน์โหลด PHP รุ่นที่แก้ไขช่องโหว่แล้ว
  2. แตกไฟล์ไปยัง laragon\bin\php\
  3. เลือก Menu > PHP > Version
  4. Restart Services
  5. ตรวจสอบ PHP ที่เว็บไซต์ใช้งานจริง

ควรตรวจสอบ Thread Safety, PHP Extensions และความเข้ากันได้ของ Framework

Checklist หลังอัปเดต PHP

  • สำรองข้อมูลและ Configuration ก่อนอัปเดต
  • ตรวจสอบ PHP Runtime ของทุกเว็บไซต์
  • อัปเดต PHP ให้มี Security Patch
  • ตรวจสอบ PHP Extensions และ Dependencies
  • Restart หรือ Redeploy Services ที่เกี่ยวข้อง
  • ตรวจสอบ PHP Version ผ่านเว็บไซต์จริง
  • ทดสอบ Login, Database, API และ Upload File
  • ตรวจสอบ Access Log และ Error Log
  • ตรวจสอบไฟล์ผิดปกติหรือ Web Shell
  • บันทึกผลการอัปเดตและผู้รับผิดชอบ
ข้อสำคัญ: การอัปเดต PHP ช่วยป้องกันการโจมตีผ่านช่องโหว่ที่แก้ไขแล้ว แต่ไม่สามารถยืนยันได้ว่าเครื่องแม่ข่ายไม่เคยถูกบุกรุก ควรตรวจสอบ Log และพฤติกรรมผิดปกติย้อนหลังด้วย

สรุปคำแนะนำ

ผู้ดูแลระบบควรเร่งตรวจสอบ PHP Version โดยเฉพาะเว็บไซต์ Production ที่เปิดให้บริการผ่านอินเทอร์เน็ต และดำเนินการอัปเดต PHP Runtime เป็นเวอร์ชันที่แก้ไข CVE-2026-109618 และ CVE-2026-109619 แล้ว

ควรอัปเดตควบคู่กับการตรวจสอบความเข้ากันได้ของแอปพลิเคชัน การกำหนดสิทธิ์การเข้าถึง และการตรวจสอบความปลอดภัยของระบบ อย่างต่อเนื่อง

แหล่งข้อมูลอ้างอิง

หมายเหตุ: ตัวอย่างคำสั่งในบทความเป็นแนวทางเบื้องต้น ผู้ดูแลระบบควรปรับให้ตรงกับระบบปฏิบัติการ Repository, Service Name และการกำหนดค่าที่ใช้งานจริง