Lỗ hổng CVE Greenshot nghiêm trọng: Khẩn cấp vá để tránh RCE

Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong tiện ích chụp màn hình phổ biến Greenshot, cho phép kẻ tấn công cục bộ thực thi mã độc tùy ý trong tiến trình ứng dụng đáng tin cậy. Lỗ hổng CVE-2025-59050 này ảnh hưởng đến các phiên bản Greenshot lên đến 1.3.300 và đã được vá trong phiên bản 1.3.301 phát hành vào ngày 16 tháng 9 năm 2025. Đây là một lỗ hổng CVE tiềm ẩn nguy cơ cao đối với người dùng.
Phân tích kỹ thuật Lỗ hổng CVE-2025-59050 trong Greenshot
Bản chất của lỗ hổng giải tuần tự hóa
Lỗ hổng CVE-2025-59050 xuất phát từ việc Greenshot xử lý không an toàn các cơ chế giao tiếp liên tiến trình của Windows thông qua hệ thống thông điệp WM_COPYDATA. Thông điệp này thường được sử dụng để truyền một lượng nhỏ dữ liệu giữa các ứng dụng trên cùng một máy tính. Tuy nhiên, Greenshot đã triển khai việc xử lý thông điệp này một cách thiếu an toàn.
Cụ thể, ứng dụng trực tiếp giải tuần tự hóa (deserialize) dữ liệu do kẻ tấn công kiểm soát bằng phương thức BinaryFormatter.Deserialize() nguy hiểm mà không có bất kỳ xác thực phù hợp nào. Phương thức BinaryFormatter trong .NET Framework nổi tiếng là không an toàn khi được sử dụng với dữ liệu đầu vào không đáng tin cậy. Nó cho phép kẻ tấn công xây dựng một chuỗi đối tượng (gadget chain) để gọi các phương thức tùy ý trong quá trình giải tuần tự hóa, dẫn đến khả năng thực thi mã từ xa (RCE) trên hệ thống.
Nghiên cứu của chuyên gia bảo mật RipFrantại đây chỉ ra rằng, khi Greenshot xử lý các thông điệp WM_COPYDATA trong hàm ghi đè WndProc của nó, ứng dụng sẽ sao chép các byte đến từ bất kỳ tiến trình cục bộ nào và ngay lập tức chuyển chúng cho BinaryFormatter để giải tuần tự hóa. Quá trình này diễn ra trước khi bất kỳ kiểm tra ủy quyền nào được thực hiện, có nghĩa là mã độc có thể được thực thi bất kể xác minh tư cách thành viên kênh. Đây là một điểm yếu nghiêm trọng của lỗ hổng CVE-2025-59050.
Vector và cơ chế khai thác
Vector tấn công yêu cầu quyền truy cập cục bộ vào hệ thống nhưng không cần đặc quyền nâng cao (ví dụ: quyền quản trị viên). Điều này đặc biệt đáng lo ngại đối với các môi trường doanh nghiệp, nơi kẻ tấn công có thể đã có một chỗ đứng ban đầu trên các máy trạm thông qua các phương tiện khác (ví dụ: tấn công lừa đảo, lây nhiễm mã độc). Bất kỳ tiến trình cục bộ nào chạy ở mức độ toàn vẹn tương thích đều có thể khai thác lỗ hổng CVE này bằng cách gửi các thông điệp được tạo sẵn đến cửa sổ chính của Greenshot.
Điều làm cho lỗ hổng bảo mật này đặc biệt nguy hiểm là mã độc được thực thi trong tiến trình Greenshot.exe hợp pháp, thay vì tạo các tiến trình mới. Phương pháp thực thi trong tiến trình này cho phép kẻ tấn công chạy các payload hoàn toàn trong bộ nhớ mà không chạm vào hệ thống tệp, làm cho việc phát hiện trở nên khó khăn hơn đáng kể đối với các giải pháp bảo mật truyền thống tập trung vào các mối đe dọa dựa trên tệp.
Một minh chứng khái niệm (PoC) đã được cung cấp, cho thấy cách kẻ tấn công có thể định vị cửa sổ của Greenshot, xây dựng một payload được tuần tự hóa và kích hoạt thực thi mã tùy ý sử dụng các lệnh gọi API SendMessage. Trong PoC, exploit đã thành công khởi chạy cmd.exe với Greenshot.exe làm tiến trình cha, chứng minh khả năng thực thi mã từ xa.
Ví dụ về cách kẻ tấn công có thể định vị cửa sổ của Greenshot và gửi payload:
// Pseudocode for exploitation
// 1. Locate Greenshot's main window handle
IntPtr targetWindowHandle = FindWindow("Greenshot", null); // "Greenshot" is the window class or title
if (targetWindowHandle != IntPtr.Zero)
{
// 2. Craft a malicious .NET serialized payload (gadget chain)
// This payload, when deserialized by BinaryFormatter, will execute arbitrary code.
byte[] serializedPayload = // ... craft malicious payload, e.g., to spawn cmd.exe ...
// 3. Prepare the COPYDATASTRUCT
COPYDATASTRUCT cds = new COPYDATASTRUCT();
cds.dwData = IntPtr.Zero; // Can be used as an identifier, but often ignored in RCE
cds.cbData = serializedPayload.Length; // Size of the payload in bytes
cds.lpData = Marshal.AllocHGlobal(serializedPayload.Length); // Pointer to the payload
Marshal.Copy(serializedPayload, 0, cds.lpData, serializedPayload.Length); // Copy payload to unmanaged memory
// 4. Send the WM_COPYDATA message
// The Greenshot process will receive this message and deserialize cds.lpData
SendMessage(targetWindowHandle, WM_COPYDATA, IntPtr.Zero, ref cds);
// 5. Clean up allocated memory
Marshal.FreeHGlobal(cds.lpData);
}
Đây là một ví dụ điển hình về việc lạm dụng tính năng giao tiếp liên tiến trình dẫn đến một lỗ hổng CVE nghiêm trọng.
Tác động bảo mật và Khuyến nghị khắc phục
Ảnh hưởng đến kiểm soát ứng dụng và phát hiện
Việc thực thi mã độc trong tiến trình Greenshot.exe cho phép các kỹ thuật trốn tránh tinh vi chống lại các chính sách kiểm soát ứng dụng như AppLocker hoặc Windows Defender Application Control (WDAC). Các chính sách này chủ yếu giám sát việc khởi chạy các tệp thực thi mới và kiểm soát những gì được phép chạy trên hệ thống. Tuy nhiên, khi mã độc được thực thi trong một tiến trình hợp pháp đã chạy, các biện pháp kiểm soát này thường bị qua mặt.
Hơn nữa, khả năng chạy payload hoàn toàn trong bộ nhớ mà không ghi vào hệ thống tệp khiến việc phát hiện trở nên cực kỳ khó khăn đối với các giải pháp bảo mật truyền thống, bao gồm cả phần mềm diệt virus (AV) và các hệ thống phát hiện xâm nhập (IDS/IPS) dựa trên chữ ký tệp. Kẻ tấn công có thể tiến hành các hoạt động khác như leo thang đặc quyền cục bộ, trích xuất dữ liệu nhạy cảm hoặc duy trì sự hiện diện lâu dài mà không tạo ra dấu vết đáng kể, tăng cường rủi ro bảo mật cho tổ chức.
Khuyến nghị cập nhật bản vá khẩn cấp
Nhóm phát triển Greenshot đã nhanh chóng phát hành phiên bản 1.3.301 để giải quyết lỗ hổng CVE-2025-59050 này. Bản sửa lỗi tập trung vào việc loại bỏ hoặc thay thế việc sử dụng BinaryFormatter.Deserialize() không an toàn khi xử lý dữ liệu từ thông điệp WM_COPYDATA. Điều này được thực hiện bằng cách triển khai các kiểm soát bảo mật và xác thực dữ liệu đầu vào phù hợp cho việc xử lý giao tiếp liên tiến trình, hoặc chuyển sang các cơ chế giải tuần tự hóa an toàn hơn.
Để đảm bảo an toàn hệ thống, người dùng và tổ chức được khuyến nghị mạnh mẽ cập nhật bản vá ngay lập tức. Hãy tải xuống phiên bản mới nhất chỉ từ trang web chính thức của Greenshot tại getgreenshot.org. Việc này giúp đảm bảo rằng bạn nhận được phiên bản đã được vá lỗi hợp pháp, tránh các phiên bản giả mạo có thể chứa mã độc và gây ra các mối đe dọa mạng mới.
Các tổ chức nên ưu tiên cập nhật bản vá này trong chu kỳ quản lý bản vá của mình, đặc biệt là do tiềm năng leo thang đặc quyền và bỏ qua các chính sách bảo mật mà lỗ hổng CVE này mang lại. Việc bỏ qua việc vá lỗi có thể dẫn đến việc hệ thống bị xâm nhập trái phép và gây ra hậu quả nghiêm trọng. Thông tin chi tiết về lỗ hổng CVE-2025-59050 có thể được tìm thấy trên Cổng thông tin NVD của NIST tại nvd.nist.gov, nơi cung cấp thông tin toàn diện về các lỗ hổng bảo mật công khai.









