← Tất cả công cụ kiểm tra lỗ hổng// CVE-2026-109618 · CVE-2026-109619

PHP2Shell (CVE-2026-109618 / 109619): website của bạn có bị ảnh hưởng?

NGHIÊM TRỌNG 9.2ĐANG BỊ KHAI THÁCĐăng ngày 21 thg 10, 2026 · cập nhật 28 thg 10, 2026

Hai lỗ hổng nghiêm trọng nằm ngay trong lõi PHP cho phép kẻ tấn công chưa đăng nhập thực thi mã trên máy chủ. Lỗ hổng đang bị khai thác thực tế, website Nhật Bản nằm trong nhóm bị nhắm đầu tiên, và không có thay đổi cấu hình nào bảo vệ hoàn toàn. Nhập tên miền để xem máy chủ đang tự công bố phiên bản gì.

Website của bạn có dính PHP2Shell?

Nhập tên miền hoặc URL đầy đủ (ví dụ /blog, /shop/) để kiểm tra đúng ứng dụng chạy ở đường dẫn đó. Chỉ đọc: vài request thông thường, không gửi payload khai thác.

Hình minh hoạ lỗ hổng PHP2Shell

PHP2Shell là gì?

PHP2Shell là tên gọi của hai lỗ hổng thực thi mã từ xa (RCE) trong lõi PHP, được công bố cùng bản phát hành khẩn cấp ngày 21/10/2026. Cả hai đều có điểm CVSS v4.0 9.2. Vì lỗi nằm trong engine PHP, mọi framework và CMS chạy trên nó — WordPress, Laravel, EC-CUBE, Drupal, code tự viết — đều bị ảnh hưởng.

  • CVE-2026-109618 — tình trạng hết bộ nhớ (OOM) khi PHP đang khởi tạo request (phân tích multipart) để lại dữ liệu nội bộ dở dang; bước dọn dẹp sau đó lại tin vào dữ liệu này. PHP xác nhận RCE không cần xác thực trên Apache mod_php, xảy ra trước khi code của ứng dụng kịp chạy.
  • CVE-2026-109619 — trạng thái nội bộ của request tồn tại lâu hơn vùng nhớ nó trỏ tới, nên request kế tiếp trên cùng worker xử lý dữ liệu cũ. Các đường khai thác đã xác nhận gồm session upload progress sau lỗi fatal và backtrace lỗi fatal của PHP 8.5.

Chi tiết kỹ thuật bị lộ một ngày trước khi phát hành bản vá và việc khai thác đã được ghi nhận chỉ vài giờ sau đó. Cơ quan An ninh mạng Quốc gia Nhật Bản đã kêu gọi các đơn vị vận hành cập nhật ngay lập tức.

Phiên bản bị ảnh hưởng

NhánhBị ảnh hưởngĐã vá ở
8.5< 8.5.128.5.12
8.4< 8.4.278.4.27
8.3< 8.3.368.3.36
8.2< 8.2.358.2.35
8.1 · 8.0 · 7.4Mọi phiên bảnKhông có bản chính thức (chỉ có backport của nhà cung cấp)
7.3 · 5.xMọi phiên bản—

Mọi SAPI phục vụ web đều nằm trong phạm vi: PHP-FPM, Apache mod_php (rủi ro cao nhất), php-cgi, LiteSpeed và FrankenPHP.

Công cụ kiểm tra hoạt động thế nào

