CVE-2026-48511
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 14 - wyżej niż 14% wszystkich znanych CVE
Streszczenie
MessagePack dla C# ma podatność w metodzie Deserializacji ExpandoObjectFormatter, która może prowadzić do znacznego obciążenia CPU i pamięci w przypadku dużych map kontrolowanych przez atakującego. Problem ten występuje przed wersjami 2.5.301 i 3.1.7.
Ocena ryzyka
Organizacje mogą doświadczyć degradacji wydajności aplikacji z powodu nadmiernego obciążenia CPU i pamięci, co może prowadzić do awarii usług lub opóźnień w działaniu.
Rekomendacja
Zaleca się aktualizację do wersji 2.5.301 lub 3.1.7, aby usunąć tę podatność i poprawić bezpieczeństwo aplikacji.
Inne podatności w MessagePack for C#
Zobacz wszystkie- CVE-2026-48509Krytyczne
MessagePack dla C# przed wersjami 2.5.301 i 3.1.7 używa domyślnych opcji serializacji, które mogą prowadzić do ataków typu denial-of-service. Domyślny konstruktor MessagePackInputFormatter() jest niebezpieczny, ponieważ może narażać aplikacje na ataki kolizji haszy w modelach przypominających słowniki.
- CVE-2026-48517Wysokie
W bibliotece MessagePack dla C# występuje podatność związana z deserializacją typów, która nie sprawdza rekurencyjnie typów elementów tablicy ani argumentów typów generycznych. To może prowadzić do sytuacji, w której niebezpieczny typ, który powinien być zablokowany, może zostać zdeserializowany, jeśli jest opakowany w tablicę lub typ generyczny.
- CVE-2026-48516Wysokie
W bibliotece MessagePack dla C# występuje podatność, która dotyczy konstrukcji wewnętrznego słownika z domyślnym porównywaczem równości. Wersje przed 2.5.301 i 3.1.7 są narażone na atak typu denial of service z wykorzystaniem kolizji haszów.
- CVE-2026-48515Wysokie
MessagePack dla C# przed wersjami 2.5.301 i 3.1.7 ma podatność, która pozwala na alokację dużych tablic wielowymiarowych przed walidacją danych. W wyniku tego, mały ładunek może zadeklarować duże wymiary, co prowadzi do nieefektywnego wykorzystania pamięci.
- CVE-2026-48514Wysokie
W bibliotece MessagePack dla C# przed wersjami 2.5.301 i 3.1.7 występuje podatność, która pozwala na odczytanie długości bajtów kontrolowanej przez atakującego z ładunku rozszerzenia. W wyniku tego, możliwe jest przydzielenie dużej tablicy T[] bez odpowiedniej walidacji, co może prowadzić do problemów z alokacją pamięci.
- CVE-2026-48513Wysokie
W bibliotece MessagePack dla C# przed wersjami 2.5.301 i 3.1.7 występuje podatność związana z deserializacją unii, która nie przestrzega ograniczenia głębokości obiektów. Deserializatory generowane w czasie wykonywania nie wywołują odpowiednich kroków zabezpieczających, co prowadzi do potencjalnych problemów z bezpieczeństwem.
- CVE-2026-48512Wysokie
MessagePack for C# przed wersjami 2.5.301 i 3.1.7 zawiera wielokrotne ścieżki rekurencyjne w komponentach konwersji JSON, które nie egzekwują limitu głębokości. Te ścieżki mogą prowadzić do wyczerpania stosu procesora i wywołania nieuchwytnego wyjątku StackOverflowException.
- CVE-2026-48510Wysokie
MessagePack dla C# ma podatność, która pozwala na nieprawidłowe alokacje pamięci podczas dekompresji danych Lz4Block lub Lz4BlockArray. Przed wersjami 2.5.301 i 3.1.7, nie weryfikowano poprawności danych skompresowanych przed alokacją buforów wyjściowych.
- CVE-2026-48506Wysokie
MessagePack dla C# ma podatność, która pozwala na rekurencyjne zstępowanie w głąb zagnieżdżonych tablic i map bez odpowiednich kontroli głębokości. Może to prowadzić do nieograniczonej rekurencji i wyjątku StackOverflow.
- CVE-2026-48502Wysokie
W bibliotece MessagePack dla C# przed wersjami 2.5.301 i 3.1.7, metoda MessagePackReader.ReadDateTime() może alokować pamięć na stosie na podstawie długości rozszerzenia kontrolowanej przez atakującego. W przypadku analizy rozszerzenia znaczników czasowych, długość ciała rozszerzenia nie jest weryfikowana przed alokacją pamięci, co może prowadzić do wystąpienia wyjątku StackOverflowException.
Oryginalny opis (angielski, źródło NVD)
MessagePack for C# is a MessagePack serializer for C#. Prior to 2.5.301 and 3.1.7, ExpandoObjectFormatter.Deserialize populates System.Dynamic.ExpandoObject by calling IDictionary<string, object>.Add for each map entry. ExpandoObject internally maintains member names in array-like structures, so inserting many distinct keys can require repeated linear scans and array copies. For large attacker-controlled maps, this produces quadratic CPU and allocation behavior. The issue is especially surprising because ExpandoObjectResolver.Options is configured with MessagePackSecurity.UntrustedData, but collision-resistant dictionary comparers cannot protect ExpandoObject insertion internals. This vulnerability is fixed in 2.5.301 and 3.1.7.

