English

Tất cả lỗ hổng

Đọc tệp cục bộ không cần đăng nhập qua get_page_template()

Một request không cần đăng nhập có thể điều khiển bước chọn template của trang, khiến WordPress nạp một tệp .php bất kỳ đọc được trên đĩa, ngoài thư mục theme. Kèm điều kiện về theme và một tệp PHP đọc được, lỗi dẫn tới chạy mã.

Cao CVSS 8.1 CVE-2026-87902

Chuyện gì xảy ra

get_page_template() chọn tệp template cho một trang; lỗi cho phép kết quả trỏ ra ngoài thư mục theme đang dùng, tới một tệp .php đọc được.

Điều kiện nêu trong cảnh báo: theme có thư mục tên bắt đầu bằng page-, và trên máy có một tệp PHP đọc được như pearcmd.php với register_argc_argv bật.

Điều kiện đó rẻ trên shared hosting: theme mặc định hoặc theme phổ biến có thư mục page-, và tệp PHP đọc được thì thường có sẵn — của site khác, của một bản sao lưu.

Đường vào

  • Một request HTTP không cần đăng nhập điều khiển bước chọn template của trang.
  • Tệp PHP đọc được trên cùng máy là nửa còn lại của điều kiện: không cần tệp đó thuộc site bị chạm, chỉ cần nó đọc được.
  • Bản sao lưu trong thư mục web: không được vhost nào phục vụ nên không phải đường vào, nhưng nó vẫn là tệp PHP đọc được — tức là điều kiện cho site khác trên cùng máy.

Tệp nào là điều kiện

  • Core WordPress trên đĩa: bản vá là thay tệp core, theo đúng nhánh.
  • Theme đang dùng: điều kiện nằm ở cấu trúc thư mục theme. Đổi theme không phải bản vá, và không phải theme nào cũng có thư mục page-.
  • Các site khác và bản sao lưu trên cùng máy: chúng không chạy bản WordPress lỗi, nhưng vẫn cung cấp tệp PHP đọc được.

Đang chạy, không phải đã cài

  • Sau khi thay tệp core, khởi động lại FPM để chắc chắn mã mới đang chạy; opcache thường tự kiểm tra nhưng không phải lúc nào cũng vậy.
  • Kiểm tra checksum của core sau khi nâng: một tệp core bị sửa tay có thể làm bản vá không còn đúng.

Bản bị ảnh hưởng và bản vá

Sản phẩmCVEBản bị ảnh hưởngBản vá
WordPressCVE-2026-879027.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

Còn 19 nhánh nữa — danh sách đầy đủ: Mọi lỗ hổng WordPress

Tóm tắt giữ nguyên tiếng Anh như trong cảnh báo gốc.

Mô tả gốc (WordPress · CVE-2026-87902): An unauthenticated attacker can make `get_page_template()` page-template resolution include a chosen readable local `.php` file outside the active theme directories. If relevant pre-conditions for both the server and the active theme are met, this can lead to RCE.

Cách xử lý

  • Nâng core theo đúng nhánh đang chạy; bảng trên liệt kê bản vá của từng nhánh.
  • Dọn tệp PHP đọc được nằm ngoài thư mục phục vụ: bản sao lưu, thư mục cũ, tệp của site đã bỏ.
  • Nếu chưa nâng được: giới hạn quyền đọc tệp PHP ngoài docroot, và theo dõi log cho request lạ tới trang có template lạ.

Tự kiểm tra

wp core version

Cho biết: bản core đang chạy, so với bảng trên

wp core verify-checksums

Cho biết: tệp core có bị sửa tay không

find <docroot> -maxdepth 3 -type d -name 'page-*'

Cho biết: theme có thư mục page- — một nửa điều kiện

find /home -name '*.php' -readable 2>/dev/null | head

Cho biết: tệp PHP đọc được ngoài docroot — nửa điều kiện còn lại

wp theme list --status=active

Cho biết: theme đang dùng; theme nào có thư mục page-

Nguồn

Viết từ cảnh báo gốc và tài liệu của nhà phát hành; phiên bản lấy từ dữ liệu của trang, cập nhật 10/11/2026. Khi có khác biệt, cảnh báo gốc là chuẩn.