บันทึกเทค

php2shell (CVE-2026-109618 / 109619) ตรวจด้วย php -v ไม่ได้ — เลขเวอร์ชันที่คลาดเคลื่อนระหว่าง FPM, Docker และดิสโทร

เผยแพร่เมื่อ: 2026-10-22 · ผู้เขียน: GRAMSHIFT

เวอร์ชัน CLI กับ FPM, แท็ก Docker, backport ของดิสโทร และสิ่งที่ควรตรวจบนโฮสติ้งแบบแชร์

php2shell (CVE-2026-109618 / 109619) ตรวจด้วย php -v ไม่ได้ — เลขเวอร์ชันที่คลาดเคลื่อนระหว่าง FPM, Docker และดิสโทร

หน้านี้แปลโดย AI จากต้นฉบับภาษาญี่ปุ่น หากมีข้อแตกต่าง ให้ถือฉบับภาษาญี่ปุ่นเป็นหลัก: 日本語

หาก PHP ที่รับคำขอเว็บ (PHP-FPM, mod_php ของ Apache, php-cgi, FrankenPHP, LiteSpeed) เก่ากว่า 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 จะได้รับผลกระทบจาก CVE-2026-109618 และ CVE-2026-109619 ที่เรียกกันว่า php2shell วิธีแก้คืออัปเกรดเป็นเวอร์ชันเหล่านี้ (หรือแพ็กเกจที่แก้แล้วในกรณีแพ็กเกจของดิสโทร) แล้วรีสตาร์ตโปรเซส สิ่งที่ต้องตรวจไม่ใช่ php -v ในเครื่อง แต่เป็น “PHP ที่ให้บริการเว็บจริง” และ “เวอร์ชันของแพ็กเกจที่ติดตั้ง”

บทความนี้เน้นสี่จุดที่การตัดสินจากเลขเวอร์ชันอย่างเดียวนำไปสู่ข้อสรุปที่ผิด ตัวเลขและสถานะทั้งหมดเป็นข้อมูล ณ วันที่ 2026-10-22 และแหล่งที่มาของแต่ละหัวข้อแสดงไว้ท้ายบทความ

สิ่งที่ทราบ ณ วันที่ 2026-10-22

หัวข้อรายละเอียด
CVECVE-2026-109618 (GHSA-w8hw-w9fx-j79w) / CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)
ความรุนแรงประกาศของ PHP ให้ทั้งสองรายการ CVSS v4.0 9.2 (Critical)
เวอร์ชันที่แก้แล้ว8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 (เผยแพร่ 2026-10-21)
เวอร์ชันที่ได้รับผลกระทบเวอร์ชันที่เก่ากว่าเวอร์ชันที่แก้แล้วข้างต้น (ตามคำแนะนำด้านความปลอดภัยบน GitHub)
ขอบเขตPHP ทุกตัวที่รับคำขอเว็บ ประกาศระบุชื่อ PHP-FPM, mod_php, php-cgi, FrankenPHP และ LiteSpeed โดยอธิบายว่า mod_php มีความเสี่ยงสูงสุด ใน GitHub advisory มีการสาธิตการโจมตีสำเร็จกับ mod_php ส่วน FPM และ FrankenPHP ระบุว่า “ยังไม่มีการสาธิต” หรือ “มีเงื่อนไข” การที่ยังไม่มีการสาธิตไม่ได้แปลว่าปลอดภัย จึงควรอัปเกรดเป็นเวอร์ชันที่แก้แล้วไม่ว่าจะรัน PHP แบบใด
8.1 และเก่ากว่าโครงการ PHP ไม่ออกอัปเดตให้ มีการเผยแพร่ source backport แบบน้อยที่สุดสำหรับ 7.4 / 8.0 / 8.1 และบางดิสโทรหรือผู้ให้บริการ LTS อาจออกการแก้ไขให้
8.2สิ้นสุดการสนับสนุนวันที่ 2026-12-31 (ตามบันทึกการออกรุ่น 8.2.35)

ประกาศของ PHP ระบุว่า “วิธีแก้ที่สมบูรณ์เพียงอย่างเดียวคือการอัปเดต” มาตรการบรรเทาสำหรับช่วงก่อนที่จะอัปเดตได้อยู่ในส่วนหลังของบทความนี้

ข้อควรระวัง 1: php -v กับ PHP ฝั่งเว็บอาจเป็นคนละตัว

