Nguy hiểm: lỗi bảo mật khiến toàn bộ website WordPress có thể hacker hạ bất cứ lúc nào

Một nhà nghiên cứu bảo mật đã công bố lỗi bảo mật và chứng minh website chạy WordPress hiện có thể bị hacker tắt dễ dàng bằng hình thức DoS

Một hình thức tấn công từ chối dịch vụ, tuy đơn giản nhưng nghiêm trọng, đã được phát hiện trong nền tảng WordPress CMS, có thể cho phép bất cứ ai đánh sập hầu hết các trang web WordPress ngay cả với một máy duy nhất mà không yêu cầu phải có một lượng lớn băng thông như trong hình thức tấn công DDoS để làm được như vậy.

Nguy hiểm: lỗi bảo mật khiến toàn bộ website WordPress có thể hacker hạ bất cứ lúc nào

Vì phía WordPress đã phủ nhận vấn đề này nên lỗ hổng bảo mật (CVE-2018-6389) vẫn chưa được khắc phục và ảnh hưởng đến hầu hết các phiên bản của WordPress được phát hành trong 9 năm qua, bao gồm bản phát hành mới nhất của WordPress (Phiên bản 4.9.2).
Được phát hiện bởi nhà nghiên cứu an ninh Israel, Barak Tawily, lỗ hổng tồn tại dưới dạng “load-scripts.php”, một tập lệnh trong WordPress CMS, dùng để xử lý các yêu cầu do người dùng đưa ra.

Discovered by Israeli security researcher Barak Tawily, the vulnerability resides in the way “load-scripts.php,” a built-in script in WordPress CMS, processes user-defined requests.

Đối với những ai chưa biết, tệp tin load-scripts.php chỉ được thiết kế cho quản trị viên dùng để giúp cho một trang web cải thiện hiệu suất và tải trang nhanh hơn bằng cách kết hợp (trên máy chủ) nhiều tệp JavaScript vào một yêu cầu.

Tuy nhiên, để làm cho “load-scripts.php” hoạt động trên trang đăng nhập quản trị (wp-login.php) trước khi đăng nhập, các nhà sáng lập của WordPress đã không giữ bất kỳ chứng thực nào, cuối cùng làm cho tính năng này có thể truy cập được với bất cứ ai.

Tùy thuộc vào các plugin và module bạn đã cài đặt, tệp load-scripts.php truy vấn một cách chọn lọc các tệp JavaScript được yêu cầu bằng cách chuyển tên của chúng vào tham số “tải”, được phân cách bằng dấu phẩy, như trong URL sau:
https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Trong khi tải trang web, ‘load-scripts.php’ cố gắng tìm từng tên tệp JavaScript được đưa ra trong URL, ghép nội dung của chúng vào một tệp và sau đó gửi lại lên trình duyệt web của người dùng.

Cách thức hoạt động của DoS trên WordPress

Theo nghiên cứu, một người đơn giản có thể buộc tập tin load-scripts.php truy vấn tất cả các file JavaScript có thể có ( ví dụ 181 tệp lệnh) trong một lần bằng cách đưa tên của chúng vào URL ở trên, làm cho website mục tiêu chậm lại do tốn nhiều CPU và lưu lượng máy chủ.

“Có một danh sách cụ thể ($ wp_scripts), có thể yêu cầu bởi người dùng như là một phần của tham số load []. Nếu giá trị được yêu cầu tồn tại, máy chủ sẽ thực hiện hành động đọc I/O cho một đường dẫn xác định gắn liền với giá trị được cung cấp từ người sử dụng “, Tawily nói.

Although a single request would not be enough to take down the whole website for its visitors, Tawily used a proof-of-concept (PoC) python script, doser.py, which makes large numbers of concurrent requests to the same URL in an attempt to use up as much of the target servers CPU resources as possible and bring it down.

Mặc dù một yêu cầu duy nhất không đủ để đánh sập toàn bộ trang web cho các khách truy cập, Tawily đã sử dụng một mã lệnh khai thác (PoC) viết bằng python với tên doser.py tạo ra một số lượng lớn các yêu cầu đồng thời tới cùng một URL nhằm sử dụng nhiều nhất có thể tài nguyên CPU của máy chủ mục tiêu và làm sập nó.

The Hacker News đã xác minh tính xác thực khả năng của DoS, mã khai thác này đã đánh sập một trong những website WordPress demo chạy trên một máy chủ VPS cỡ trung.

“Cần phải nhắc lại rằng load-scripts.php không đòi bất kỳ chứng thực nào, một người dùng ẩn danh cũng có thể làm được điều đó. Sau gần 500 yêu cầu, máy chủ không trả lời nữa, hoặc trả về trạng thái mã lỗi 502/503/504”, Tawily nói.

Tuy nhiên, tấn công từ một máy duy nhất, với một kết nối 40 Mbps, không đủ để đánh sập một trang demo khác chạy trên một máy chủ chuyên dụng với khả năng xử lý và bộ nhớ cao. Nhưng điều đó không có nghĩa là lỗi này không xuất hiện với các website WordPress chạy trên một máy chủ mạnh, vì sự tấn công trên cấp độ ứng dụng này đòi hỏi ít gói dữ liệu và băng thông hơn rất nhiều để đạt được mục tiêu tương tự (đánh sập một trang web).

Vì vậy, những kẻ tấn công với nhiều băng thông hơn hoặc chỉ một vài chương trình có thể khai thác lỗi này và nhắm tới các trang web Wordpress lớn và phổ biến.

Không có bản sửa lỗi sẵn

Cùng với việc tiết lộ đầy đủ, Tawily cũng đã cung cấp một video minh họa khi WordPress bị tấn công từ chối dịch vụ (Denial of Service). Bạn có thể xem video để thấy được cuộc tấn công này diễn ra như thế nào.

Do lỗi DoS nằm ngoài phạm vi của chương trình WordPress bug bounty, Tawily có trách nhiệm báo cáo lỗi DoS này cho nhóm WordPress thông qua cơ sở HackerOne.

Tuy nhiên, công ty từ chối thừa nhận vấn đề này, nói rằng loại lỗi này “thực sự cần được giảm thiểu ở cấp máy chủ hay cấp độ mạng hơn là mức ứng dụng”, và rằng điều này nằm ngoài sự kiểm soát của WordPress.

Nguy cơ này có vẻ nghiêm trọng vì WordPress chiếm gần 29% thế giới web, khiến hàng triệu website có thể bị tấn công bởi hackers và làm cho người dùng không thể sử dụng được những trang web này nữa.

Đối với các trang web không có khả năng cung cấp các dịch vụ cho phép chống lại cuộc tấn công DDoS ở mức ứng dụng, nhà nghiên cứu đã cung cấp một phiên bản phân tách máy chủ của WordPress, bao gồm việc giảm thiểu nguy cơ này.

Tuy nhiên, THN không khuyên người dùng cài đặt CMS đã sửa đổi, ngay cả khi nó là từ một nguồn đáng tin cậy vì nó khác với nhà phát hành chính.

Nhà nghiên cứu cũng đã phát hành một tập lệnh bash đơn giản để khắc phục sự cố, trong trường hợp bạn đã cài đặt WordPress, bạn có thể tham khảo tại: https://github.com/Quitten/WordPress/blob/master/wp-dos-patch.sh

Theo THN