Dự án PHP ngày 21/10/2026 phát hành khẩn bốn bản cập nhật bảo mật: 8.5.12, 8.4.27, 8.3.36 và 8.2.35. Các bản này vá hai lỗ hổng cho phép kẻ tấn công thực thi mã từ xa mà không cần đăng nhập. Giới bảo mật gọi chung cặp lỗi này là PHP2Shell, mã định danh CVE-2026-109618 và CVE-2026-109619.
Với người làm web ở Việt Nam, đây là tin cần xử lý trong ngày. Phần lớn website WordPress, Laravel, WHMCS hay mã nguồn PHP tự viết đều chạy trên đúng những thành phần bị ảnh hưởng.
Hai lỗ hổng là gì
Theo thông báo trên php.net, cả hai lỗi đều được chấm 9.2 điểm theo thang CVSS v4.0.
- CVE-2026-109618: lỗi hỏng bộ nhớ khi hết bộ nhớ (out-of-memory). Quá trình xử lý request có thể bị ngắt khi dữ liệu nội bộ mới khởi tạo dở. Bước dọn dẹp sau đó lại coi dữ liệu sai đó là hợp lệ.
- CVE-2026-109619: lỗi trạng thái toàn cục cũ. Một phần trạng thái của request trước có thể tồn tại sau khi vùng nhớ đã được giải phóng. Request tiếp theo trên cùng worker có thể dùng lại trạng thái đó.
PHP cho biết mọi cài đặt PHP phục vụ web đều nằm trong phạm vi rủi ro. Danh sách gồm PHP-FPM, Apache với mod_php, php-cgi, FrankenPHP và LiteSpeed. Rủi ro cao nhất thuộc về mod_php. Tại đây đã có khai thác minh họa, chỉ cần một request không xác thực, kích hoạt trước khi mã ứng dụng kịp chạy.
Đã có khai thác thực tế
Hãng bảo mật watchTowr cho biết đã thấy hoạt động khai thác cả hai CVE qua mạng honeypot của họ từ ngày 21/10. Help Net Security dẫn thông tin từ Amazon Threat Intelligence: honeypot MadPot của Amazon ghi nhận một lần thử khai thác từ ngày 17/10, tức bốn ngày trước khi lỗi được công bố.
Tác động lan rộng nhanh. BusinessToday dẫn Reuters cho biết một số website chính phủ, giáo dục và bệnh viện ở châu Âu đã tạm ngắt để phòng ngừa. Palo Alto Networks thông báo mọi phiên bản PAN-OS và Panorama đều bị ảnh hưởng, chưa có bản sửa vào thời điểm đưa tin.
Cloudflare đã triển khai quy tắc WAF ban đầu cho các hướng khai thác đã biết. Theo CTO Dane Knecht, quy tắc này áp dụng cho mọi khách hàng, kể cả gói miễn phí. Đây là lớp chắn hữu ích, nhưng không thay được bản vá.
Phiên bản bị ảnh hưởng và bản vá
| Nhánh PHP | Tình trạng | Hướng xử lý |
|---|---|---|
| 8.5 | Bị ảnh hưởng trước 8.5.12 | Lên 8.5.12 |
| 8.4 | Bị ảnh hưởng trước 8.4.27 | Lên 8.4.27 |
| 8.3 | Bị ảnh hưởng trước 8.3.36 | Lên 8.3.36 |
| 8.2 | Bị ảnh hưởng trước 8.2.35 | Lên 8.2.35, chuẩn bị nâng nhánh |
| 7.4, 8.0, 8.1 | Không có bản phát hành chính thức | Gói từ nhà phân phối, backport mã nguồn hoặc nâng cấp |
| 7.3 trở xuống | Không có bản sửa | Nâng lên nhánh còn hỗ trợ |
PHP cũng nhắc lại: nhánh 8.2 hết vòng đời ngày 31/12/2026. Sau mốc này, 8.2 không còn nhận bản vá bảo mật.
Các bản phân phối Linux và nhà cung cấp hỗ trợ dài hạn đã nhận bản vá trước. Một chi tiết đáng chú ý: kho rpms.remirepo.net, vốn được nhiều quản trị viên CentOS, AlmaLinux, Rocky dùng, thông báo không có bản cập nhật trong ngày 21/10. PHP khuyên chuyển sang gói của bản phân phối hoặc tự biên dịch.
Ảnh hưởng tới người thuê hosting, VPS ở Việt Nam
Shared hosting và reseller
Bạn không tự vá PHP được. Trách nhiệm thuộc về nhà cung cấp. Hãy mở ticket hỏi thẳng: máy chủ đã vá CVE-2026-109618 và CVE-2026-109619 chưa, vá lúc nào. Nhà cung cấp dùng CloudLinux có thể vẫn hiển thị số phiên bản cũ. Namecheap giải thích các bản như 8.5.11 hay 8.4.26 trên hệ thống của họ đã được đưa bản vá vào.
Việc của bạn: cập nhật CMS, plugin, theme và theo dõi dấu hiệu bất thường như tài khoản quản trị lạ hoặc file PHP mới xuất hiện.
VPS và máy chủ riêng
Đây là nhóm rủi ro cao nhất, vì không ai vá thay bạn. Nhiều VPS giá rẻ được cài một lần rồi để đó, chạy PHP 7.4 hay 8.1 từ nhiều năm trước. Các bước nên làm:
- Kiểm kê mọi máy chủ chạy PHP, ưu tiên máy công khai ra Internet.
- Kiểm tra phiên bản và nguồn gói đang dùng.
- Cập nhật qua trình quản lý gói hoặc control panel.
- Khởi động lại toàn bộ PHP worker sau khi cập nhật để bản vá có hiệu lực.
- Với máy chưa vá được, hạn chế truy cập từ Internet.
php -v
php-fpm -v
apachectl -M | grep php
Lệnh cuối giúp biết máy có dùng mod_php không. Nếu có, hãy ưu tiên xử lý trước.
Biện pháp tạm thời nếu chưa vá kịp
PHP đưa ra một số cấu hình giảm phơi nhiễm, nhưng nói rõ chúng không làm hệ thống an toàn.
- Với CVE-2026-109618: đặt
memory_limit=-1ở cấu hình pool FPM hoặc Apache, giữpost_max_sizethấp và đặt giới hạn kích thước request ở web server hoặc proxy. Dùng giới hạn bộ nhớ của container hoặc cgroup, không dùng RLIMIT_AS hay RLIMIT_DATA. - Với CVE-2026-109619: đặt
session.upload_progress.enabled=0trong php.ini hoặc cấu hình pool, rồi khởi động lại worker. Trên PHP 8.5, đặt thêmfatal_error_backtraces=0.
Không nên dựa vào ini_set() hay file .user.ini cho các thiết lập này, vì chúng áp dụng quá muộn.
Góc nhìn của Canh Deal
PHP2Shell nhắc lại một điều cũ: VPS rẻ không có nghĩa là rẻ khi bị chiếm quyền. Nếu bạn không có thời gian vá máy chủ, gói hosting có quản trị hoặc VPS managed có thể đáng tiền hơn. Khi chọn nhà cung cấp, hãy hỏi họ xử lý sự cố này thế nào và mất bao lâu. Câu trả lời cho thấy chất lượng vận hành rõ hơn mọi bảng giá khuyến mãi.