RCE Nguy hiểm: ToolShell Tấn Công SharePoint Khẩn Cấp

RCE Nguy hiểm: ToolShell Tấn Công SharePoint Khẩn Cấp

Các nhà nghiên cứu bảo mật từ Kaspersky đã công bố chi tiết về một chuỗi khai thác phức tạp mang tên “ToolShell”, đang tích cực nhắm mục tiêu vào các máy chủ Microsoft SharePoint nội bộ trên toàn cầu. Chiến dịch này tận dụng một chuỗi remote code execution (RCE) nguy hiểm không yêu cầu xác thực, bao gồm các lỗ hổng CVE-2025-49704CVE-2025-49706, cho phép kẻ tấn công chiếm toàn quyền kiểm soát các hệ thống dễ bị tổn thương.

Các cảnh báo từ nhiều công ty bảo mật và CERT quốc gia đã nhấn mạnh các cuộc tấn công diễn ra ở Ai Cập, Jordan, Nga, Việt Nam và Zambia, ảnh hưởng đến các lĩnh vực như chính phủ, tài chính, sản xuất, lâm nghiệp và nông nghiệp. Các cơ chế phát hiện chủ động của Kaspersky đã chặn các cuộc xâm nhập này, cung cấp dữ liệu từ xa để lập bản đồ phạm vi toàn cầu của chiến dịch mối đe dọa mạng này.

Tổng quan Chuỗi Khai thác ToolShell

Phân tích một bản ghi yêu cầu POST công khai đã xác nhận rằng nó gửi một payload độc hại đến điểm cuối “/_layouts/15/ToolPane.aspx”. Payload này nhúng các tham số “MSOtlPn_Uri” và “MSOtlPn_DWP”, kích hoạt các lỗ hổng deserialization mà không cần xác thực. Đây là cốt lõi của phương pháp tấn công remote code execution của ToolShell.

Chi tiết Kỹ thuật: Lỗ hổng Bỏ qua Xác thực (CVE-2025-49706)

Trọng tâm của ToolShell là CVE-2025-49706, một lỗ hổng giả mạo (spoofing vulnerability) trong phương thức PostAuthenticateRequestHandler của Microsoft.SharePoint.dll. Lỗ hổng này khai thác chế độ tích hợp IIS để bỏ qua xác thực.

Cơ chế Bỏ qua HTTP Referrer

Bằng cách đặt trường tiêu đề HTTP Referrer thành các đường dẫn như “/_layouts/SignOut.aspx” (không phân biệt chữ hoa chữ thường), kẻ tấn công có thể né tránh các kiểm tra truy cập trái phép. Logic xử lý trong handler ngăn chặn việc ném ngoại lệ, tạo điều kiện cho việc bỏ qua này.

Các Bản vá và Lỗ hổng Bypass Tiếp theo (CVE-2025-53771)

Bản vá ban đầu của Microsoft đã thêm một kiểm tra đường dẫn không phân biệt chữ hoa chữ thường cho “ToolPane.aspx”. Tuy nhiên, các nhà nghiên cứu đã vượt qua nó đơn giản bằng cách thêm dấu gạch chéo ở cuối đường dẫn (trailing slash), dẫn đến việc gán CVE-2025-53771.

Bản vá tiếp theo vào ngày 20 tháng 7 đã thực thi một danh sách các đường dẫn an toàn được phép (allowlist), bao gồm “/_layouts/15/SignOut.aspx” và các tệp tài nguyên như “init.js”. Điều này nhằm hạn chế các kỹ thuật bỏ qua dựa trên referrer, củng cố phòng thủ trước khả năng remote code execution.

Chi tiết Kỹ thuật: Lỗ hổng Deserialization RCE (CVE-2025-49704)

Bổ sung cho CVE-2025-49706, CVE-2025-49704 khai thác lỗi deserialization dữ liệu không đáng tin cậy trong phương thức GetPartPreviewAndPropertiesFromMarkup. Tại đây, tham số “MSOtlPn_DWP” nhúng mã đánh dấu WebPart để khởi tạo điều khiển ExcelDataSet từ Microsoft.PerformancePoint.Scorecards.Client.dll. Đây là một điểm mấu chốt khác cho việc đạt được remote code execution.