php -v ที่พิมพ์ผ่าน SSH แสดงเวอร์ชันของ PHP แบบ CLI ส่วนคำขอเว็บถูกจัดการโดยโปรเซส PHP-FPM หรือ mod_php ที่โหลดอยู่ใน Apache ซึ่งเป็นไบนารีและแพ็กเกจคนละตัว หากคุณติดตั้ง PHP ใหม่เฉพาะสำหรับ CLI, ติดตั้งหลายเวอร์ชันคู่กัน หรือมี FPM pool ที่ชี้ไปยังอีกเวอร์ชัน ฝั่งเว็บก็อาจยังเป็นเวอร์ชันเก่าได้แม้ php -v จะแสดงเวอร์ชันที่แก้แล้ว

มีหลายวิธีในการดูเวอร์ชันจริงของฝั่งเว็บ

# FPM บน Debian / Ubuntu (ชื่อแยกตามเวอร์ชัน)
php-fpm8.3 -v

# FPM บนตระกูล RHEL
php-fpm -v

# ตรวจว่า Apache โหลด mod_php อยู่หรือไม่
apachectl -M | grep -i php

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

<?php echo PHP_VERSION, ' ', PHP_SAPI;

หาก PHP_SAPI เป็น fpm-fcgi แปลว่ารันภายใต้ FPM, apache2handler คือ mod_php, cgi-fcgi คือ CGI อย่าปล่อย phpinfo() ทิ้งไว้ เพราะตัวมันเองก็ทำให้ข้อมูลรั่วไหล

การรีสตาร์ตเป็นอีกขั้นตอนที่พลาดได้ง่าย แม้แพ็กเกจจะถูกแทนที่แล้ว โปรเซส php-fpm หรือ Apache ที่รันอยู่ก็อาจยังรันโค้ดเก่าต่อไป บางระบบรีสตาร์ตอัตโนมัติเมื่ออัปเดตแพ็กเกจ แต่บางระบบไม่ทำ หลังอัปเดตให้รีสตาร์ต FPM / Apache และตรวจเวอร์ชันฝั่งเว็บอีกครั้งด้วยวิธีข้างต้น

ข้อควรระวัง 2: กับ Docker ตัดสินจากชื่อแท็กไม่ได้

อิมเมจทางการ php มี “แท็กที่เปลี่ยนเนื้อหาได้” (moving tag) เช่น 8.3 และ 8.3-fpm ซึ่งเนื้อหาถูกเปลี่ยนแทนที่เรื่อย ๆ และแท็กที่ตรึงเวอร์ชันเช่น 8.3.30

  • แม้ moving tag จะถูกเปลี่ยนเป็นเวอร์ชันที่แก้แล้วบน Docker Hub แล้ว สำเนาในเครื่องคุณก็ยังเป็นอิมเมจเก่าจนกว่าจะ pull ใหม่ คอนเทนเนอร์ที่รันอยู่ก็ใช้อิมเมจเก่าต่อไปจนกว่าจะสร้างใหม่ Dockerfile ที่ใช้ FROM php:8.3-fpm ก็ยังบิลด์บนเบสเก่าหากยังค้างอยู่ใน build cache
  • แท็กที่ตรึงเวอร์ชันจะเก่าตลอดไปจนกว่าคุณจะเปลี่ยนเลขเอง

ตรวจได้ว่ามีการเผยแพร่แท็กเวอร์ชันที่แก้แล้วหรือยังด้วย Docker Hub API

curl -s "https://hub.docker.com/v2/repositories/library/php/tags?name=8.3.36&page_size=100"

นี่คือผลการสอบถามสี่สายรุ่นเมื่อวันที่ 2026-10-22 (เวลาเป็น UTC)

เวอร์ชันที่แก้แล้วจำนวนแท็กที่พบเวลาที่แท็กฐาน Debian (-fpm, -apache ฯลฯ) ปรากฏแท็กฐาน Alpine
8.5.1254 (รวม RC1)2026-10-21 18:59–22:132026-10-21 22:12–10-22 01:05
8.4.2754 (รวม RC1)2026-10-21 22:09–22:112026-10-21 22:09–10-22 03:58
8.3.36272026-10-21 22:04–22:062026-10-21 22:04–10-22 03:56
8.2.35272026-10-21 21:59–22:012026-10-21 22:00–10-22 00:58

จากการตรวจครั้งนี้พบสามจุดที่การตัดสินจากตัวเลขอาจทำให้เข้าใจผิด

  1. “อัปเดตเมื่อเร็ว ๆ นี้” ไม่ได้แปลว่า “แก้แล้ว” แท็กตรึงเวอร์ชัน 8.3.35 ถูกบิลด์ใหม่ในวันที่ 2026-10-21 แต่ PHP_VERSION ภายในยังเป็น 8.3.35 ให้ดูเวอร์ชันภายใน ไม่ใช่เวลาที่อัปเดต
  2. digest ต่างกันแต่เนื้อหาอาจเหมือนกัน 8.3 กับ 8.3.36 มี digest ของแท็ก (ค่าของดัชนีแบบหลายสถาปัตยกรรม) ต่างกัน แต่อิมเมจ amd64 เป็นตัวเดียวกัน และทั้งคู่มี PHP_VERSION=8.3.36 เช่นเดียวกัน สำหรับ 8.3-fpm / 8.3.36-fpm, 8.4-apache / 8.4.27-apache, latest / 8.5.12, 8.5-fpm และ 8.2-fpm ค่า PHP_VERSION ของอิมเมจ amd64 เป็นเวอร์ชันที่แก้แล้ว
  3. อิมเมจทางการของ 8.1 และเก่ากว่าไม่มีเวอร์ชันที่แก้แล้ว 8.1-fpm อัปเดตล่าสุดเมื่อ 2025-12-31

ตรวจอิมเมจในเครื่องและคอนเทนเนอร์ที่รันอยู่ได้ดังนี้:

# เวอร์ชัน PHP ของอิมเมจที่ pull ไว้ในเครื่อง
docker image inspect php:8.3-fpm --format '{{range .Config.Env}}{{println .}}{{end}}' | grep PHP_VERSION

# pull ใหม่แล้วสร้างคอนเทนเนอร์ใหม่
docker compose pull
docker compose up -d

# หากบิลด์อิมเมจเอง ให้ pull เบสใหม่ก่อนแล้วจึงบิลด์
docker compose build --pull

# เวอร์ชันภายในคอนเทนเนอร์ที่รันอยู่
docker compose exec app php -r 'echo PHP_VERSION, PHP_EOL;'

ให้แทนที่ app ในคำสั่งสุดท้ายด้วยชื่อ service ของคุณ อิมเมจทางการแต่ละตัวบิลด์ด้วย PHP_VERSION เพียงค่าเดียว เวอร์ชัน CLI ภายในคอนเทนเนอร์จึงตรงกับเวอร์ชัน FPM / Apache ของคอนเทนเนอร์นั้น (ข้อควรระวัง 1 ใช้เมื่อติดตั้ง PHP ลงบนโฮสต์โดยตรง)

FrankenPHP ฝัง PHP ไว้ภายใน เวอร์ชันของ FrankenPHP กับเวอร์ชันของ PHP ที่ฝังจึงเป็นคนละตัวเลข บันทึกการออกรุ่นของ FrankenPHP 1.13.2 ที่เผยแพร่เมื่อ 2026-10-21 ระบุว่าอิมเมจ Docker บิลด์ด้วย PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 และไบนารีแบบ static บิลด์ด้วย PHP 8.5.12

ข้อควรระวัง 3: แพ็กเกจของดิสโทร “แก้แล้วแต่เลขยังเก่า”

Ubuntu และ RHEL นำเฉพาะการแก้ไขไปใส่ในเวอร์ชันเก่า (backport) เลขที่ php -v แสดงจึงยังเก่า การเช็กด้วยตัวเลขแบบ “ต่ำกว่า 8.3.36 จึงมีช่องโหว่” จะตีว่าระบบที่แก้แล้วมีช่องโหว่ ในทางกลับกันก็วางใจจากตัวเลขไม่ได้เช่นกัน ให้ตัดสินจากเวอร์ชันแพ็กเกจและ security tracker ของแต่ละดิสโทร

แพ็กเกจที่แก้แล้วซึ่งระบุไว้ในแต่ละ tracker ณ วันที่ 2026-10-22 (เหมือนกันทั้งสอง CVE):

