Được phát hiện bởi các nhà nghiên cứu RIPS Technologies (Đức), lỗ hổng này được đánh giá nghiêm trọng gây ảnh hưởng tới tất cả website sử dụng WordPress. Mặc dù đã được báo cáo cho nhóm an ninh mạng của WordPress từ cuối năm 2017, tuy nhiên cho tới nay, vẫn chưa có bản vá chính thức từ các nhà phát triển cho lỗ hổng này.
Phạm vi ảnh hưởng
Hiện tại, tất cả các phiên bản của WordPress (bao gồm phiên bản mới nhất là 4.9.6) đều tồn tại lỗ hổng này.
Lỗ hổng nằm trong chức năng xóa bài viết của WordPress. Tin tặc có thể lợi dụng việc gửi yêu cầu để chèn vào các đoạn mã độc hại, từ đó, có thể xóa bất cứ tập tin nào trên máy chủ. Để khai thác được lỗ hổng, tin tặc cần có quyền chỉnh sửa và xóa các tập tin đa phương tiện. Vì vậy, lỗ hổng này chỉ có thể thực hiện leo thang đặc quyền khi có tài khoản với quyền đăng bài (author), hoặc kết hợp với một lỗ hổng khác hay khai thác dựa trên cấu hình sai.
Những tác hại mà tin tặc có thể gây ra
Nếu khai thác thành công lỗ hổng, tin tặc sẽ có quyền xóa bất cứ tập tin nào trong bộ cài đặt WordPress, hoặc trong máy chủ khi người dùng được quyền xóa thông qua tiến trình PHP, từ đó, tin tặc sẽ thực thi mã độc trên trình duyệt web. Cụ thể, những loại tệp tin có thể bị xóa bao gồm:
Chi tiết kỹ thuật
Trong PHP, lỗ hổng này xảy ra khi hàm unlink() được khởi chạy và dữ liệu đầu vào của người dùng có thể tác động đến các thành phần của tham số $filename mà không qua quá trình chuẩn hóa.
Dưới đây là đoạn mã chứa lỗ hổng được tìm thấy ở tập tin wp-include/post.php.
function wp_delete_attachment( $post_id, $force_delete = false ) {
⋮
$meta = wp_get_attachment_metadata( $post_id );
⋮
if ( ! empty($meta['thumb']) ) {
// Don't delete the thumb if another attachment uses it.
if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $wpdb->esc_like( $meta['thumb'] ) . '%', $post_id)) ) {
$thumbfile = str_replace(basename($file), $meta['thumb'], $file);
/** This filter is documented in wp-includes/functions.php */
$thumbfile = apply_filters( 'wp_delete_file', $thumbfile );
@ unlink( path_join($uploadpath['basedir'], $thumbfile) );
}
}
⋮
}
Trong hàm wp_delete_attachement(), nội dung của $meta[‘thumb’] được dùng khi gọi hàm unlink() mà không chuẩn hóa. Đoạn mã này được dùng để xóa tập tin thumbnail của một ảnh cùng lúc với việc xóa ảnh đó. Ảnh được tải lên qua trình quản lý đa phương tiện của WordPress được coi là một loại tệp đính kèm. Giá trị $meta[‘thumb’] được lưu dưới dạng Custom Field của ảnh. Vì vậy, khi lấy giá trị đại diện cho tên tập tin thumbnail dùng cho gọi hàm unlink() từ cơ sở dữ liệu, đã không qua quá trình chuẩn hóa hay kiểm tra nào. Nếu không có biện pháp bảo mật nào khác trước khi được lưu vào cơ sở dữ liệu, thì sẽ tồn tại lỗ hổng xóa tệp tùy ý.
⋮
switch($action) {
⋮
case 'editattachment':
check_admin_referer('update-post_' . $post_id);
⋮
// Update the thumbnail filename
$newmeta = wp_get_attachment_metadata( $post_id, true );
$newmeta['thumb'] = $_POST['thumb'];
wp_update_attachment_metadata( $post_id, $newmeta );
Đoạn mã trên cho thấy giữa quá trình lấy giá trị $_POST[‘thumb’] và lưu vào cơ sở dữ liệu wp_update_attachment_metadata() không có biện pháp bảo mật để đảm bảo giá trị này thực sự là của tập tin thumbnail của tệp đính kèm. Giá trị $_POST[‘thumb’] có thể bao gồm đường dẫn của bất kỳ tập tin nào và sẽ bị xóa cùng tệp đính kèm.
Cách khắc phục
Trong khi chờ đợi bản vá chính thức từ nhà phát triển, các quản trị viên có thể tạm thời thực hiện các phương án sau đây:
add_filter( 'wp_update_attachment_metadata', 'rips_unlink_tempfix' );
function rips_unlink_tempfix( $data ) {if( isset($data['thumb']) ) {$data['thumb'] = basename($data['thumb']);}return $data;}
Vân Ngọc
Theo ripstech.com
09:00 | 24/08/2018
10:00 | 11/09/2018
09:00 | 01/02/2018
09:18 | 10/07/2017
16:00 | 18/04/2019
22:00 | 26/01/2020
09:00 | 20/01/2017
08:00 | 13/10/2023
Các lỗ hổng bảo mật gần đây được phát hiện trong máy chủ Exim có thể cho phép kẻ tấn công xâm nhập vào hệ thống và giành quyền truy cập dữ liệu nhạy cảm, bao gồm cả email. Đây không phải là lần đầu tiên lỗ hổng bảo mật được phát hiện đối với các máy chủ email. Vào tháng 5/2021, tổ chức cung cấp giải pháp bảo mật Qualys đã tiết lộ một bộ 21 lỗ hổng được gọi chung là “21Nails” cho phép những kẻ tấn công không được xác thực có thể thực thi mã từ xa và giành quyền kiểm soát hệ thống trên hàng triệu máy chủ email.
09:00 | 05/06/2023
Mới đây, GitLab đã phát hành bản cập nhật khẩn cấp, phiên bản 16.0.1 cho GitLab Community Edition (CE) và Enterprise Edition (EE) để giải quyết lỗ hổng nghiêm trọng trong phiên bản 16.0.0 có điểm CVSS 10/10.
09:00 | 05/06/2023
Đầu tháng 5, Microsoft đã phát hành một bản vá cho lỗ hổng bỏ qua Khởi động an toàn (Secure Boot) được sử dụng bởi bộ khởi động BlackLotus được báo cáo vào tháng 3. Lỗ hổng ban đầu định danh CVE-2022-21894, đã được vá vào tháng 1, nhưng bản vá mới cho CVE-2023-24932 đã xử lý một giải pháp thay thế được khai thác tích cực khác cho các hệ thống chạy Windows 10 và 11 và các phiên bản Windows Server cho tới tận phiên bản 2008.
12:00 | 10/03/2023
Verichains cảnh báo lỗ hổng bảo mật nghiêm trọng trong thư viện nền tảng Tendermint Core, có thể dẫn đến thiệt hại tài sản với các dự án Blockchain nổi tiếng.
Trên trang web của RansomHub, nhóm tin tặc tống tiền này đã công bố một số dữ liệu đã đánh cắp từ công ty con Change Healthcare của United Health. Đây là hành động nhằm mục đích yêu cầu công ty chăm sóc sức khỏe của Hoa Kỳ phải đáp ứng những điều khoản trong thỏa thuận tống tiền của tin tặc.
12:00 | 06/05/2024