Elementor Pro 4.2.1 và các phiên bản cũ hơn có thể bị tấn công bởi lỗ hổng thực thi mã từ xa (RCE) không cần xác thực trong trường tải lên tệp (file-upload field) của widget Forms; vấn đề này đã được vá trong phiên bản 4.2.2, vì vậy các trang web đang chạy mã cũ nên nâng cấp ngay lập tức.

Lỗ hổng này hoạt động như thế nào

Lỗ hổng này có điểm đánh giá CVSS 9.0, nghĩa là một kẻ tấn công có thể tiếp cận trang web bị lỗi có thể thực thi mã PHP tùy ý trên máy chủ mà không cần đăng nhập hay cung cấp bất kỳ thông tin xác thực nào. Vấn đề nằm ở cách Elementor Pro xử lý việc tải tệp lên trong widget Forms. Plugin này chạy hai vòng lặp riêng biệt: một vòng lặp để xác thực từng tệp được tải lên, và một vòng lặp khác để lưu tệp vào thư mục tải lên có thể truy cập được từ web.

Kẻ tấn công có thể tạo ra một yêu cầu duy nhất chứa hai tệp. Tệp đầu tiên được đặt tên trống, khiến vòng lặp xác thực bỏ qua bước kiểm tra. Tệp thứ hai, một tập lệnh PHP độc hại, sẽ vượt qua vòng lặp thứ hai và được ghi vào một thư mục công khai. Vì Elementor Pro đặt tên các tệp được tải lên bằng dấu thời gian (timestamp), kẻ tấn công có thể dự đoán được tên tệp và sau đó yêu cầu truy cập trực tiếp để thực thi mã.

Lỗ hổng này phát sinh như thế nào

Thiết kế vòng lặp kép nhằm mục đích giữ cho việc xác thực và lưu trữ độc lập với nhau, nhưng việc thiếu một bước kiểm tra tính hợp lệ chung (sanity check) đã cho phép thủ thuật đặt tên trống lọt qua. Lỗi này ảnh hưởng đến mọi bản cài đặt có sử dụng trường tải lên tệp của widget Forms, bất kể chủ sở hữu trang web có bật tính năng đó cho khách truy cập hay không.

Ai gặp rủi ro

Bất kỳ trang web WordPress nào đã cài đặt Elementor Pro 4.2.1 hoặc các phiên bản cũ hơn đều gặp nguy hiểm. Vì cuộc tấn công không yêu cầu xác thực, ngay cả các trang web hạn chế quyền truy cập quản trị cũng có thể bị tổn thương. Nếu khai thác thành công, kẻ tấn công sẽ có toàn quyền kiểm soát môi trường lưu trữ, mở đường cho việc đánh cắp dữ liệu, làm biến dạng trang web (defacement) hoặc triển khai mã độc tống tiền (ransomware).

Cần làm gì ngay bây giờ

  • Kiểm tra phiên bản đã cài đặt bằng lệnh WordPress CLI:

    wp plugin list --name=elementor-pro --field=version
    
  • Nếu kết quả hiển thị phiên bản 4.2.1 hoặc thấp hơn, hãy cập nhật lên 4.2.2 hoặc mới hơn ngay lập tức. Bản cập nhật này thay thế logic tải lên bị lỗi bằng một quy trình xác thực và lưu trữ nguyên tử (atomic) duy nhất, giúp ngăn chặn việc vượt qua kiểm tra bằng tên trống.

  • Sau khi nâng cấp, hãy kiểm tra thư mục tải lên để tìm bất kỳ tệp PHP nào khớp với định dạng dấu thời gian mà plugin sử dụng và xóa chúng.

  • Cân nhắc việc vô hiệu hóa trường tải lên tệp trên các biểu mẫu công khai cho đến khi bản vá được áp dụng, đặc biệt là trên các trang web có lưu lượng truy cập cao.

Quan điểm đối lập

Một số nhà phát triển lập luận rằng rủi ro là có giới hạn vì cuộc tấn công yêu cầu widget Forms phải được cấu hình với trường tải lên tệp có thể truy cập công khai. Tuy nhiên, nhiều trang web dựa trên Elementor thường sử dụng các biểu mẫu như vậy để liên hệ, ứng tuyển việc làm hoặc nội dung do người dùng tạo, khiến điều kiện này trở nên phổ biến đến mức lỗ hổng được đánh giá là cực kỳ nghiêm trọng.

Cần theo dõi điều gì tiếp theo

Các nhà nghiên cứu bảo mật dự kiến sẽ có thêm các thông báo khuyến cáo khi có thêm nhiều trang web báo cáo về các nỗ lực khai thác. Hãy theo dõi các thông báo chính thức từ Elementor và các cơ sở dữ liệu lỗ hổng uy tín để cập nhật bất kỳ bản vá hoặc biện pháp giảm thiểu nào tiếp theo.

Tóm lại: Lỗ hổng RCE trong Elementor Pro 4.2.1 và các phiên bản cũ hơn là một vectơ tấn công nghiêm trọng mà không cần đăng nhập. Cập nhật lên 4.2.2 là cách phòng thủ đáng tin cậy duy nhất; việc trì hoãn sẽ khiến máy chủ và dữ liệu của bạn gặp rủi ro nghiêm trọng.