Khai thác qua thuộc tính CompressedDataTable

Thuộc tính CompressedDataTable của điều khiển này, được giải mã qua Base64 và giải nén, được đưa vào BinarySerialization.Deserialize. Điều này cho phép thực thi các phương thức tùy ý thông qua kỹ thuật ExpandedWrapper trong một tệp DataSet XML độc hại.

Kỹ thuật ExpandedWrapper và Bỏ qua XmlValidator

Tệp XML nhúng một kiểu dữ liệu nguy hiểm như “System.Collections.Generic.List1[[System.Data.Services.Internal.ExpandedWrapper2[…]]]”. Kỹ thuật này đã bỏ qua danh sách kiểu an toàn của XmlValidator bằng cách lồng nó trong một cấu trúc danh sách.

Hạn chế của Bản vá Ban đầu và CVE-2025-53770

Bản sửa lỗi ban đầu vào ngày 8 tháng 7 cho CVE-2025-49704 chỉ đánh dấu điều khiển ExcelDataSet là không an toàn trong web.config thông qua lớp AddExcelDataSetToSafeControls. Tuy nhiên, nó yêu cầu thực thi thủ công SharePoint Products Configuration Wizard – một bước bị bỏ qua trong hướng dẫn của Microsoft, khiến nhiều hệ thống vẫn dễ bị tấn công remote code execution.

Sự giảm thiểu không đầy đủ này đã thúc đẩy việc gán CVE-2025-53770 vào ngày 20 tháng 7. Bản vá này tăng cường XmlValidator với khả năng xác minh kiểu mạnh mẽ hơn để chặn các khai thác ExpandedWrapper trên tất cả các điều khiển, giải quyết vấn đề deserialization gốc mà không cần nâng cấp thủ công.

Tương đồng với CVE-2020-1147 và Tính đơn giản của Khai thác

Đáng chú ý, ToolShell có nhiều điểm tương đồng với CVE-2020-1147, một lỗ hổng RCE trước đây trong .NET FrameworkSharePoint từ năm 2020. Các khai thác gần như giống hệt nhau, chỉ khác biệt ở vị trí của đối tượng ExpandedWrapper trong một danh sách. Điều này khiến CVE-2025-53770 trở thành một bản vá cải tiến cho lỗ hổng cũ đó.

Kỹ thuật đảo ngược của Kaspersky đã tiết lộ rằng việc thay đổi một byte duy nhất trong yêu cầu có thể bỏ qua các bản sửa lỗi ban đầu, nhấn mạnh sự đơn giản và hiệu quả của chuỗi tấn công này. Bạn có thể tìm hiểu thêm chi tiết kỹ thuật về phát hiện này tại Securelist của Kaspersky.

Rủi ro và Khuyến nghị Bảo mật

Năm lỗ hổng này – CVE-2025-49704 (deserialization RCE), CVE-2025-49706 (bỏ qua xác thực), CVE-2025-53770 (sửa lỗi deserialization nâng cao), CVE-2025-53771 (bản vá xác thực chống bypass), và CVE-2020-1147 liên quan – đang gây ra rủi ro liên tục tương tự như ProxyLogon hoặc EternalBlue. Các khai thác công khai cho phép các cuộc tấn công với nỗ lực thấp, làm tăng nguy cơ remote code execution.

Các tổ chức phải ưu tiên cập nhật bản vá nhanh chóng, lý tưởng là trong vòng vài giờ sau khi phát hành. Việc triển khai bảo mật điểm cuối với khả năng phát hiện lỗ hổng zero-day là rất quan trọng để giảm thiểu các mối đe dọa chưa được vá. Để biết thêm thông tin về các lỗ hổng này, bạn có thể tham khảo cơ sở dữ liệu quốc gia về lỗ hổng bảo mật như NVD – CVE-2025-49704.