ดิสโทรแพ็กเกจเวอร์ชันที่แก้แล้วแหล่งที่มา
Ubuntu 22.04 (jammy)php8.18.1.2-1ubuntu2.28USN-8948-1
Ubuntu 24.04 (noble)php8.38.3.6-0ubuntu0.24.04.13USN-8948-1
Ubuntu 26.04 (resolute)php8.58.5.4-0ubuntu1.5USN-8948-1
Ubuntu (stonking)php8.58.5.9-0ubuntu2.1USN-8948-1
Ubuntu 14.04 / 16.04 / 18.04 / 20.04php5 / php7.0 / php7.2 / php7.4ให้บริการผ่าน Ubuntu Pro (รวม Legacy Support)USN-8948-2
Debian 12 (bookworm)php8.28.2.35-1~deb12u1DLA-4848-1
Debian 13 (trixie)php8.48.4.27-1~deb13u1DSA-6574-1
RHEL 10php / php8.48.3.36-1.el10_2 / 8.4.27-1.el10_2Red Hat
RHEL 9php (ค่าเริ่มต้น)8.0.30-8.el9_8.1Red Hat
RHEL 9php module 8.2 / 8.38.2.35-1.module+el9.8.0… / 8.3.36-1.module+el9.8.0…Red Hat
RHEL 8php module 7.4 / 8.27.4.33-8.module+el8.10.0… / 8.2.35-1.module+el8.10.0…Red Hat

ตารางนี้แสดงให้เห็นตรง ๆ ว่าทำไมเลขอย่างเดียวจึงไม่พอ PHP ที่แก้แล้วของ Ubuntu 24.04 เป็นเวอร์ชันที่ขึ้นต้นด้วย 8.3.6 ซึ่งต่ำกว่า 8.3.36 ของ upstream มาก PHP ค่าเริ่มต้นของ RHEL 9 แก้แล้วทั้งที่ยังเป็น 8.0.30 แม้ upstream จะไม่ออกการแก้ไขสำหรับ 8.0 อีกแล้ว ส่วน Debian ขยับไปใช้เลขเดียวกับ upstream (8.2.35 / 8.4.27)

บางแพ็กเกจยังไม่ได้แก้ (ณ วันที่ 2026-10-22)

  • php module 8.4 ของ RHEL 9 ระบุว่า “ได้รับผลกระทบ ยังไม่มีการแก้ไข”
  • Debian forky (testing) มี php8.4 8.4.26-1 ซึ่งระบุว่า “vulnerable” ส่วน php8.4 ใน sid (unstable) เป็น 8.4.27-1 และแก้แล้ว

ตัวอย่างคำสั่งสำหรับตรวจเซิร์ฟเวอร์ของคุณเอง:

# Debian / Ubuntu: เวอร์ชันที่ติดตั้งและเวอร์ชันที่ติดตั้งได้
apt-cache policy php8.3-fpm libapache2-mod-php8.3

# Ubuntu: ตรวจว่า CVE นี้ถูกแก้บนเซิร์ฟเวอร์นี้แล้วหรือยัง
pro fix CVE-2026-109618
pro fix CVE-2026-109619

# ตระกูล RHEL: ตรวจว่ามีอัปเดตที่แก้ CVE นี้หรือไม่ และเวอร์ชันที่ติดตั้ง
dnf updateinfo list --cve CVE-2026-109618
rpm -q php-fpm php-cli

ปรับชื่อแพ็กเกจ (php8.3-fpm ฯลฯ) ให้ตรงกับสภาพแวดล้อมของคุณ เทียบเวอร์ชันที่แสดงกับ “เวอร์ชันที่แก้แล้ว” ในตารางข้างต้นหรือใน tracker หากเท่ากันหรือสูงกว่าแปลว่าการแก้ไขอยู่ในระบบแล้ว จากนั้นให้ทำการรีสตาร์ตและตรวจฝั่งเว็บตามข้อควรระวัง 1 ให้ครบ

หากติดตั้ง PHP จากรีโพซิทอรีของบุคคลที่สามแทนแพ็กเกจของดิสโทรเอง คุณต้องติดตามอัปเดตของรีโพซิทอรีนั้น ประกาศของ PHP ระบุว่า rpms.remirepo.net ซึ่งดำเนินการโดยอาสาสมัครจะยังไม่มีอัปเดตในวันที่เปิดเผยช่องโหว่ และแนะนำให้เปลี่ยนไปใช้แพ็กเกจของดิสโทรหรือบิลด์เอง

ข้อควรระวัง 4: บนโฮสติ้งแบบแชร์และสภาพแวดล้อมแบบ managed คุณอัปเกรด PHP เองไม่ได้

บนโฮสติ้งแบบแชร์และสภาพแวดล้อม PHP แบบ managed ผู้ให้บริการเป็นผู้เปลี่ยนรันไทม์ PHP ตรงนี้ก็เช่นกัน เลขอย่างเดียวไม่พอ หากผู้ให้บริการบิลด์ PHP เองหรือทำ backport การแก้ไข เลขเวอร์ชันก็อาจยังเก่า