Watchpost gửi vài request GET thông thường — trang bạn nhập (mặc định là trang chủ), các bước chuyển hướng và index.php — rồi đọc phiên bản PHP mà máy chủ vốn đã công bố trong header X-Powered-By hoặc Server, sau đó so với bản vá của nhánh tương ứng. Không gửi bất kỳ payload khai thác nào.

  • Ẩn phiên bản ≠ an toàn. Phần lớn máy chủ đặt expose_php = Off hoặc đứng sau CDN xoá header. Khi đó chúng tôi tìm thêm: trang phpinfo() bị bỏ quên (/info.php, /phpinfo.php…) cho biết chính xác phiên bản, và banner Server như Apache/2.4.41 (Ubuntu) cho biết hệ điều hành cùng bản PHP đi kèm. Nếu có PHP mà không xác nhận được đã vá, chúng tôi cảnh báo bạn coi website là có lỗ hổng cho tới khi kiểm tra trên máy chủ.
  • Bản đóng gói của distro (ví dụ 8.3.6-0ubuntu0.24.04.13) có bản vá mà không đổi số phiên bản gốc. Chúng tôi nhận diện được các bản vá Ubuntu đã biết; với distro khác, hãy xem thông báo của nhà cung cấp.
  • Kết quả được lưu đệm 10 phút cho mỗi tên miền, nên sau khi vá bạn có thể kiểm tra lại sau ít phút.

Tự kiểm tra

# 1. What the site announces to the world
curl -sI https://your-site.example | grep -iE '^(x-powered-by|server):'

# 2. On the server (CLI and the web SAPI can differ!)
php -v
php-fpm8.3 -v        # or: php-fpm -v / httpd -M | grep php

# 3. Distribution package (Ubuntu / Debian / RHEL)
dpkg -l | grep -E '^ii +php[0-9.]*-(common|fpm|cli)'
rpm -q php php-fpm

Phiên bản cần quan tâm là phiên bản mà web server đang chạy (FPM hoặc mod_php), không nhất thiết trùng với php -v trên dòng lệnh.

Cách khắc phục

  1. Cập nhật PHP lên 8.5.12, 8.4.27, 8.3.36 hoặc 8.2.35 — hoặc gói đã vá của distro (Ubuntu 24.04: 8.3.6-0ubuntu0.24.04.13, Ubuntu 22.04: 8.1.2-1ubuntu2.28, Debian 13: 8.4.27-1~deb13u1).
  2. Khởi động lại mọi worker PHP. Worker FPM cũ vẫn chạy binary có lỗ hổng cho tới khi được khởi động lại:
    sudo systemctl restart php8.3-fpm     # every FPM pool / version you run
    sudo systemctl restart apache2         # mod_php: restart Apache itself (httpd on RHEL)
  3. Shared hosting: hỏi nhà cung cấp xem PHP của họ (cPanel EA-PHP, CloudLinux alt-php…) đã có backport chưa, hoặc chuyển site sang phiên bản đã vá trong control panel.
  4. Đang ở 8.1 trở xuống: lên kế hoạch nâng lên 8.2+; backport của nhà cung cấp chỉ giúp câu thêm thời gian.
  5. Sau khi vá, đặt expose_php = Off để ngừng công bố phiên bản.

Nếu chưa thể vá ngay tối nay

PHP khẳng định không có thay đổi cấu hình nào giảm thiểu hoàn toàn các lỗ hổng này. Trong lúc chờ cập nhật:

  • Giới hạn truy cập Internet vào máy chủ (VPN, danh sách IP cho phép, trang bảo trì ở CDN). Ưu tiên máy chủ dùng Apache mod_php.
  • Đặt session.upload_progress.enabled = 0, và với PHP 8.5 đặt fatal_error_backtraces = 0. Các thiết lập này chỉ chặn một số đường khai thác đã biết.
  • Theo dõi file PHP mới xuất hiện, tiến trình lạ do user web sinh ra và kết nối ra ngoài từ máy chủ.

Nguồn tham khảo

Công cụ này chỉ trả lời một câu hỏi. Lượt quét miễn phí kiểm tra thêm hơn 50 vấn đề ai cũng nhìn thấy được — file lộ, khoá bị lộ, TLS, header, DNS — và khi xác minh tên miền, bạn mở thêm hơn 200 bước kiểm tra sâu.

Quét toàn bộ