CVE-2026-103604
WysokieCVSS 8.7Streszczenie
W bibliotece bc-csharp (Bouncy Castle dla .NET) przed wersją 2.7.0 występuje nieefektywna złożoność algorytmiczna w konwersji nazw wyróżniających X.509 (X509Name.ToString i IetfUtilities.ValueToString). Atakujący może zdalnie, bez uwierzytelnienia, wywołać odmowę usługi poprzez wyczerpanie CPU, dostarczając certyfikat, CRL, żądanie certyfikatu lub inną strukturę, której nazwa zawiera długą wartość atrybutu wymagającą escapowania (np. przecinki, spacje wiodące/końcowe), powodując kwadratowy wzrost czasu przetwarzania.
Ocena ryzyka
Aplikacje, które konwertują takie nazwy na ciągi znaków (np. do logowania, wyświetlania lub porównywania w walidacji ścieżki PKIX), mogą zostać przeciążone, co prowadzi do odmowy usługi. Może to sparaliżować systemy przetwarzające certyfikaty.
Rekomendacja
Update the Bouncy Castle for .NET (bc-csharp) library to version 2.7.0 or later. Restrict processing of untrusted certificates and structures if updating is not possible.
Inne podatności w Bouncy Castle (bc-csharp)
Zobacz wszystkie- CVE-2026-63570Wysokie
Podatność w bibliotece bc-csharp (Bouncy Castle dla .NET) w metodzie Pkcs12Store.GetCertificateChain polega na pętli bez osiągalnego warunku wyjścia. Atakujący może dostarczyć spreparowany plik PKCS#12, w którym łańcuch certyfikatów tworzy cykl (np. dwa certyfikaty wskazujące nawzajem swoje klucze publiczne przez AuthorityKeyIdentifier), co powoduje zawieszenie aplikacji i wyczerpanie pamięci aż do OutOfMemoryException.
- CVE-2026-103603Wysokie
W bibliotece bc-csharp (Bouncy Castle dla .NET) przed wersją 2.7.0 występuje podatność w kodzie podpisów HSS/LMS (HssPublicKeyParameters, HssSignature) polegająca na alokacji pamięci o nadmiernym rozmiarze. Atakujący może dostarczyć klucz publiczny HSS z nadmierną liczbą poziomów (L), co prowadzi do alokacji tablicy o rozmiarze L-1 i wyczerpania pamięci (nawet do ~17 GB) lub OutOfMemoryException.
- CVE-2026-103602Wysokie
W bibliotece bc-csharp (Bouncy Castle dla .NET) przed wersją 2.7.0 występuje nieprawidłowa walidacja certyfikatów w PkixNameConstraintValidator. Atakujący kontrolujący lub mogący uzyskać certyfikaty od pośredniego CA z ograniczeniami nazw może spowodować akceptację certyfikatów dla adresów e-mail, nazw DNS lub URI, które znajdują się w wykluczonych poddrzewach, poprzez nazwy kończące się kropką (np. rfc822Name, dNSName, uniformResourceIdentifier), ponieważ porównanie nie usuwa końcowej kropki (root-label) zgodnie z RFC 1034.
- CVE-2026-103601Wysokie
W bibliotece bc-csharp (Bouncy Castle dla .NET) przed wersją 2.7.0 występuje podatność w trybach AEAD CCM (CcmBlockCipher) i DSTU 7624 CCM (KCcmBlockCipher) polegająca na ujawnieniu niezweryfikowanego tekstu jawnego. Odszyfrowywanie zapisuje odzyskany tekst jawny do bufora wyjściowego dostarczonego przez wywołującego przed sprawdzeniem znacznika uwierzytelnienia i pozostawia go tam w przypadku niepowodzenia weryfikacji, co pozwala atakującemu na uzyskanie odszyfrowań wybranych szyfrogramów poprzez sfałszowane wiadomości.
- CVE-2026-103600Wysokie
W bibliotece bc-csharp (Bouncy Castle dla .NET) przed wersją 2.7.0 występuje niekontrolowana rekurencja w parserze ASN.1 (Asn1InputStream, Asn1StreamParser). Zdalny, nieuwierzytelniony atakujący może wywołać odmowę usługi poprzez spreparowane kodowanie ASN.1 z głęboko zagnieżdżonymi elementami konstruowanymi (np. SEQUENCE w SEQUENCE), ponieważ każdy poziom zagnieżdżenia jest parsowany przez kolejne wywołanie rekurencyjne bez ograniczenia głębokości. Około 2000 poziomów (8 KB DER) wystarcza do wyczerpania stosu wątku i wywołania StackOverflowException, którego .NET nie może przechwycić, co kończy się zakończeniem całego procesu.
Oryginalny opis (angielski, źródło NVD)
Inefficient algorithmic complexity in X.509 distinguished name string conversion (X509Name.ToString and IetfUtilities.ValueToString) in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows a remote unauthenticated attacker to cause a denial of service through CPU exhaustion via a certificate, CRL, certification request or other structure whose name contains a long attribute value made up of characters that must be escaped, such as commas, or of leading or trailing spaces, because each escaping backslash was inserted into the buffer being scanned, so the work grew quadratically with the length of the value. Applications are exposed when they convert such a name to a string, for example to log or display it, or compare it with IetfUtilities.RdnAreEqual, as PKIX path validation does for directoryName name constraints.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