มีสามอย่างที่คุณทำเองได้

  1. ตรวจเวอร์ชันฝั่งเว็บ ใช้ไฟล์ชั่วคราวจากข้อควรระวัง 1 เพื่อพิมพ์ PHP_VERSION และ PHP_SAPI แล้วลบทิ้งทันที หากแผงควบคุมมีตัวเลือกเวอร์ชัน PHP ให้จดไว้ด้วยว่าเลือกเวอร์ชันใดอยู่
  2. อ่านประกาศของผู้ให้บริการ และสอบถามหากไม่มี ถามว่า: “การแก้ไข CVE-2026-109618 และ CVE-2026-109619 จะถูกนำมาใช้กับ PHP เวอร์ชันใดในแพ็กเกจของฉัน และเมื่อใด (หรือใช้แล้วหรือยัง)” การถามด้วยหมายเลข CVE แทนเลขเวอร์ชันจะได้คำตอบที่ครอบคลุมถึง backport ด้วย
  3. หากเลือกเวอร์ชันที่หมดการสนับสนุนอยู่ ให้อัปเกรด โครงการ PHP ไม่ออกการแก้ไขสำหรับ 8.1 และเก่ากว่า และการสนับสนุน 8.2 สิ้นสุดวันที่ 2026-12-31 หากผู้ให้บริการไม่ได้ทำ backport การแก้ไข การเปลี่ยนเวอร์ชันคือทางที่แน่นอน

สถานะของผู้ให้บริการโฮสติ้งแต่ละราย (ณ วันที่ 2026-10-22)

บนโฮสติ้งแบบแชร์ ผู้ให้บริการมักเป็นผู้อัปเดตรันไทม์ PHP และประกาศของหลายรายระบุว่า “ผู้ใช้ไม่ต้องดำเนินการใด ๆ” สิ่งที่ผู้ใช้ต้องทำมีสองอย่าง คือตรวจประกาศอย่างเป็นทางการของผู้ให้บริการ และหากเลือก PHP เวอร์ชันเก่าไว้ในแผงควบคุม ให้พิจารณาว่าจะเปลี่ยนไปใช้เวอร์ชันที่ประกาศแนะนำ (เวอร์ชันที่มีรุ่นที่แก้แล้ว) หรือไม่

ตารางด้านล่างสรุปเฉพาะสิ่งที่เขียนไว้ในหน้าอย่างเป็นทางการของแต่ละราย (ประกาศและข้อมูลการบำรุงรักษา) โดยเรียบเรียงถ้อยคำของประกาศใหม่ ประกาศมีการอัปเดตตามความคืบหน้า จึงควรยืนยันสถานะจริงจากหน้าทางการที่อ้างอิงเสมอ

