Một lỗ hổng thực thi mã từ xa (RCE) nghiêm trọng đã được phát hiện trong Microsoft SharePoint, cho phép kẻ tấn công thực thi mã tùy ý thông qua nội dung XML độc hại được nhúng trong các thành phần web part. Lỗ hổng này ảnh hưởng đến quy trình deserialization của các thuộc tính web part, đặt ra rủi ro bảo mật đáng kể cho các tổ chức đang sử dụng các phiên bản SharePoint dễ bị tấn công.
Nguồn Gốc Kỹ Thuật của Lỗ Hổng
Lỗ hổng bắt nguồn từ quy trình phân tích kiểm soát web part của SharePoint, đặc biệt trong phương thức Microsoft.SharePoint.WebPartPages.WebPart.AddParsedSubObject(). Vector tấn công bắt đầu khi hệ thống xử lý nội dung XML bên trong các điều khiển web part, kích hoạt một chuỗi deserialization nguy hiểm cuối cùng dẫn đến việc thực thi mã từ xa.
Quy Trình Phân Tích Web Part và Điểm Yếu
Khi một web part chứa nội dung XML, phương thức AddParsedSubObject() sẽ xử lý văn bản LiteralControl và phân tích cú pháp nó dưới dạng XML. Nội dung được phân tích cú pháp này sau đó trải qua quá trình deserialization thông qua WebPart.ParseXml(), sử dụng XmlSerializer để xây dựng lại đối tượng web part trước khi thực hiện các tác vụ sau deserialization.
Chuỗi Deserialization Nguy Hiểm
Điểm yếu cốt lõi nằm ở phương thức WebPart.GetAttachedProperties(). Tại đây, SharePoint thực hiện deserialization trường _serializedAttachedPropertiesShared bằng cách sử dụng lớp SPObjectStateFormatter. Trình định dạng này, hoạt động như phiên bản của SharePoint cho ObjectStateFormatter, cuối cùng sẽ sử dụng BinaryFormatter cho các hoạt động deserialization. Việc sử dụng BinaryFormatter trong ngữ cảnh này là một nguy cơ bảo mật nghiêm trọng nếu không được kiểm soát chặt chẽ, vì nó có thể được lạm dụng để thực thi mã khi deserializing dữ liệu không đáng tin cậy.
SPSerializationBinder và Gadget Khai Thác
Lỗ hổng trở nên khai thác được thông qua SharePoint’s SPSerializationBinder, một thành phần kiểm soát quá trình deserialization các đối tượng. SPSerializationBinder cho phép deserialization nhị phân của bất kỳ lớp nào được liệt kê trong danh sách SafeControls. Danh sách SafeControls là một cơ chế bảo mật của SharePoint nhằm giới hạn các loại đối tượng có thể được deserialized một cách an toàn. Tuy nhiên, nếu một lớp trong danh sách SafeControls có điểm yếu trong quá trình khởi tạo hoặc deserialization của chính nó, nó có thể bị lạm dụng.
Kẻ tấn công có thể tận dụng lớp Microsoft.SharePoint.ApplicationPages.SPThemes. Lớp này triển khai giao diện DataSet và sử dụng hàm tạo serialization của nó, khiến nó trở thành một gadget lý tưởng cho việc khai thác. Một gadget trong ngữ cảnh deserialization là một đoạn mã hoặc một lớp tồn tại trong ứng dụng mục tiêu mà kẻ tấn công có thể kích hoạt thông qua dữ liệu serialization độc hại để thực hiện hành động ngoài ý muốn, chẳng hạn như thực thi mã.
Vector Tấn Công và Quy Trình Khai Thác
Cấu Trúc Web Part Độc Hại
Để vũ khí hóa lỗ hổng này, kẻ tấn công tạo ra các web part độc hại chứa XML được thiết kế đặc biệt với các payload đã được serialize nhúng trong phần tử AttachedPropertiesShared. Cấu trúc web part độc hại bao gồm một payload được mã hóa base64. Khi được xử lý bởi các cơ chế deserialization của SharePoint, payload này sẽ kích hoạt quá trình thực thi mã tùy ý trên máy chủ.
Điểm Cuối Tấn Công (Endpoints)
Lỗ hổng có thể được khai thác thông qua nhiều điểm cuối khác nhau, bao gồm dịch vụ /_vti_bin/webpartpages.asmx sử dụng hành động SOAP ConvertWebPartFormat. Kẻ tấn công có thể gửi các payload XML độc hại thông qua các yêu cầu HTTP POST. Điều này làm cho việc khai thác từ xa trở nên khả thi mà không yêu cầu quyền truy cập đã xác thực vào giao diện quản trị SharePoint. Khả năng khai thác từ xa không cần xác thực là một yếu tố làm tăng mức độ nghiêm trọng của lỗ hổng này, vì nó mở rộng phạm vi tấn công cho nhiều đối tượng hơn.
Một ví dụ về cấu trúc HTTP POST request có thể như sau (lưu ý: đây là minh họa cấu trúc, không phải mã khai thác thực tế):
POST /_vti_bin/webpartpages.asmx HTTP/1.1
Host: your-sharepoint-server.com
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://schemas.microsoft.com/sharepoint/webpartpages/ConvertWebPartFormat"
Content-Length: [Calculated Length]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConvertWebPartFormat xmlns="http://schemas.microsoft.com/sharepoint/webpartpages">
<webPart>
<WebPart xmlns="http://schemas.microsoft.com/sharepoint/v3/SharePointWebPart.asmx">
<MetaData>
<Type name="Microsoft.SharePoint.WebPartPages.WebPart" />
<Assembly name="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
</MetaData>
<Properties>
<Property name="Title" type="string">Malicious Web Part</Property>
<Property name="AttachedPropertiesShared" type="string">
<![CDATA[
// Base64-encoded serialized payload goes here
// Example: <wz:BinarySerializedObject>[Base64Payload]</wz:BinarySerializedObject>
]]>
</Property>
</Properties>
</WebPart>
</webPart>
</ConvertWebPartFormat>
</soap:Body>
</soap:Envelope>
Trong cấu trúc trên, phần <![CDATA[...]]> bên trong thẻ AttachedPropertiesShared là nơi kẻ tấn công nhúng payload đã được serialize và mã hóa base64. Khi SharePoint xử lý web part này, nó sẽ cố gắng deserialization nội dung này, kích hoạt chuỗi deserialization độc hại dẫn đến thực thi mã.
Tác Động của Việc Khai Thác Thành Công
Tác động của việc khai thác thành công là rất nghiêm trọng, vì nó cấp cho kẻ tấn công quyền kiểm soát hoàn toàn máy chủ SharePoint bị ảnh hưởng. Điều này bao gồm khả năng truy cập dữ liệu nhạy cảm của công ty, sửa đổi cấu hình SharePoint, và tiềm năng mở rộng tấn công sang các hệ thống khác trong cơ sở hạ tầng mạng. Một máy chủ SharePoint bị kiểm soát hoàn toàn có thể trở thành điểm khởi đầu cho các cuộc tấn công leo thang đặc quyền, cài đặt mã độc, hoặc trích xuất dữ liệu quy mô lớn, gây ra thiệt hại nghiêm trọng về tài chính và danh tiếng.
Biện Pháp Giảm Thiểu và Phòng Ngừa
Lỗ hổng này đã được báo cáo là đã vá trong các bản cập nhật SharePoint gần đây. Tuy nhiên, mã định danh CVE cụ thể và phạm vi phiên bản bị ảnh hưởng vẫn chưa rõ ràng trong nội dung được cung cấp.
Các tổ chức nên thực hiện các biện pháp sau để bảo vệ hệ thống SharePoint của mình:
- Cập nhật ngay lập tức: Các tổ chức nên cập nhật ngay lập tức các cài đặt SharePoint của mình lên các phiên bản mới nhất hiện có. Việc áp dụng các bản vá bảo mật là biện pháp quan trọng nhất để khắc phục các lỗ hổng đã biết.
- Bảo vệ cấp độ mạng: Triển khai các biện pháp bảo vệ cấp độ mạng để hạn chế quyền truy cập vào các dịch vụ web SharePoint. Điều này có thể bao gồm việc sử dụng tường lửa ứng dụng web (WAF), kiểm soát truy cập dựa trên địa chỉ IP, hoặc hạn chế truy cập từ các mạng không tin cậy.
- Đánh giá bảo mật định kỳ: Thực hiện các đánh giá bảo mật thường xuyên và kiểm tra chuyên sâu (penetration testing) để xác định các lỗ hổng tiềm ẩn trong môi trường SharePoint.
- Giám sát và phát hiện: Thiết lập hệ thống giám sát liên tục để phát hiện các sửa đổi web part đáng ngờ hoặc các hoạt động bất thường khác trên máy chủ SharePoint. Việc giám sát nhật ký và lưu lượng mạng có thể giúp phát hiện sớm các dấu hiệu khai thác.
- Nguyên tắc đặc quyền tối thiểu: Đảm bảo rằng tất cả người dùng và tài khoản dịch vụ chỉ có các đặc quyền tối thiểu cần thiết để thực hiện công việc của họ. Điều này giúp hạn chế thiệt hại nếu một tài khoản bị xâm phạm.
Việc kết hợp các biện pháp này sẽ tạo thành một chiến lược bảo mật toàn diện, giúp bảo vệ môi trường SharePoint khỏi các cuộc tấn công khai thác lỗ hổng deserialization và các mối đe dọa khác.










