Lỗ hổng xóa tệp tùy ý SureForms WordPress: Nguy cơ chiếm quyền điều khiển trang web

Một lỗ hổng xóa tệp tùy ý nghiêm trọng đã được phát hiện trong plugin **SureForms WordPress**, ảnh hưởng đến hơn **200.000** cài đặt đang hoạt động và có khả năng cho phép những kẻ tấn công chưa xác thực chiếm quyền kiểm soát toàn bộ trang web.

Lỗ hổng này, được theo dõi là **CVE-2025-6691** với điểm **CVSS** là **8.8 (Cao)**, nằm trong các phiên bản của plugin lên tới **1.7.3**, được phát triển bởi **Brainstorm Force**.

Nguồn Gốc Lỗ Hổng

Lỗ hổng xóa tệp tùy ý này bắt nguồn từ việc xác thực đầu vào không đầy đủ trong cơ chế xử lý và xóa biểu mẫu của plugin. Điều này cho phép các tác nhân độc hại có thể tiêm các đường dẫn tệp tùy ý vào dữ liệu biểu mẫu.

Khi một quản trị viên xóa một mục gửi đã bị nhiễm độc như vậy, các tệp được chỉ định sẽ bị xóa khỏi máy chủ mà không có bất kỳ kiểm tra phù hợp nào. Tình trạng này mở ra cánh cửa cho các cuộc khai thác tàn khốc, chẳng hạn như xóa tệp **wp-config.php** và buộc trang web vào chế độ cài đặt dễ bị tổn thương, tạo điều kiện cho việc thực thi mã từ xa.

Vấn đề cốt lõi phát sinh trong hàm `prepare_submission_data()` trong lớp `Form_Submit`. Hàm này chịu trách nhiệm xử lý các mục nhập biểu mẫu nhưng lại thiếu cơ chế kiểm tra kỹ lưỡng các giá trị trường đầu vào.

Cơ Chế Khai Thác

Kẻ tấn công có thể lợi dụng lỗ hổng này bằng cách gửi dữ liệu được tạo sẵn, bao gồm các mảng mô phỏng tải lên tệp, ngay cả trên các biểu mẫu không có trường nhập tệp. Các mục nhập độc hại này sau đó sẽ được lưu trữ trong cơ sở dữ liệu của trang web.

Khi một mục nhập độc hại như vậy bị xóa thông qua hàm `delete_entry_files()` trong lớp `Entries_List_Table`, plugin sẽ mù quáng chuyển đổi các **URL** thành đường dẫn tệp và sử dụng hàm `unlink()` của **PHP** để xóa chúng. Quá trình này diễn ra mà không có bất kỳ xác minh nào về đường dẫn, phần mở rộng tệp hoặc các hạn chế thư mục.

Việc thiếu cơ chế làm sạch và xác thực này có nghĩa là các tệp quan trọng nằm ngoài thư mục tải lên dự kiến, chẳng hạn như tệp cấu hình của trang web, có thể bị nhắm mục tiêu để xóa.

Xóa tệp **wp-config.php** sẽ làm gián đoạn kết nối cơ sở dữ liệu của trang web, từ đó kích hoạt trình hướng dẫn cài đặt lại **WordPress**. Kẻ tấn công có thể lợi dụng tình huống này bằng cách liên kết đến cơ sở dữ liệu của riêng chúng, từ đó giành được khả năng **thực thi mã từ xa (RCE)** trên máy chủ.

Việc khai thác lỗ hổng này yêu cầu một quản trị viên phải xóa mục nhập độc hại, vốn thường được ngụy trang dưới dạng spam. Điều này làm cho nó trở thành một mục tiêu hàng đầu cho những kẻ tấn công dai dẳng, những người sẵn sàng chờ đợi cơ hội để cuộc tấn công được hoàn tất.

Phát Hiện và Quy Trình Vá Lỗi

Lỗ hổng này được phát hiện bởi nhà nghiên cứu **Phat RiO** của **BlueRock** thông qua Chương trình **Bug Bounty** của **Wordfence**, mang lại khoản tiền thưởng **4.050 USD**.

**Wordfence**, nhấn mạnh tầm quan trọng của an ninh phòng thủ đa lớp (defense-in-depth), đã nhanh chóng phản ứng bằng cách triển khai một quy tắc tường lửa cho người dùng **Premium**, **Care** và **Response** vào ngày **26 tháng 6 năm 2025**. Người dùng miễn phí dự kiến sẽ nhận được sự bảo vệ này vào ngày **26 tháng 7 năm 2025**.