ผู้ให้บริการ / บริการประเด็นสำคัญของประกาศวันที่/เวลาของประกาศแหล่งที่มา
エックスサーバー“สำหรับ PHP 8.2–8.5 การติดตั้งแพตช์แก้ไขบนเซิร์ฟเวอร์ที่ได้รับผลกระทบทั้งหมดเสร็จสมบูรณ์แล้ว” ส่วนเวอร์ชันเก่า ประกาศระบุว่า “แพตช์แก้ไขพร้อมแล้วสำหรับบางเวอร์ชัน และจะติดตั้งตามลำดับเมื่อการตรวจสอบเสร็จสิ้น” และเวอร์ชันเก่าอื่น ๆ ก็กำลังดำเนินการอยู่ตามที่ระบุ ณ 10/22 6:45 (หน้านี้อัปเดตถึง 13:15)メンテナンスの進捗状況
シン・レンタルサーバーหน้าประกาศมี “ความคืบหน้าการบำรุงรักษา” เหมือนกับ Xserver แต่ผมไม่พบข้อความที่กล่าวถึงสถานะ PHP ของ Shin Rental Server โดยเฉพาะ (ควรสอบถามฝ่ายสนับสนุน)-お知らせ
ConoHa WING“เรากำลังติดตั้งแพตช์ความปลอดภัยโดยคงเวอร์ชัน PHP ที่คุณใช้อยู่ในปัจจุบัน” ประกาศระบุว่าโดยทั่วไปผู้ใช้ไม่ต้องเปลี่ยนเวอร์ชัน แต่ PHP 5.x และ 7.x อาจต้องเปลี่ยน ตัวจัดการไฟล์และเว็บเมลถูกระงับชั่วคราวเพื่อความระมัดระวัง การแสดงผลเว็บไซต์และการรับส่งอีเมลยังเป็นปกติ10/22【重要】PHPの脆弱性への弊社対応について
さくらのレンタルサーバ“เราดำเนินการแก้ไขช่องโหว่เสร็จสิ้นแล้วสำหรับ PHP ทุกเวอร์ชันที่เลือกได้จากแผงควบคุมของเรา” ระบุว่า “ลูกค้าไม่ต้องดำเนินการเร่งด่วนใด ๆ” และแนะนำให้ย้ายไปใช้เวอร์ชันล่าสุดที่ยังได้รับการสนับสนุนในอนาคต ประกาศระบุว่าเว็บเมลได้รับการแก้ไขเมื่อ 10/22 13:45 และ phpMyAdmin ยังอยู่ระหว่างดำเนินการ10/22 (อัปเดต 13:45)PHPの脆弱性(CVE-2026-109618、CVE-2026-109619)への対応状況について
ロリポップ!ประกาศการบำรุงรักษาเชิงป้องกันก่อนการเผยแพร่เวอร์ชันที่แก้แล้ว (เว็บไซต์บริการ หน้าผู้ใช้ ฯลฯ จะถูกระงับตามลำดับ และเว็บไซต์อาจถูกระงับหรือจำกัดโดยไม่แจ้งล่วงหน้า) ณ 10/22 ผมไม่พบประกาศที่แจ้งว่าการแก้ไข PHP เสร็จสมบูรณ์ (ควรสอบถามฝ่ายสนับสนุน)10/21【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ
ヘテムル“สำหรับ PHP 8.x และ PHP 7.4 เราติดตั้งเวอร์ชันที่แก้แล้วอย่างเป็นทางการ” ส่วนเวอร์ชันอื่น “เราแก้ไขเองโดยอ้างอิงจากการแก้ไขอย่างเป็นทางการ” เนื่องจาก “ฟังก์ชันบางอย่าง (session.upload_progress) ถูกปิดใช้งานในทุกเวอร์ชัน” จึงขอให้ผู้ใช้ตรวจสอบว่าเว็บไซต์ยังทำงานได้ และเนื่องจากเวอร์ชันเก่าอาจไม่ได้รับการแก้ไขอีก ประกาศจึงแนะนำให้เปลี่ยนไปใช้เวอร์ชันที่ใหม่กว่าลงประกาศ 10/21 19:44 อัปเดต 10/22 12:18 และ 13:20【一部完了】【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ
mixhost“การติดตั้งแพ็กเกจแก้ไข PHP เสร็จสมบูรณ์เมื่อเวลาประมาณ 10:18 น. ของวันที่ 22 ตุลาคม 2026” “ติดตั้งโดยไม่เปลี่ยนเลขเวอร์ชัน PHP” “ลูกค้าไม่ต้องดำเนินการใด ๆ” ประกาศแนะนำให้ผู้ใช้ที่ใช้เวอร์ชันต่ำกว่า PHP 8.2 ใช้เวอร์ชันที่ยังได้รับการสนับสนุน (8.2 ขึ้นไป)10/22【完了】PHPの重大な脆弱性への対応について
KAGOYAสำหรับบริการเซิร์ฟเวอร์เช่า PHP 8.2–8.5 จะอัปเดตตามลำดับหลังตรวจสอบเวอร์ชันที่แก้แล้ว (เวอร์ชันเป้าหมายยังอยู่ระหว่างสรุป) สำหรับเซิร์ฟเวอร์ managed เฉพาะ แบบแชร์ และเฉพาะ WordPress ยังอยู่ระหว่างวางแผนการแก้ไขถาวร ประกาศแนะนำมาตรการชั่วคราวให้พิจารณานำเว็บไซต์ออฟไลน์หรือจำกัดการเข้าถึงลงประกาศ 10/21 18:20 อัปเดต 10/22 10:35PHPの脆弱性に関する当社サービスへの影響について
Zenlogic(IDCフロンティア)ติดตั้งการแก้ไขระหว่างการบำรุงรักษาฉุกเฉิน (10/21 22:00–10/22 18:00 เวลาสิ้นสุดอาจเปลี่ยนแปลง) PHP 5.3 จะถูกอัปเดตเป็นเวอร์ชันล่าสุดและย้อนกลับไม่ได้ ส่วน 7.4 และ 8.1 อาจถูกอัปเดต ประกาศระบุว่าหากเกิดปัญหาการแสดงผลหรือการทำงานหลังอัปเดต ต้องแก้ไขที่ฝั่งแอปพลิเคชัน10/21【ホスティング】緊急メンテナンス作業のお知らせ
ColorfulBox“เราดำเนินการอัปเดตเป็นเวอร์ชันที่แพตช์แล้วที่ฝั่งเซิร์ฟเวอร์เสร็จสิ้นแล้ว โดยคงเวอร์ชัน PHP ที่คุณใช้อยู่ในปัจจุบัน” ประกาศระบุว่า “ลูกค้าไม่จำเป็นต้องเปลี่ยนหรือสลับเวอร์ชัน PHP ด้วยตนเอง”10/22【重要】PHPの脆弱性に対するセキュリティアップデート完了のお知らせ
お名前.com レンタルサーバー“เรากำลังติดตั้งแพตช์ความปลอดภัยโดยคงเวอร์ชัน PHP ที่คุณใช้อยู่ในปัจจุบัน” ประกาศระบุว่าโดยทั่วไปไม่ต้องเปลี่ยนเวอร์ชัน แต่ PHP 5.x และ 7.x อาจต้องเปลี่ยน ตัวจัดการไฟล์และเว็บเมลถูกระงับชั่วคราวเพื่อความระมัดระวัง10/22【重要】PHPの脆弱性への弊社対応について
CORESERVER(V2)“เราดำเนินการแก้ไขช่องโหว่เสร็จสิ้นแล้วสำหรับ PHP ทุกเวอร์ชันที่เราให้บริการ” “ลูกค้าไม่ต้องดำเนินการใด ๆ เช่นการเปลี่ยนเวอร์ชัน PHP” การบำรุงรักษาดำเนินการ 10/22 0:00–11:13 และระบุว่าเสร็จสิ้นแล้วลงประกาศ 10/21 (เสร็จสิ้น 10/22)PHP脆弱性の対応(CORESERVER V2)【完了】
XREA“เราดำเนินการแก้ไขช่องโหว่เสร็จสิ้นแล้วสำหรับ PHP 7.4 ขึ้นไป (7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5)” ผู้ใช้เวอร์ชันเหล่านี้ไม่ต้องเปลี่ยนเวอร์ชัน ประกาศไม่ได้กล่าวถึงเวอร์ชันต่ำกว่า 7.4ลงประกาศ 10/21 (เสร็จสิ้น 10/22 0:50)PHP脆弱性の対応(XREA)【完了】
バリューサーバー“เราดำเนินการแก้ไขช่องโหว่เสร็จสิ้นแล้วสำหรับ PHP 7.4 ขึ้นไป” ประกาศระบุว่าผู้ใช้เวอร์ชันเหล่านี้ไม่ต้องเปลี่ยนเวอร์ชันลงประกาศ 10/21 (เสร็จสิ้น 10/22 0:50)PHP脆弱性の対応(VALUESERVER)【完了】
ABLENET“สำหรับช่องโหว่สองรายการที่พบใน PHP เราได้ดำเนินการอัปเดตความปลอดภัยเบื้องต้นสำหรับสภาพแวดล้อมเซิร์ฟเวอร์เช่าของเรา” ประกาศไม่ได้ระบุว่าครอบคลุมเวอร์ชันใดหรือผู้ใช้ต้องดำเนินการหรือไม่10/22 13:04PHPの脆弱性に関するセキュリティアップデートの対応について
WebARENA(レンタルサーバー)ณ 10/22 ผมไม่พบประกาศอย่างเป็นทางการ (ควรสอบถามฝ่ายสนับสนุน)-WebARENA お知らせ(2026年)

