php2shell (CVE-2026-109618 / 109619) không thể đánh giá bằng php -v: nơi số phiên bản lệch nhau giữa FPM, Docker và các bản phân phối
Phiên bản CLI so với FPM, thẻ Docker, backport của bản phân phối và những điều cần kiểm tra trên shared hosting

Trang này được AI dịch từ bản gốc tiếng Nhật. Nếu có điểm khác biệt, bản tiếng Nhật là bản chính thức: 日本語
Nếu PHP xử lý yêu cầu web (PHP-FPM, mod_php của Apache, php-cgi, FrankenPHP, LiteSpeed) cũ hơn 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 thì nó bị ảnh hưởng bởi CVE-2026-109618 và CVE-2026-109619, được gọi là php2shell. Cách khắc phục là nâng cấp lên một trong các phiên bản này (hoặc, với gói của bản phân phối, lên gói đã được vá) rồi khởi động lại các tiến trình. Điều cần kiểm tra không phải là php -v trên máy bạn, mà là “PHP thực sự đang phục vụ web” và “phiên bản gói đã cài”.
Bài viết này tập trung vào bốn chỗ mà việc chỉ dựa vào số phiên bản dễ dẫn đến kết luận sai. Mọi số liệu và thông tin tình trạng đều tính đến 2026-10-22, và nguồn của từng mục được liệt kê ở cuối bài.
Những gì đã biết tính đến 2026-10-22
| Mục | Chi tiết |
|---|---|
| CVE | CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) / CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp) |
| Mức độ nghiêm trọng | Cả hai đều được xếp CVSS v4.0 9.2 (Critical) trong thông báo của PHP |
| Phiên bản đã vá | 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 (phát hành 2026-10-21) |
| Phiên bản bị ảnh hưởng | Các phiên bản trước những phiên bản đã vá ở trên (theo các advisory trên GitHub) |
| Phạm vi | Mọi PHP xử lý yêu cầu web. Thông báo nêu tên PHP-FPM, mod_php, php-cgi, FrankenPHP và LiteSpeed, trong đó mod_php được mô tả là có rủi ro cao nhất. Trong các advisory trên GitHub, việc khai thác đã được chứng minh với mod_php, còn FPM và FrankenPHP được ghi là “chưa được chứng minh” hoặc “có điều kiện”. Chưa được chứng minh không có nghĩa là an toàn, vì vậy hãy nâng cấp lên phiên bản đã vá dù bạn chạy PHP theo cách nào |
| 8.1 trở xuống | Dự án PHP không phát hành bản cập nhật. Các bản backport mã nguồn tối thiểu đã được công bố cho 7.4 / 8.0 / 8.1, và một số bản phân phối cũng như nhà cung cấp LTS có thể phát hành bản vá |
| 8.2 | Hết hỗ trợ vào 2026-12-31 (theo ghi chú phát hành 8.2.35) |
Thông báo của PHP nêu rằng “cách khắc phục hoàn chỉnh duy nhất là cập nhật”. Các biện pháp giảm thiểu cho giai đoạn trước khi bạn cập nhật được được trình bày ở phần sau của bài.
Cạm bẫy 1: php -v và PHP phía web có thể khác nhau
php -v gõ qua SSH báo phiên bản của PHP CLI. Các yêu cầu web được xử lý bởi các tiến trình PHP-FPM hoặc bởi mod_php nạp vào Apache, là những binary và gói riêng. Nếu bạn chỉ cài PHP mới cho CLI, chạy song song nhiều phiên bản, hoặc có một FPM pool trỏ tới phiên bản khác, thì phía web vẫn có thể cũ ngay cả khi php -v hiển thị phiên bản đã vá.
Có nhiều cách để xem phiên bản thực ở phía web.
# FPM trên Debian / Ubuntu (tên theo từng phiên bản)
php-fpm8.3 -v
# FPM trên họ RHEL
php-fpm -v
# Kiểm tra mod_php có được nạp trong Apache hay không
apachectl -M | grep -i php
Cách đáng tin cậy nhất là để chính PHP chạy qua web tự báo phiên bản của nó. Hãy đặt một tệp tạm có tên khó đoán, và xóa ngay sau khi kiểm tra xong.
<?php echo PHP_VERSION, ' ', PHP_SAPI;
Nếu PHP_SAPI là fpm-fcgi, PHP đang chạy dưới FPM; apache2handler nghĩa là mod_php; cgi-fcgi nghĩa là CGI. Không nên để lộ phpinfo(), vì bản thân việc đó đã làm rò rỉ thông tin.
Khởi động lại là một bước khác dễ bị bỏ sót. Ngay cả sau khi gói đã được thay, các tiến trình php-fpm hoặc Apache đang chạy vẫn có thể tiếp tục chạy mã cũ. Một số cấu hình tự khởi động lại khi cập nhật gói; số khác thì không. Sau khi cập nhật, hãy khởi động lại FPM / Apache và kiểm tra lại phiên bản phía web bằng các cách ở trên.
Cạm bẫy 2: Với Docker, bạn không thể đánh giá theo tên thẻ
Image php chính thức có các “thẻ thay đổi” như 8.3 và 8.3-fpm, nội dung của chúng được thay thế theo thời gian, và các thẻ cố định như 8.3.30, giữ nguyên phiên bản.
- Ngay cả sau khi một thẻ thay đổi được chuyển sang phiên bản đã vá trên Docker Hub, bản sao cục bộ của bạn vẫn là image cũ cho đến khi bạn pull lại. Các container đang chạy cũng tiếp tục dùng image cũ cho đến khi được tạo lại. Một
DockerfilecóFROM php:8.3-fpmvẫn sẽ build trên base cũ nếu base đó còn trong build cache. - Một thẻ cố định sẽ cũ mãi cho đến khi bạn tự nâng số phiên bản.
Bạn có thể kiểm tra các thẻ phiên bản đã vá đã được công bố hay chưa bằng Docker Hub API.
curl -s "https://hub.docker.com/v2/repositories/library/php/tags?name=8.3.36&page_size=100"
Dưới đây là kết quả truy vấn bốn dòng phát hành vào 2026-10-22 (giờ UTC).
| Phiên bản đã vá | Số thẻ tìm thấy | Thời điểm các thẻ nền Debian (-fpm, -apache, v.v.) xuất hiện | Thẻ nền Alpine |
|---|---|---|---|
| 8.5.12 | 54 (gồm RC1) | 2026-10-21 18:59–22:13 | 2026-10-21 22:12–10-22 01:05 |
| 8.4.27 | 54 (gồm 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 |
Qua việc kiểm tra này, có ba điểm mà việc đánh giá theo con số có thể gây hiểu lầm.
- “Mới cập nhật gần đây” không có nghĩa là “đã vá”. Thẻ cố định
8.3.35đã được build lại trong ngày 2026-10-21, nhưngPHP_VERSIONbên trong vẫn là 8.3.35. Hãy xem phiên bản bên trong, không phải thời điểm cập nhật. - Digest khác nhau vẫn có thể có cùng nội dung.
8.3và8.3.36có digest thẻ khác nhau (giá trị của chỉ mục đa kiến trúc), nhưng image amd64 giống hệt nhau và cả hai đều cóPHP_VERSION=8.3.36. Tương tự, với8.3-fpm/8.3.36-fpm,8.4-apache/8.4.27-apache,latest/8.5.12,8.5-fpmvà8.2-fpm,PHP_VERSIONcủa image amd64 là phiên bản đã vá. - Không có image chính thức đã vá cho 8.1 trở xuống.
8.1-fpmđược cập nhật lần cuối vào 2025-12-31.
Để kiểm tra các image cục bộ và container đang chạy:
# Phiên bản PHP của một image đã pull về máy
docker image inspect php:8.3-fpm --format '{{range .Config.Env}}{{println .}}{{end}}' | grep PHP_VERSION
# Pull lại và tạo lại các container
docker compose pull
docker compose up -d
# Nếu bạn tự build image, hãy pull lại base rồi mới build
docker compose build --pull
# Phiên bản bên trong một container đang chạy
docker compose exec app php -r 'echo PHP_VERSION, PHP_EOL;'
Hãy thay app trong lệnh cuối bằng tên service của bạn. Mỗi image chính thức được build với một PHP_VERSION duy nhất, nên phiên bản CLI bên trong container khớp với phiên bản FPM / Apache của container đó (Cạm bẫy 1 áp dụng khi PHP được cài trực tiếp trên máy chủ).
FrankenPHP nhúng PHP bên trong, nên phiên bản FrankenPHP và phiên bản PHP nhúng là hai con số khác nhau. Ghi chú phát hành của FrankenPHP 1.13.2, phát hành vào 2026-10-21, nêu rằng các image Docker được build với PHP 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 và các binary tĩnh được build với PHP 8.5.12.
Cạm bẫy 3: Gói của bản phân phối là “được vá nhưng giữ số cũ”
Ubuntu và RHEL chỉ chuyển các bản sửa lỗi sang các phiên bản cũ (backporting). Số hiển thị bởi php -v vẫn cũ, nên cách kiểm tra bằng số như “thấp hơn 8.3.36, do đó dễ bị tấn công” sẽ đánh dấu nhầm một hệ thống đã vá là có lỗ hổng. Ngược lại, bạn cũng không thể dựa vào con số để yên tâm. Hãy đưa ra kết luận dựa trên phiên bản gói và trình theo dõi bảo mật của từng bản phân phối.
Các gói đã vá được liệt kê trong từng trình theo dõi tính đến 2026-10-22 (giống nhau cho cả hai CVE):
| Bản phân phối | Gói | Phiên bản đã vá | Nguồn |
|---|---|---|---|
| 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 | Có qua Ubuntu Pro (gồm cả 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 (mặc định) | 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 |
Bảng này cho thấy trực tiếp vì sao chỉ dựa vào con số là không đủ. PHP đã vá của Ubuntu 24.04 là phiên bản bắt đầu bằng 8.3.6, thấp hơn nhiều so với 8.3.36 của upstream. PHP mặc định của RHEL 9 được vá nhưng vẫn ở 8.0.30, dù upstream không còn phát hành bản sửa lỗi cho 8.0. Debian đã chuyển sang cùng số với upstream (8.2.35 / 8.4.27).
Một số gói vẫn chưa được vá (tính đến 2026-10-22).
- php module 8.4 của RHEL 9 được liệt kê là “affected, no fix” (bị ảnh hưởng, chưa có bản vá).
- Debian forky (testing) có php8.4 8.4.26-1, được đánh dấu “vulnerable”. php8.4 trong sid (unstable) là 8.4.27-1 và đã được vá.
Ví dụ các lệnh để kiểm tra máy chủ của bạn:
# Debian / Ubuntu: phiên bản đã cài và phiên bản có sẵn
apt-cache policy php8.3-fpm libapache2-mod-php8.3
# Ubuntu: CVE này đã được vá trên máy chủ này chưa
pro fix CVE-2026-109618
pro fix CVE-2026-109619
# Họ RHEL: có bản cập nhật vá CVE này không, và phiên bản đã cài
dnf updateinfo list --cve CVE-2026-109618
rpm -q php-fpm php-cli
Hãy điều chỉnh tên gói (php8.3-fpm, v.v.) cho phù hợp với môi trường của bạn. So sánh phiên bản hiển thị với “phiên bản đã vá” trong bảng trên hoặc trong trình theo dõi; nếu bằng hoặc cao hơn thì bản vá đã có. Sau đó hãy hoàn tất việc khởi động lại và kiểm tra phía web như mô tả ở Cạm bẫy 1.
Nếu bạn cài PHP từ kho của bên thứ ba thay vì gói của chính bản phân phối, bạn cần theo dõi các bản cập nhật của kho đó. Thông báo của PHP lưu ý rằng rpms.remirepo.net, do tình nguyện viên vận hành, sẽ chưa có bản cập nhật vào ngày công bố, và khuyến nghị chuyển sang gói của bản phân phối hoặc bản tự build.
Cạm bẫy 4: Trên shared hosting và môi trường được quản lý, bạn không thể tự nâng cấp PHP
Trên shared hosting và các môi trường PHP được quản lý, nhà cung cấp là bên thay thế runtime PHP. Ở đây cũng vậy, chỉ có con số là không đủ: nếu nhà cung cấp tự build PHP hoặc backport các bản sửa lỗi thì số phiên bản có thể vẫn cũ.
Có ba việc bạn có thể tự làm.
- Kiểm tra phiên bản phía web. Dùng tệp tạm ở Cạm bẫy 1 để in ra
PHP_VERSIONvàPHP_SAPI, rồi xóa ngay. Nếu bảng điều khiển có mục chọn phiên bản PHP, hãy ghi lại phiên bản bạn đã chọn. - Đọc thông báo của nhà cung cấp, và hỏi nếu chưa có. Hãy hỏi: “Các bản sửa lỗi cho CVE-2026-109618 và CVE-2026-109619 sẽ được áp dụng cho những phiên bản PHP nào trong gói của tôi, và khi nào (hoặc đã được áp dụng chưa)?” Hỏi theo số CVE thay vì số phiên bản sẽ cho bạn câu trả lời bao gồm cả các bản backport.
- Nếu bạn đang chọn một phiên bản không còn được hỗ trợ, hãy nâng cấp. Dự án PHP không phát hành bản sửa lỗi cho 8.1 trở xuống, và hỗ trợ cho 8.2 kết thúc vào 2026-12-31. Trừ khi nhà cung cấp đã backport các bản sửa lỗi, việc chuyển phiên bản là con đường chắc chắn.
Tình trạng theo từng nhà cung cấp hosting (tính đến 2026-10-22)
Trên shared hosting, nhà cung cấp thường là bên cập nhật runtime PHP, và thông báo của nhiều nhà cung cấp cho biết “người dùng không cần thực hiện thao tác nào”. Người dùng có hai việc cần làm: kiểm tra thông báo chính thức từ nhà cung cấp của mình, và nếu đã chọn một phiên bản PHP cũ trong bảng điều khiển thì cân nhắc có nên chuyển sang phiên bản mà thông báo khuyến nghị (phiên bản đã có bản phát hành vá lỗi) hay không.
Bảng dưới đây chỉ tóm tắt những gì được viết trên các trang chính thức của từng nhà cung cấp (thông báo và thông tin bảo trì), diễn đạt lại lời văn trong thông báo của họ. Các thông báo được cập nhật theo tiến độ, vì vậy hãy luôn xác nhận tình trạng thực tế trên trang chính thức được dẫn nguồn.
| Nhà cung cấp / dịch vụ | Điểm chính của thông báo chính thức | Ngày giờ thông báo | Nguồn |
|---|---|---|---|
| エックスサーバー | “Đối với PHP 8.2–8.5, việc áp dụng bản vá cho tất cả máy chủ bị ảnh hưởng đã hoàn tất.” Với các phiên bản cũ hơn, thông báo nêu “bản vá đã sẵn sàng cho một số phiên bản và sẽ được áp dụng lần lượt khi việc kiểm chứng hoàn tất”, và các phiên bản cũ khác cũng đang được xử lý | Theo ghi nhận lúc 10/22 6:45 (trang được cập nhật đến 13:15) | メンテナンスの進捗状況 |
| シン・レンタルサーバー | Trang thông báo đăng cùng “tiến độ bảo trì” như Xserver, nhưng tôi không tìm thấy nội dung nào đề cập riêng đến tình trạng PHP của Shin Rental Server (hãy hỏi bộ phận hỗ trợ) | - | お知らせ |
| ConoHa WING | “Chúng tôi đang áp dụng các bản vá bảo mật mà vẫn giữ nguyên phiên bản PHP bạn đang dùng.” Thông báo cho biết người dùng nhìn chung không cần đổi phiên bản, nhưng có thể cần đổi với PHP 5.x và 7.x. Trình quản lý tệp và webmail tạm ngừng như một biện pháp phòng ngừa; hiển thị website và gửi/nhận email vẫn hoạt động bình thường | 10/22 | 【重要】PHPの脆弱性への弊社対応について |
| さくらのレンタルサーバ | “Chúng tôi đã hoàn tất việc xử lý lỗ hổng cho tất cả các phiên bản PHP có thể chọn từ bảng điều khiển của chúng tôi.” Nêu rằng “khách hàng không cần thực hiện thao tác khẩn cấp nào”, và khuyến nghị chuyển sang phiên bản mới nhất được hỗ trợ trong thời gian tới. Thông báo cho biết webmail đã được xử lý lúc 10/22 13:45 và phpMyAdmin vẫn đang được xử lý | 10/22 (cập nhật 13:45) | PHPの脆弱性(CVE-2026-109618、CVE-2026-109619)への対応状況について |
| ロリポップ! | Thông báo bảo trì phòng ngừa trước khi các phiên bản đã vá được phát hành (trang dịch vụ, trang người dùng, v.v. sẽ lần lượt bị tạm ngừng; website có thể bị tạm ngừng hoặc hạn chế mà không báo trước). Tính đến 10/22, tôi không tìm thấy thông báo nào công bố việc hoàn tất bản vá PHP (hãy hỏi bộ phận hỗ trợ) | 10/21 | 【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ |
| ヘテムル | “Với PHP 8.x và PHP 7.4, chúng tôi đã áp dụng các phiên bản vá chính thức”; với các phiên bản khác, “chúng tôi đã tự sửa dựa trên bản vá chính thức”. Vì “một số chức năng (session.upload_progress) đã bị vô hiệu hóa trên tất cả các phiên bản”, người dùng được đề nghị kiểm tra xem website của mình có hoạt động bình thường không. Vì các phiên bản cũ có thể không nhận thêm bản sửa lỗi nào nữa, thông báo khuyến nghị chuyển sang phiên bản mới hơn | Đăng 10/21 19:44; cập nhật 10/22 12:18 và 13:20 | 【一部完了】【重要】PHPの脆弱性への予防措置に伴うメンテナンス実施のお知らせ |
| mixhost | “Việc áp dụng các gói vá PHP đã hoàn tất vào khoảng 10:18 ngày 22 tháng 10 năm 2026.” “Được áp dụng mà không thay đổi số phiên bản PHP”; “khách hàng không cần thực hiện thao tác nào”. Thông báo khuyến nghị người dùng các phiên bản dưới PHP 8.2 chuyển sang phiên bản được hỗ trợ (8.2 trở lên) | 10/22 | 【完了】PHPの重大な脆弱性への対応について |
| KAGOYA | Với dịch vụ máy chủ cho thuê, PHP 8.2–8.5 sẽ được cập nhật lần lượt sau khi các phiên bản đã vá được kiểm chứng (các phiên bản mục tiêu vẫn đang được chốt). Với máy chủ chuyên dụng được quản lý, máy chủ dùng chung và máy chủ dành riêng cho WordPress, bản sửa lỗi lâu dài vẫn đang được lên kế hoạch; như biện pháp tạm thời, thông báo gợi ý cân nhắc đưa website ngoại tuyến hoặc hạn chế truy cập | Đăng 10/21 18:20; cập nhật 10/22 10:35 | PHPの脆弱性に関する当社サービスへの影響について |
| Zenlogic(IDCフロンティア) | Các bản sửa lỗi được áp dụng trong đợt bảo trì khẩn cấp (10/21 22:00–10/22 18:00; thời điểm kết thúc có thể thay đổi). PHP 5.3 sẽ được cập nhật lên phiên bản mới nhất và không thể hoàn nguyên; 7.4 và 8.1 có thể được cập nhật. Thông báo nêu rằng nếu sau khi cập nhật xảy ra sự cố hiển thị hoặc hoạt động, phía ứng dụng phải tự sửa | 10/21 | 【ホスティング】緊急メンテナンス作業のお知らせ |
| ColorfulBox | “Chúng tôi đã hoàn tất việc cập nhật lên các phiên bản đã được vá ở phía máy chủ mà vẫn giữ nguyên phiên bản PHP bạn đang dùng.” Thông báo nêu rằng “khách hàng không cần tự thay đổi hay chuyển đổi phiên bản PHP” | 10/22 | 【重要】PHPの脆弱性に対するセキュリティアップデート完了のお知らせ |
| お名前.com レンタルサーバー | “Chúng tôi đang áp dụng các bản vá bảo mật mà vẫn giữ nguyên phiên bản PHP bạn đang dùng.” Thông báo cho biết nhìn chung không cần đổi phiên bản, nhưng có thể cần với PHP 5.x và 7.x. Trình quản lý tệp và webmail tạm ngừng như một biện pháp phòng ngừa | 10/22 | 【重要】PHPの脆弱性への弊社対応について |
| CORESERVER(V2) | “Chúng tôi đã hoàn tất việc xử lý lỗ hổng cho tất cả các phiên bản PHP chúng tôi cung cấp”; “khách hàng không cần thực hiện thao tác như thay đổi phiên bản PHP”. Bảo trì diễn ra 10/22 0:00–11:13 và được ghi là đã hoàn tất | Đăng 10/21 (hoàn tất 10/22) | PHP脆弱性の対応(CORESERVER V2)【完了】 |
| XREA | “Chúng tôi đã hoàn tất việc xử lý lỗ hổng cho PHP 7.4 trở lên (7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5).” Người dùng các phiên bản này không cần đổi phiên bản. Thông báo không nói gì về các phiên bản dưới 7.4 | Đăng 10/21 (hoàn tất 10/22 0:50) | PHP脆弱性の対応(XREA)【完了】 |
| バリューサーバー | “Chúng tôi đã hoàn tất việc xử lý lỗ hổng cho PHP 7.4 trở lên.” Thông báo cho biết người dùng các phiên bản này không cần đổi phiên bản | Đăng 10/21 (hoàn tất 10/22 0:50) | PHP脆弱性の対応(VALUESERVER)【完了】 |
| ABLENET | “Đối với hai lỗ hổng đã được xác định trong PHP, chúng tôi đã thực hiện các bản cập nhật bảo mật ban đầu cho môi trường máy chủ cho thuê của chúng tôi.” Thông báo không nêu rõ các phiên bản được áp dụng hoặc người dùng có cần thao tác gì không | 10/22 13:04 | PHPの脆弱性に関するセキュリティアップデートの対応について |
| WebARENA(レンタルサーバー) | Tính đến 10/22, tôi không tìm thấy thông báo chính thức (hãy hỏi bộ phận hỗ trợ) | - | WebARENA お知らせ(2026年) |
Ở những chỗ tôi không tìm thấy hoặc không mở được thông báo chính thức, bảng ghi “không xác nhận được” hoặc “không tìm thấy”. Việc thiếu thông tin ở đó không có nghĩa là nhà cung cấp chưa xử lý. Hãy kiểm tra trực tiếp qua thông báo và bộ phận hỗ trợ của nhà cung cấp của bạn.
Biện pháp giảm thiểu khi chưa thể cập nhật ngay
Thông báo của PHP liệt kê các thiết lập giúp giảm bề mặt tấn công cho đến khi bạn có thể cập nhật. Tuy nhiên, chính thông báo cũng nêu rõ rằng chúng “không làm bạn an toàn”. Các biện pháp chính là:
- Với CVE-2026-109619: đặt
session.upload_progress.enabled=0trong php.ini, FPM pool hoặc cấu hình máy chủ, và khởi động lại tất cả worker (ini_set()và.user.inicủa FPM không có tác dụng với thiết lập này). Trên PHP 8.5, hãy đặt thêmfatal_error_backtraces=0. - Với CVE-2026-109618: đặt
memory_limit=-1theo cách ứng dụng không thể ghi đè, và giảmpost_max_size(8M nếu không có tải lên, 32M nếu có). Không dùngRLIMIT_AS/RLIMIT_DATAđể thay thế.
NCSC của Vương quốc Anh khuyến nghị cân nhắc đưa ngoại tuyến bất kỳ hệ thống nào không thể cập nhật hoặc giảm thiểu ngay, và kiểm tra dấu hiệu bị xâm nhập trước khi cập nhật hoặc áp dụng biện pháp giảm thiểu.
Nguồn (kiểm tra ngày 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: Thông báo phát hành 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: image php chính thức
- Ghi chú phát hành 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 (phiên bản gói đã vá lấy từ dữ liệu VEX của Red Hat)
- NCSC: Critical security issue affecting PHP
Câu hỏi thường gặp
Nếu php -v hiển thị phiên bản đã vá thì tôi đã được bảo vệ khỏi php2shell (CVE-2026-109618 / 109619) chưa?
Chưa chắc. php -v chỉ báo phiên bản của PHP CLI. PHP-FPM hoặc mod_php của Apache, những thành phần xử lý yêu cầu web, có thể là binary riêng và gói riêng. Hãy kiểm tra phiên bản FPM bằng php-fpm8.3 -v (php-fpm -v trên họ RHEL). Hoặc mở từ web một tệp tạm in ra PHP_VERSION và PHP_SAPI, rồi xóa ngay sau khi kiểm tra xong. Nếu bạn chưa khởi động lại FPM hoặc Apache sau khi cập nhật, chúng có thể vẫn đang chạy mã cũ.
Nếu tôi dùng php:8.3-fpm của Docker thì php2shell đã được vá chưa?
Tính đến 2026-10-22, php:8.3-fpm trên Docker Hub đã được chuyển sang PHP 8.3.36. Tuy nhiên, image cục bộ của bạn vẫn cũ cho đến khi bạn pull lại, và các container đang chạy vẫn dùng image cũ cho đến khi được tạo lại. Hãy chạy docker compose pull và docker compose up -d (hoặc docker compose build --pull nếu bạn tự build image). Sau đó chạy php -r 'echo PHP_VERSION;' bên trong container và xác nhận phiên bản là 8.3.36 trở lên. Các thẻ cố định như 8.3.30 vẫn cũ cho đến khi bạn tự nâng số phiên bản.
Ubuntu và RHEL vẫn hiển thị PHP 8.3.6 hoặc 8.0.30. Chúng có bị php2shell ảnh hưởng không?
Không thể biết chỉ từ số phiên bản. Ubuntu và RHEL backport bản vá vào các phiên bản cũ, nên một gói có thể đã được vá trong khi số phiên bản vẫn cũ. Tính đến 2026-10-22, bản vá có trong php8.3 8.3.6-0ubuntu0.24.04.13 trên Ubuntu 24.04 và php 8.0.30-8.el9_8.1 trên RHEL 9. Hãy so sánh phiên bản gói đã cài (apt-cache policy hoặc rpm -q) với phiên bản đã vá trong trình theo dõi bảo mật của bản phân phối. Bạn cũng có thể kiểm tra bằng pro fix CVE-2026-109618 trên Ubuntu, hoặc dnf updateinfo list --cve CVE-2026-109618 trên họ RHEL.