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

หน้านี้แปลโดย 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
| หัวข้อ | รายละเอียด |
|---|---|
| CVE | CVE-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.12 | 54 (รวม RC1) | 2026-10-21 18:59–22:13 | 2026-10-21 22:12–10-22 01:05 |
| 8.4.27 | 54 (รวม RC1) | 2026-10-21 22:09–22:11 | 2026-10-21 22:09–10-22 03:58 |
| 8.3.36 | 27 | 2026-10-21 22:04–22:06 | 2026-10-21 22:04–10-22 03:56 |
| 8.2.35 | 27 | 2026-10-21 21:59–22:01 | 2026-10-21 22:00–10-22 00:58 |
จากการตรวจครั้งนี้พบสามจุดที่การตัดสินจากตัวเลขอาจทำให้เข้าใจผิด
- “อัปเดตเมื่อเร็ว ๆ นี้” ไม่ได้แปลว่า “แก้แล้ว” แท็กตรึงเวอร์ชัน
8.3.35ถูกบิลด์ใหม่ในวันที่ 2026-10-21 แต่PHP_VERSIONภายในยังเป็น 8.3.35 ให้ดูเวอร์ชันภายใน ไม่ใช่เวลาที่อัปเดต - 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 เป็นเวอร์ชันที่แก้แล้ว - อิมเมจทางการของ 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.1 | 8.1.2-1ubuntu2.28 | USN-8948-1 |
| Ubuntu 24.04 (noble) | php8.3 | 8.3.6-0ubuntu0.24.04.13 | USN-8948-1 |
| Ubuntu 26.04 (resolute) | php8.5 | 8.5.4-0ubuntu1.5 | USN-8948-1 |
| Ubuntu (stonking) | php8.5 | 8.5.9-0ubuntu2.1 | USN-8948-1 |
| Ubuntu 14.04 / 16.04 / 18.04 / 20.04 | php5 / php7.0 / php7.2 / php7.4 | ให้บริการผ่าน Ubuntu Pro (รวม Legacy Support) | USN-8948-2 |
| Debian 12 (bookworm) | php8.2 | 8.2.35-1~deb12u1 | DLA-4848-1 |
| Debian 13 (trixie) | php8.4 | 8.4.27-1~deb13u1 | DSA-6574-1 |
| RHEL 10 | php / php8.4 | 8.3.36-1.el10_2 / 8.4.27-1.el10_2 | Red Hat |
| RHEL 9 | php (ค่าเริ่มต้น) | 8.0.30-8.el9_8.1 | Red Hat |
| RHEL 9 | php module 8.2 / 8.3 | 8.2.35-1.module+el9.8.0… / 8.3.36-1.module+el9.8.0… | Red Hat |
| RHEL 8 | php module 7.4 / 8.2 | 7.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 เพื่อพิมพ์
PHP_VERSIONและPHP_SAPIแล้วลบทิ้งทันที หากแผงควบคุมมีตัวเลือกเวอร์ชัน PHP ให้จดไว้ด้วยว่าเลือกเวอร์ชันใดอยู่ - อ่านประกาศของผู้ให้บริการ และสอบถามหากไม่มี ถามว่า: “การแก้ไข CVE-2026-109618 และ CVE-2026-109619 จะถูกนำมาใช้กับ PHP เวอร์ชันใดในแพ็กเกจของฉัน และเมื่อใด (หรือใช้แล้วหรือยัง)” การถามด้วยหมายเลข CVE แทนเลขเวอร์ชันจะได้คำตอบที่ครอบคลุมถึง backport ด้วย
- หากเลือกเวอร์ชันที่หมดการสนับสนุนอยู่ ให้อัปเกรด โครงการ 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:35 | PHPの脆弱性に関する当社サービスへの影響について |
| 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:04 | PHPの脆弱性に関するセキュリティアップデートの対応について |
| 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.net: Security advisory: Critical remote code execution vulnerabilities, update now (2026-10-21)
- php.net: Upcoming Critical PHP Security Release (2026-10-20)
- php.net: ประกาศการออกรุ่นของ PHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
- GitHub: GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- GitHub: GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- Docker Hub: อิมเมจ php อย่างเป็นทางการ
- บันทึกการออกรุ่น FrankenPHP 1.13.2
- Debian Security Tracker: CVE-2026-109618 / CVE-2026-109619
- Ubuntu: CVE-2026-109618 / CVE-2026-109619 / USN-8948-1 / USN-8948-2
- Red Hat: CVE-2026-109618 / CVE-2026-109619 (เวอร์ชันของแพ็กเกจที่แก้ไขแล้วดูจาก ข้อมูล VEX ของ Red Hat)
- NCSC: Critical security issue affecting PHP
คำถามที่พบบ่อย
ถ้า 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