CVE-2024-48924 in MessagePack-CSharp
Tóm tắt
Bởi VulDB • 06/06/2026
### Tác động
Khi thư viện này được sử dụng để giải serialize (deserialize) dữ liệu MessagePack từ một nguồn không đáng tin cậy, sẽ có nguy cơ xảy ra cuộc tấn công làm gián đoạn dịch vụ (DoS) bởi kẻ gửi dữ liệu được tạo ra nhằm gây ra va chạm băm (hash collisions), dẫn đến việc tiêu thụ CPU lớn bất thường so với kích thước của dữ liệu đang được giải serialize.
Sự cố này tương tự như [lời cảnh báo trước đây](https://github.com/MessagePack-CSharp/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf), vốn đã cung cấp một bản sửa lỗi không đầy đủ cho phần va chạm băm của lỗ hổng.
### Bản vá (Patches)
Các bước sau đây là bắt buộc để giảm thiểu rủi ro này.
1. Nâng cấp lên phiên bản thư viện có sẵn bản sửa lỗi. 2. Xem lại các bước trong [lời cảnh báo trước đó](https://github.com/MessagePack-CSharp/MessagePack-CSharp/security/advisories/GHSA-7q36-4xx7-xcxf) để đảm bảo ứng dụng của bạn đã được cấu hình để xử lý dữ liệu không đáng tin cậy.
### Giải pháp tạm thời (Workarounds)
Nếu việc nâng cấp MessagePack lên phiên bản có bản vá không phải là lựa chọn khả thi cho bạn, bạn có thể áp dụng giải pháp tạm thời thủ công như sau:
1. Khai báo một lớp dẫn xuất từ `MessagePackSecurity`. 2. Ghi đè phương thức `GetHashCollisionResistantEqualityComparer` để cung cấp hàm băm chống va chạm do chính bạn định nghĩa và tránh gọi `base.GetHashCollisionResistantEqualityComparer()`. 3. Cấu hình đối tượng `MessagePackSerializerOptions` với một thể hiện của lớp dẫn xuất bằng cách gọi `WithSecurity` trên một đối tượng options đã tồn tại. 4. Sử dụng đối tượng tùy chỉnh này cho tất cả các thao tác giải serialize (deserialization). Điều này có thể thực hiện bằng cách đặt thuộc tính tĩnh `MessagePackSerializer.DefaultOptions`, nếu bạn sử dụng các phương thức dựa vào mặc định này, và/hoặc bằng cách truyền rõ ràng đối tượng options vào bất kỳ phương thức `Deserialize` nào.
### Tài liệu tham khảo
- Tìm hiểu thêm về các biện pháp bảo mật tốt nhất khi đọc dữ liệu không đáng tin cậy với [MessagePack 1.x](https://github.com/MessagePack-CSharp/MessagePack-CSharp/tree/v1.x#security) hoặc [MessagePack 2.x](https://github.com/MessagePack-CSharp/MessagePack-CSharp#security).
- Thảo luận của nhóm .NET về [các lỗ hổng va chạm băm trong cấu trúc `HashCode` của họ](https://github.com/GrabYourPitchforks/runtime/blob/threat_models/docs/design/security/System.HashCode.md).
### Thông tin thêm
Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào về lời cảnh báo này:
* [Bắt đầu thảo luận công khai](https://github.com/MessagePack-CSharp/MessagePack-CSharp/discussions)
* [Gửi email cho chúng tôi một cách riêng tư](mailto:[email protected])
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.