Trang chủ / Lỗ hổng bảo mật của hơn 4 triệu website đang sử dụng WPBakery

Lỗ hổng bảo mật của hơn 4 triệu website đang sử dụng WPBakery

Vào ngày 27 tháng 7, nhóm Threat Intelligence của Wordfence Security đã phát hiện ra một lỗ hổng trong WPBakery , một plugin WordPress được cài đặt trên hơn 4,3 triệu website. Lỗ hổng này giúp những tài khoản được phân quyền từ “cộng tác viên” trở lên có thể đưa JavaScript độc hại vào các bài đăng.

Ban đầu, Threat Intelligence đã liên hệ với nhà phát hành plugin vào ngày 28 tháng 7 năm 2020 thông qua diễn đàn hỗ trợ của họ. Sau khi nhận được xác nhận về kênh hỗ trợ thích hợp, nhóm Threat Intelligence đã tiết lộ toàn bộ chi tiết vào ngày 29 tháng 7 năm 2020. Họ đã xác nhận lỗ hổng bảo mật và báo cáo rằng nhóm phát triển của họ đã bắt đầu sửa lỗi vào ngày 31 tháng 7 năm 2020. Sau một thời gian dài trao đổi với nhóm phát triển plugin và một số bản vá không đủ, bản vá cuối cùng đủ được phát hành vào ngày 24 tháng 9 năm 2020.

Chúng tôi khuyên bạn nên cập nhật lên phiên bản mới nhất, 6.4.1 kể từ hôm nay và ngay lập tức. Trong khi làm như vậy, chúng tôi cũng khuyên bạn nên xác minh rằng bạn không có bất kỳ tài khoản người dùng tác giả hoặc cộng tác viên không đáng tin cậy nào trên trang web WordPress của mình.

Description: Authenticated Stored Cross-Site Scripting (XSS)
Affected Plugin: WPBakery
Plugin Slug: js_composer
Affected Versions: <= 6.4
CVE ID: Pending.
CVSS Score: 6.4 Medium
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Fully Patched Version: 6.4.1

Trình tạo trang WPBakery là trình tạo trang phổ biến nhất cho WordPress. Đây là một công cụ rất dễ sử dụng cho phép chủ sở hữu trang web tạo các trang tùy chỉnh bằng cách sử dụng khả năng kéo và thả.

Thật không may, plugin được thiết kế với một lỗ hổng có thể cung cấp cho người dùng với vai trò người đóng góp và cấp tác giả khả năng đưa JavaScript độc hại vào các trang và bài đăng. Lỗ hổng này cũng cho phép những người dùng này có thể chỉnh sửa bài viết của người dùng khác. Plugin đã vô hiệu hóa mọi kiểm tra lọc HTML bài đăng mặc định trong hàm saveAjaxFe bằng cách sử dụng kses_remove_filters();. Điều này có nghĩa là bất kỳ người dùng nào có quyền truy cập vào trình tạo WPBakery đều có thể đưa HTML và JavaScript vào bất kỳ đâu trong bài đăng bằng trình tạo trang.