ในกรณีที่ผมหาประกาศอย่างเป็นทางการไม่พบหรือเปิดไม่ได้ ตารางระบุว่า “ยืนยันไม่ได้” หรือ “ไม่พบ” การไม่มีข้อมูลตรงนั้นไม่ได้แปลว่าผู้ให้บริการยังไม่ได้ดำเนินการ ควรตรวจสอบโดยตรงจากประกาศและฝ่ายสนับสนุนของผู้ให้บริการของคุณ

มาตรการบรรเทาระหว่างที่ยังอัปเดตทันทีไม่ได้

ประกาศของ PHP ระบุการตั้งค่าที่ช่วยลดพื้นที่การโจมตีจนกว่าจะอัปเดตได้ อย่างไรก็ตาม ประกาศเองระบุชัดเจนว่าการตั้งค่าเหล่านี้ “ไม่ได้ทำให้คุณปลอดภัย” รายการหลัก ๆ คือ:

  • สำหรับ CVE-2026-109619: ตั้ง session.upload_progress.enabled=0 ใน php.ini, FPM pool หรือการตั้งค่าเซิร์ฟเวอร์ แล้วรีสตาร์ต worker ทั้งหมด (ini_set() และ .user.ini ของ FPM ใช้ไม่ได้ผลกับรายการนี้) บน PHP 8.5 ให้ตั้ง fatal_error_backtraces=0 ด้วย
  • สำหรับ CVE-2026-109618: ตั้ง memory_limit=-1 ในแบบที่แอปพลิเคชันเขียนทับไม่ได้ และลด post_max_size (8M หากไม่มีการอัปโหลด 32M หากมี) อย่าใช้ RLIMIT_AS / RLIMIT_DATA แทน

NCSC ของสหราชอาณาจักรแนะนำให้พิจารณานำระบบที่อัปเดตหรือบรรเทาทันทีไม่ได้ออฟไลน์ และตรวจหาร่องรอยการถูกเจาะระบบก่อนอัปเดตหรือใช้มาตรการบรรเทา

แหล่งที่มา (ตรวจสอบเมื่อ 2026-10-22)

คำถามที่พบบ่อย

ถ้า php -v แสดงเวอร์ชันที่แก้แล้ว แปลว่าป้องกัน php2shell (CVE-2026-109618 / 109619) ได้แล้วใช่หรือไม่

ไม่จำเป็น php -v แสดงเฉพาะเวอร์ชันของ PHP แบบ CLI ส่วน PHP-FPM หรือ mod_php ของ Apache ที่รับคำขอเว็บอาจเป็นไบนารีและแพ็กเกจคนละตัว ตรวจเวอร์ชัน FPM ด้วย php-fpm8.3 -v (ในตระกูล RHEL ใช้ php-fpm -v) หรือสร้างไฟล์ชั่วคราวที่พิมพ์ PHP_VERSION และ PHP_SAPI แล้วเปิดผ่านเว็บ และลบทิ้งทันทีเมื่อตรวจเสร็จ หากอัปเดตแล้วไม่ได้รีสตาร์ต FPM หรือ Apache ก็อาจยังรันโค้ดเก่าอยู่

ถ้าใช้ php:8.3-fpm ของ Docker แปลว่า php2shell ถูกแก้แล้วใช่หรือไม่

ณ วันที่ 2026-10-22 php:8.3-fpm บน Docker Hub ถูกเปลี่ยนเป็น PHP 8.3.36 แล้ว แต่อิมเมจในเครื่องคุณจะยังเก่าจนกว่าจะ pull ใหม่ และคอนเทนเนอร์ที่กำลังรันจะใช้อิมเมจเก่าต่อไปจนกว่าจะสร้างใหม่ ให้รัน docker compose pull และ docker compose up -d (หรือ docker compose build --pull หากบิลด์อิมเมจเอง) จากนั้นรัน php -r 'echo PHP_VERSION;' ในคอนเทนเนอร์และยืนยันว่าเป็น 8.3.36 ขึ้นไป แท็กที่ตรึงเวอร์ชันเช่น 8.3.30 จะยังเก่าจนกว่าคุณจะเปลี่ยนเลขเอง

Ubuntu และ RHEL ยังแสดง PHP 8.3.6 หรือ 8.0.30 จะได้รับผลกระทบจาก php2shell หรือไม่

ดูจากเลขเวอร์ชันอย่างเดียวไม่ได้ Ubuntu และ RHEL ทำ backport การแก้ไขไปยังเวอร์ชันเก่า แพ็กเกจจึงแก้แล้วได้ทั้งที่เลขยังเก่า ณ วันที่ 2026-10-22 การแก้ไขอยู่ใน php8.3 8.3.6-0ubuntu0.24.04.13 บน Ubuntu 24.04 และ php 8.0.30-8.el9_8.1 บน RHEL 9 ให้เทียบเวอร์ชันแพ็กเกจที่ติดตั้ง (apt-cache policy หรือ rpm -q) กับเวอร์ชันที่แก้แล้วใน security tracker ของดิสโทร หรือตรวจด้วย pro fix CVE-2026-109618 บน Ubuntu และ dnf updateinfo list --cve CVE-2026-109618 บนตระกูล RHEL