Rủi ro nghiêm trọng với plugin Better Search Replace cho WordPress

Rủi ro nghiêm trọng với plugin Better Search Replace cho WordPress

Bài viết này bàn về một lỗ hổng nghiêm trọng đã được phát hiện và sửa chữa trong plugin Better Search Replace cho WordPress, mà có hơn 1 triệu cài đặt trên website hoạt động. Các cuộc tấn công thành công có thể dẫn đến xóa tập tin tùy ý, lấy thông tin nhạy cảm và thực thi mã.

Mức độ Nghiêm Trọng của Lỗ Hổng

Mức độ nghiêm trọng của lỗ hổng được đánh giá trên một hệ thống điểm với các cấp độ từ thấp đến nghiêm trọng:

Screenshot of severity score rating of 9.8 of a vulnerability discovered in Better Search Replace WordPress plugin

Screenshot of severity score rating of 9.8 of a vulnerability discovered in Better Search Replace WordPress plugin

Thấp 0.1-3.9

Trung bình 4.0-6.9

Cao 7.0-8.9

Nghiêm trọng 9.0-10.0

Mức độ nghiêm trọng của lỗ hổng được phát hiện trong plugin Better Search Replace được xác định là Nghiêm trọng, là cấp độ cao nhất, với điểm số là 9.8 trên thang đo nghiêm trọng từ 1-10.

Plugin Better Search Replace cho WordPress

Plugin này được phát triển bởi WP Engine nhưng ban đầu nó được tạo ra bởi công ty phát triển Delicious Brains đã được WP Engine mua lại. Better Search Replace là một công cụ WordPress phổ biến giúp đơn giản hóa và tự động hóa quá trình chạy tác vụ tìm kiếm và thay thế trên cơ sở dữ liệu của website WordPress, rất hữu ích trong tác vụ di chuyển site hoặc server. Plugin này có phiên bản miễn phí và phiên bản Pro có phí.

Lỗ Hổng Tiềm Ẩn với PHP Object Injection

Lỗ hổng PHP Object Injection xảy ra khi đầu vào do người dùng cung cấp không được biến đổi một cách an toàn. Quá trình biến đổi không an toàn là quá trình chuyển đổi các biểu diễn chuỗi của các đối tượng trở lại thành các đối tượng PHP.

Các điểm OWASP mô tả một cách tổng quát về lỗ hổng PHP Object Injection:

PHP Object Injection là một lỗ hổng cấp độ ứng dụng có thể cho phép kẻ tấn công thực hiện nhiều loại tấn công độc hại, như tiêm mã, tiêm SQL, Traversal Đường dẫn và từ chối dịch vụ ứng dụng, tùy thuộc vào ngữ cảnh.

Để khai thác thành công một lỗ hổng PHP Object Injection, hai điều kiện phải được đáp ứng:

Ứng dụng phải có một lớp triển khai một phương thức ma thuật PHP (như __wakeup hoặc __destruct) có thể được sử dụng để thực hiện các cuộc tấn công độc hại, hoặc khởi đầu một 'chuỗi POP'.

Tất cả các lớp được sử dụng trong quá trình tấn công phải được khai báo khi lời gọi unserialize() có lỗ hổng, nếu không cần hỗ trợ autoload object loading cho các lớp đó.

Nếu kẻ tấn công có thể tải lên (tiêm) một đầu vào để bao gồm một đối tượng được chuỗi hóa theo sở thích của họ, họ có thể tiềm ẩn thực thi mã tùy ý hoặc đe dọa an ninh của website. Như đã đề cập ở trên, loại lỗ hổng này thường phát sinh do quá trình biến đổi đầu vào không an toàn. Quá trình biến đổi là quá trình chuẩn của việc xét duyệt dữ liệu đầu vào để chỉ cho phép các loại dữ liệu được mong đợi và từ chối và chặn các dữ liệu đầu vào không an toàn.

Trong trường hợp của plugin Better Search Replace, lỗ hổng được phơi bày trong cách xử lý chuỗi hóa trong quá trình tìm kiếm và thay thế. Một tính năng bảo mật nghiêm trọng bị thiếu trong tình huống này là chuỗi POP – một chuỗi các lớp và hàm liên kết mà kẻ tấn công có thể sử dụng để kích hoạt hành động độc hại khi một đối tượng được giải chuỗi.

Mặc dù plugin Better Search Replace không chứa chuỗi POP nhưng rủi ro vẫn tồn tại nếu một plugin hoặc theme khác cài đặt trên cùng website chứa chuỗi POP có thể cho phép kẻ tấn công tấn công.

Wordfence mô tả lỗ hổng:

'Plugin Better Search Replace cho WordPresslỗ hổng PHP Object Injection trong tất cả các phiên bản cho đến, và bao gồm, 1.4.4 thông qua việc giải chuỗi hóa đầu vào không tin cậy.

Điều này làm cho kẻ tấn công không xác thực có thể tiêm một Đối tượng PHP.

Không có chuỗi POP nào tồn tại trong plugin có lỗ hổng. Nếu một chuỗi POP tồn tại thông qua một plugin hoặc theme bổ sung được cài đặt trên hệ thống mục tiêu, nó có thể cho phép kẻ tấn công xóa tập tin tùy ý, lấy thông tin nhạy cảm, hoặc thực thi mã.'

Đáp ứng với phát hiện này, WP Engine nhanh chóng giải quyết vấn đề. Nhật ký thay đổi cho bản cập nhật lên phiên bản 1.4.5, phát hành vào ngày 18 tháng 1 năm 2024, nhấn mạnh các biện pháp đã được thực hiện:

'Bảo mật: Giải chuỗi một đối tượng trong quá trình tìm kiếm và thay thế hiện nay truyền 'allowed_classes' => false để tránh việc thực hiện đối tượng và có thể chạy mã độc hại được lưu trữ trong cơ sở dữ liệu.'

Bản cập nhật này đến sau khi Wordfence tiết lộ trách nhiệm về lỗ hổng vào ngày 18 tháng 12 năm 2023, và sau đó là quá trình phát triển và kiểm thử sửa chữa của WP Engine.

Phản Ứng và Biện Pháp Phòng Ngừa

Người dùng plugin Better Search Replace được khuyến khích cập nhật lên phiên bản mới nhất ngay lập tức để bảo vệ website của họ khỏi các hoạt động không mong muốn.