Đội ngũ **Brainstorm Force** đã được thông báo về lỗ hổng vào ngày **25 tháng 6 năm 2025**. Họ đã nhanh chóng phát hành các bản vá lỗi trên nhiều phiên bản vào ngày **30 tháng 6 năm 2025**, bao gồm:

  • **1.7.4**
  • **1.6.5**
  • **1.5.1**
  • **1.4.5**
  • **1.3.2**
  • **1.2.5**
  • **1.1.2**
  • **1.0.7**
  • **0.0.14**

Các bản vá này cũng bao gồm các bản vá ngược (backports) cho các nhánh cũ hơn và sự hợp tác với **WordPress** để thực hiện các bản cập nhật bắt buộc, đảm bảo rằng một lượng lớn người dùng được bảo vệ một cách hiệu quả.

Chi Tiết Bản Vá

Bản vá lỗi đã giới thiệu một hàm mới có tên `delete_upload_file_from_subdir()`. Hàm này được thiết kế để tăng cường bảo mật bằng cách áp dụng các hạn chế nghiêm ngặt về đường dẫn.

Cụ thể, hàm `delete_upload_file_from_subdir()` đảm bảo rằng việc xóa tệp chỉ được phép trong thư mục con `’sureforms/’` nằm trong thư mục `uploads` của **WordPress**. Để đạt được điều này, hàm sử dụng các kiểm tra `realpath` và trích xuất `basename`.

  • **realpath**: Chức năng này được dùng để giải quyết tất cả các thành phần tượng trưng và tương đối trong một đường dẫn, trả về đường dẫn tuyệt đối chuẩn hóa. Điều này giúp ngăn chặn các cuộc tấn công leo thang thư mục (directory traversal) bằng cách đảm bảo rằng đường dẫn tệp đích không nằm ngoài phạm vi cho phép.
  • **basename**: Hàm này trả về tên thành phần cuối cùng của một đường dẫn. Kết hợp với `realpath`, nó giúp xác nhận rằng chỉ các tệp có tên hợp lệ trong thư mục được phép mới được xử lý, loại bỏ khả năng khai thác thông qua các tên tệp hoặc đường dẫn được tạo sẵn độc hại.

Những biện pháp kiểm soát đường dẫn này giúp ngăn chặn các cuộc tấn công traversal, nơi kẻ tấn công cố gắng truy cập hoặc thao tác các tệp bên ngoài thư mục được cấp phép bằng cách sử dụng các chuỗi đường dẫn như `../`.

Bài Học và Khuyến Nghị Bảo Mật

Lỗ hổng này phản ánh một lỗ hổng tương tự gần đây được tìm thấy trong plugin **Formidable Forms**, nhấn mạnh một mô hình lặp lại trong các plugin **WordPress** nơi việc xác thực không đủ trong quá trình xử lý biểu mẫu và xử lý tệp dẫn đến các rủi ro bảo mật nghiêm trọng.

**Wordfence** khuyến nghị người dùng thực hiện cập nhật ngay lập tức lên các phiên bản đã được vá để bảo vệ trang web của họ. Ngoài ra, họ cũng kêu gọi các nhà phát triển plugin kiểm tra mã của mình để tìm kiếm các vấn đề tương tự và triển khai các biện pháp bảo mật mạnh mẽ.

Các biện pháp bảo mật được khuyến nghị bao gồm:

  • **Làm sạch đầu vào nghiêm ngặt (strict input sanitization)**: Đảm bảo rằng tất cả dữ liệu người dùng nhập vào đều được kiểm tra và làm sạch kỹ lưỡng để loại bỏ bất kỳ ký tự hoặc chuỗi độc hại nào có thể bị khai thác.
  • **Danh sách trắng thư mục (directory whitelisting)**: Chỉ cho phép các hoạt động tệp diễn ra trong các thư mục được xác định và cho phép cụ thể, ngăn chặn truy cập hoặc thao tác tệp bên ngoài các vị trí an toàn.
  • **Kiểm tra kiểu dữ liệu (type checks)**: Xác minh kiểu dữ liệu của các giá trị đầu vào để đảm bảo chúng khớp với định dạng mong đợi, tránh các cuộc tấn công tiêm dữ liệu.

Các đề xuất tăng cường bảo mật bổ sung, chẳng hạn như bảo mật điểm cuối nâng cao, đang được xem xét cho các bản phát hành **SureForms** trong tương lai.

Sự cố này nhấn mạnh tầm quan trọng của việc nghiên cứu lỗ hổng chủ động và việc vá lỗi nhanh chóng trong việc bảo vệ hệ sinh thái **WordPress**, ngăn chặn các cuộc tấn công có thể gây ảnh hưởng rộng rãi đến các trang web.