public function saveAjaxFe() {
    vc_user_access()->checkAdminNonce()->validateDie()->wpAny( 'edit_posts', 'edit_pages' )->validateDie();
 
    $post_id = intval( vc_post_param( 'post_id' ) );
    if ( $post_id > 0 ) {
        ob_start();
 
        // Update post_content, title and etc.
        // post_title
        // content
        // post_status
        if ( vc_post_param( 'content' ) ) {
            $post = get_post( $post_id );
            $post->post_content = stripslashes( vc_post_param( 'content' ) );
            $post_status = vc_post_param( 'post_status' );
            $post_title = vc_post_param( 'post_title' );
            if ( null !== $post_title ) {
                $post->post_title = $post_title;
            }
            kses_remove_filters();
            remove_filter( 'content_save_pre', 'balanceTags', 50 );

Hơn nữa, trong khi WPBakery chỉ dự định các trang được tạo bằng trình tạo trang WPBakery để có thể chỉnh sửa thông qua trình tạo, người dùng có thể truy cập trình chỉnh sửa bằng cách cung cấp các thông số và giá trị chính xác cho bất kỳ bài đăng nào. Đây có thể được phân loại là một lỗi chung cũng như một vấn đề bảo mật và là điều khiến những người đóng góp và biên tập viên có thể sử dụng wp_ajax_vc_savehành động AJAX và chức năng saveAjaxFe tương ứng để đưa JavaScript độc hại vào bài đăng của chính họ cũng như bài đăng của người dùng khác.

Plugin cũng có chức năng onclick tùy chỉnh cho các nút. Điều này khiến kẻ tấn công có thể đưa JavaScript độc hại vào một nút sẽ thực thi khi nhấp vào nút. Hơn nữa, đóng góp và mức độ tác giả người dùng đã có thể sử dụng vc_raw_jsvc_raw_htmlvà nút sử dụng custom_onclickshortcodes thêm JavaScript độc hại để bài đăng nào.

Tất cả những điều này có nghĩa là người dùng có quyền truy cập cấp cộng tác viên có thể đưa các tập lệnh vào các bài đăng mà sau này sẽ thực thi khi ai đó truy cập vào trang hoặc nhấp vào một nút, sử dụng nhiều phương pháp khác nhau. Vì người dùng cấp cộng tác viên yêu cầu phê duyệt trước khi xuất bản, rất có thể quản trị viên sẽ xem trang chứa JavaScript độc hại do kẻ tấn công tạo ra với quyền truy cập cấp cộng tác viên. Bằng cách thực thi JavaScript độc hại trong trình duyệt của quản trị viên, kẻ tấn công có thể tạo một người dùng quản trị độc hại mới hoặc đưa vào một cửa sau, trong số nhiều thứ khác.

Trong phiên bản mới nhất của WPBakery, người dùng cấp thấp hơn không còn có unfiltered_htmlkhả năng theo mặc định, tuy nhiên, quản trị viên có thể cấp quyền đó nếu họ muốn. Ngoài ra, người dùng không có đặc quyền thích hợp không còn có thể chỉnh sửa bài đăng của người dùng khác, truy cập vào trình tạo trang trừ khi được phép hoặc sử dụng các mã ngắn có thể cho phép đưa JavaScript độc hại vào.

Kiểm soát tài khoản kép

Một chiến lược để giữ cho website của bạn được bảo vệ khỏi các cuộc tấn công Cross-Site Scripting chống lại các tài khoản có đặc quyền cao hơn là sử dụng các tài khoản kép. Kiểm soát tài khoản kép sử dụng hai tài khoản cho bất kỳ người dùng nào có thể yêu cầu khả năng quản trị. Điều này có thể được thực hiện bằng cách sử dụng một tài khoản người dùng có khả năng quản trị cho các tác vụ liên quan đến quản trị viên như thêm người dùng và plugin mới và một tài khoản người dùng khác có khả năng biên tập được sử dụng để xem xét và phê duyệt các bài đăng của tác giả và cộng tác viên.

Làm như vậy sẽ hạn chế tác động mà lỗ hổng Cross-Site Scripting có thể có. Khi bạn truy cập một trang với tư cách là quản trị viên trang, bất kỳ JavaScript độc hại nào mà kẻ tấn công đưa vào đều có thể sử dụng các chức năng chỉ quản trị như thêm người dùng mới hoặc chỉnh sửa tệp chủ đề để lây nhiễm thêm vào website. Bằng cách sử dụng tài khoản người dùng chỉ có khả năng chỉnh sửa trong khi chỉnh sửa, tạo và kiểm tra các bài đăng do người dùng cấp thấp hơn tạo, nỗ lực khai thác XSS có thể bị hạn chế, vì kẻ tấn công không thể thêm thành công tài khoản quản trị mới hoặc chỉnh sửa chủ đề thông qua Trình chỉnh sửa tài khoản.

Đặc biệt trong trường hợp nhiều người dùng có thể truy cập các hành động đã xác thực, chúng tôi khuyên bạn chỉ nên sử dụng tài khoản người dùng quản trị khi bạn cần thực hiện các chức năng quản trị trên trang web của mình.

Tiến trình

  • 27/7/2020: Phát hiện ban đầu về lỗ hổng bảo mật. Chúng tôi phát triển quy tắc tường lửa và chuyển nó vào giai đoạn thử nghiệm.
  • 28/7/2020: Quy tắc tường lửa được kiểm tra đầy đủ và phát hành cho người dùng cao cấp. Chúng tôi tiếp cận ban đầu với nhóm plugin WPBakery.
  • 29/7/2020: Nhóm WPBakery phản hồi xác nhận hộp thư đến thích hợp và chúng tôi gửi đầy đủ thông tin chi tiết.
  • 21/8/2020: Sau một số lần theo dõi, bản vá ban đầu được phát hành.
  • 26/8/2020: Chúng tôi thông báo cho nhóm WPBakery biết rằng có một số vấn đề nhỏ bổ sung cần giải quyết.
  • 28/8/2020: Người dùng miễn phí Wordfence nhận được quy tắc tường lửa.
  • 2/9/2020: Chúng tôi theo dõi để xem liệu nhóm WPBakery có nhận được email cuối cùng của chúng tôi hay không.
  • 9/9/2020: Nhóm WPBakery xác nhận rằng họ đã nhận được email của chúng tôi và đang nỗ lực phát hành bản vá bổ sung.
  • 11/9/2020:  Nhóm WPBakery phát hành một bản vá bổ sung chưa đầy đủ.
  • 11 – 23/19/2020: Chúng tôi hợp tác chặt chẽ hơn để đưa ra bản vá đầy đủ.
  • 24/9/2020: Bản vá đầy đủ cuối cùng được phát hành trong phiên bản 6.4.1.

Phần kết luận

Trong bài đăng này, chúng tôi đã trình bày chi tiết một lỗ hổng trong Plugin WPBakery đã cung cấp cho người dùng được xác thực khả năng đưa JavaScript độc hại vào các bài đăng bằng cách sử dụng trình tạo Trang WPBakery. Cùng với đó, chúng tôi đã cung cấp một số thông tin chi tiết về cách bạn có thể tự bảo vệ mình trước các lỗ hổng cấp Người đóng góp và Tác giả. Lỗ hổng này đã được vá đầy đủ trong phiên bản 6.4.1. Chúng tôi khuyến nghị người dùng ngay lập tức cập nhật lên phiên bản mới nhất hiện có, đó là phiên bản 6.4.1 tại thời điểm xuất bản này.

Vì WPBakery là một plugin cao cấp thường được bao gồm dưới dạng trình tạo trang với nhiều chủ đề cao cấp, bạn có thể cần kiểm tra kỹ xem có bất kỳ bản cập nhật nào cho bạn khi mua chủ đề của bạn hay không. Việc xác minh số phiên bản plugin trong trang tổng quan plugin sẽ thông báo cho bạn về phiên bản được cài đặt trên trang web của bạn.

Các trang web sử dụng Wordfence Premium đã được bảo vệ trước các cuộc tấn công cố gắng khai thác lỗ hổng này kể từ ngày 28 tháng 7 năm 2020. Các trang web vẫn sử dụng phiên bản Wordfence miễn phí nhận được sự bảo vệ tương tự vào ngày 28 tháng 8 năm 2020.

Nếu bạn biết một người bạn hoặc đồng nghiệp đang sử dụng plugin này trên trang web của họ, chúng tôi thực sự khuyên bạn nên chuyển tiếp lời khuyên này cho họ để giúp bảo vệ trang web của họ vì đây là một bản cập nhật bảo mật quan trọng.

 

Nguồn: Wordfence

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *