WordPress vá lỗ hổng nghiêm trọng CVE-2026-87902, có thể dẫn tới thực thi mã trên một số máy chủ
Nội dung bài viết

Ngày 22/9/2026, WordPress phát hành 7.1.2 để vá một lỗ hổng nghiêm trọng trong lõi, mang mã CVE-2026-87902 với điểm CVSS 9.2. Lỗ hổng cho phép kẻ tấn công không cần tài khoản, không cần người dùng thao tác gì buộc website nạp một file PHP nằm ngoài thư mục theme. Trên một số cấu hình máy chủ, điều này có thể dẫn tới thực thi mã từ xa.

Mọi phiên bản từ 4.7.0 đến 7.1.1 đều bị ảnh hưởng - kể cả bản 7.1.1 vừa phát hành ngày 17/9. Nghĩa là website mới cập nhật chưa đầy một tuần trước vẫn phải cập nhật tiếp.

Phiên bản cần cập nhật

Nhánh đang dùngCập nhật lên
7.1.x7.1.2
7.0.x7.0.6
6.9.x6.9.9
6.8.x6.8.10
6.7.x6.7.9
6.6.x6.6.9

Bản vá còn được đưa ngược về mọi nhánh cũ còn hỗ trợ, thấp nhất là 4.7.37 (xem đầy đủ trong ghi chú phát hành). Website bật cập nhật nền tự động sẽ tự nhận bản vá; các website khác có thể cập nhật trong Bảng tin → Cập nhật. WordPress không đưa ra giải pháp tạm thời nào khác ngoài cập nhật.

Lỗi nằm ở đâu?

Lỗ hổng nằm ở cách WordPress chọn file template cho một trang. Một trong các tên file mà WordPress ghép ra được lấy từ một phần của URL, có dạng page-{giá trị}.php. Ở các phiên bản bị ảnh hưởng, giá trị này không được kiểm tra chuỗi ../ (path traversal), dù đoạn mã ngay bên cạnh đã có bước kiểm tra đó.

Để tấn công thành công cần thêm các điều kiện:

  • Theme đang kích hoạt (theme cha hoặc con) có một thư mục cấp cao nhất bắt đầu bằng page- (ví dụ page-templates). Một số theme, kể cả các theme mặc định đời cũ của WordPress, có thư mục như vậy; các theme mặc định hiện tại thì không.
  • File đích phải có đuôi .php và tồn tại sẵn trên máy chủ.

Vì sao chỉ "trên một số máy chủ"?

Nạp một file PHP cục bộ chỉ chạy những gì file đó vốn làm. Để biến nó thành mã do kẻ tấn công kiểm soát, máy chủ phải có sẵn một file PHP "hữu ích" khi bị nạp. Patchstack chỉ ra hai yếu tố giúp chủ website tự đánh giá mức độ rủi ro:

  1. Theme đang dùng có thư mục cấp cao nhất tên bắt đầu bằng page- hay không.
  2. PHP có bật tùy chọn register_argc_argv hay không - một kỹ thuật thực thi mã đã biết phụ thuộc vào tùy chọn này. Tùy chọn này mặc định tắt trên PHP 8.5 nhưng mặc định bật trên các phiên bản PHP cũ hơn.

Cả hai đều không phải là cách vá, nhưng cho biết website đang ở gần kịch bản xấu nhất tới đâu.

Người phát hiện và bản PoC

WordPress ghi nhận Robert Ressl là người phát hiện, báo cáo riêng qua chương trình HackerOne từ tháng 7. Khi bản vá ra mắt, Ressl công bố phân tích chi tiết kèm PoC và môi trường thử nghiệm. Cuộc tấn công mẫu của anh chạy mã với quyền của tài khoản web server (không phải toàn quyền máy chủ), và chỉ được thử trên WordPress 7.0.2 trong lab cô lập.

Với hệ thống chưa thể cập nhật ngay, Ressl gợi ý tắt register_argc_argv cho request web và gỡ các thành phần PEAR không dùng tới để thu hẹp đường dẫn tới thực thi mã - dù vậy những bước này không sửa được lỗi gốc.

Tại thời điểm công bố, chưa có báo cáo về việc lỗ hổng bị khai thác. Cập nhật: chỉ vài giờ sau, tình hình đã thay đổi - xem bài CVE-2026-87902 bị khai thác chỉ vài giờ sau khi công bố.

Nguồn tham khảo: The Hacker News, thông báo bảo mật của WordPress và Patchstack.