Nhật ký kỹ thuật

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

Ngày đăng: 2026-10-22 · Tác giả: GRAMSHIFT

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

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

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ụcChi tiết
CVECVE-2026-109618 (GHSA-w8hw-w9fx-j79w) / CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp)
Mức độ nghiêm trọngCả 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ưởngCá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 viMọ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ốngDự á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.2Hế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 Dockerfile có FROM php:8.3-fpm vẫ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ấyThời điểm các thẻ nền Debian (-fpm, -apache, v.v.) xuất hiệnThẻ nền Alpine
8.5.1254 (gồm RC1)2026-10-21 18:59–22:132026-10-21 22:12–10-22 01:05
8.4.2754 (gồm 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

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.

  1. “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ưng PHP_VERSION bê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.
  2. Digest khác nhau vẫn có thể có cùng nội dung. 8.3 và 8.3.36 có 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ới 8.3-fpm / 8.3.36-fpm, 8.4-apache / 8.4.27-apache, latest / 8.5.12, 8.5-fpm và 8.2-fpm, PHP_VERSION của image amd64 là phiên bản đã vá.
  3. 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ốiGóiPhiên bản đã váNguồn
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.4Có qua Ubuntu Pro (gồm cả 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 (mặc định)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

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.

  1. Kiểm tra phiên bản phía web. Dùng tệp tạm ở Cạm bẫy 1 để in ra PHP_VERSION và 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.
  2. Đọ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.
  3. 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ứcNgày giờ thông báoNguồ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ường10/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の重大な脆弱性への対応について
KAGOYAVớ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:35PHPの脆弱性に関する当社サービスへの影響について
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ửa10/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ừa10/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ông10/22 13:04PHPの脆弱性に関するセキュリティアップデートの対応について
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=0 trong 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.ini củ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êm fatal_error_backtraces=0.
  • Với CVE-2026-109618: đặt memory_limit=-1 theo cách ứng dụng không thể ghi đè, và giảm post_max_size (8M nếu không có tải lên, 32M nếu có). Không dùng RLIMIT_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)

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.