Plugin cache WordPress lộ lỗ hổng nguy hiểm mức 9/10, nhà phát triển tung liền 3 bản vá nhưng đều thất bại

VNZ-TECHS
Plugin cache WordPress W3 Total Cache đang rơi vào khủng hoảng bảo mật nghiêm trọng. Dù có hơn 1 triệu lượt cài đặt, nhưng ba bản vá liên tiếp mà nhà phát triển phát hành để khắc phục lỗ hổng CVE-2025-9501 đều không mang lại hiệu quả.


W3 Total Cache là một trong những plugin cache phổ biến nhất của WordPress, được sử dụng trên hơn 1 triệu website toàn cầu. Tuy nhiên, gần đây plugin này đã bộc lộ một lỗ hổng bảo mật cực kỳ nghiêm trọng (CVE-2025-9501), xuất phát từ cơ chế xử lý nội dung động của plugin.

Nhà nghiên cứu bảo mật “wcraft” khi công bố lỗ hổng này với WPScan cho biết, tất cả các phiên bản trước 2.8.13 đều bị ảnh hưởng. Lỗ hổng có điểm CVSS 9.0, được xếp vào mức nghiêm trọng (Critical).

Cụ thể, hàm _parse_dynamic_mfunc của W3 Total Cache sử dụng hàm eval() trong PHP để thực thi các đoạn mã được nhúng trong phần bình luận của trang đã được cache. Mục đích ban đầu là tăng tốc độ tải cho nội dung động, nhưng thiết kế này lại vô tình tạo ra “cửa hậu” cho hacker. Chỉ cần kẻ tấn công chèn được đoạn mã đặc biệt vào bình luận, plugin sẽ coi đó là lệnh hợp lệ và thực thi trực tiếp trên máy chủ.

Quá trình vá lỗi của nhà phát triển bị các chuyên gia mô tả như một “rạp xiếc bảo mật”:
  • Phiên bản 2.8.13 cố gắng dùng str_replace để loại bỏ thẻ độc hại, nhưng cách làm quá đơn giản. Hacker chỉ cần lồng chuỗi bảo mật (ví dụ tạo chuỗi "rcercesecsec"), khi chương trình loại bỏ phần "rcesec" ở giữa thì các ký tự còn lại sẽ tự ghép lại thành một token hợp lệ, khiến cơ chế phòng thủ hoàn toàn vô hiệu.
  • Phiên bản 2.8.14 bổ sung thêm nhiều bước kiểm tra, nhưng lỗ hổng vẫn chưa được khắc phục triệt để.
  • Phiên bản 2.8.15 tiếp tục cố gắng chặn tấn công bằng cách kiểm tra khoảng trắng sau thẻ (regex \s+), nhưng lại bỏ qua việc mã gốc cho phép không cần khoảng trắng (regex \s*). Kẻ tấn công chỉ cần xóa khoảng trắng giữa thẻ và token là có thể dễ dàng vượt qua lớp bảo vệ.
Mặc dù việc khai thác lỗ hổng khá đơn giản, nhưng kẻ tấn công vẫn cần đáp ứng ba điều kiện cụ thể:
  • Thứ nhất, phải lấy được token bảo mật W3TC_DYNAMIC_SECURITY do quản trị viên cấu hình (thường là một chuỗi bí mật);
  • Thứ hai, website phải cho phép người dùng chưa đăng nhập đăng bình luận;
  • Cuối cùng, chức năng cache trang phải được bật.
Dù các điều kiện này phần nào hạn chế phạm vi tấn công, nhưng với số lượng website sử dụng W3 Total Cache rất lớn, số nạn nhân tiềm năng vẫn không hề nhỏ.

Trước thực tế các bản vá liên tục bị phá vỡ, các chuyên gia bảo mật cảnh báo rằng chỉ cập nhật plugin là chưa đủ an toàn. Quản trị viên nên kiểm tra và thay đổi ngay giá trị hằng số W3TC_DYNAMIC_SECURITY, đảm bảo tính duy nhất và chắc chắn rằng token này chưa từng bị lộ.

Ngoài ra, các chuyên gia cũng khuyến nghị tạm thời hạn chế quyền bình luận của người dùng chưa xác thực, đồng thời rà soát kỹ log bình luận từ tháng 10/2025 đến nay để phát hiện sớm các dấu hiệu chèn mã bất thường.
 
secpol Reactions: secpol