CVE-2026-17507
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 26 - wyżej niż 26% wszystkich znanych CVE
Streszczenie
W implementacji MLS (RFC 9420) w Bouncy Castle for Java przed wersją 1.86 wartość leaf_index typu uint32 jest przechowywana jako signed int, co pozwala na przesłanie wartości z ustawionym najstarszym bitem, która dekoduje się jako liczba ujemna. Nieprawidłowe porównanie w GroupKeySet.SecretTree.hasLeaf i Group.validateRemove pozwala na obejście sprawdzania przynależności, co może prowadzić do ataku DoS poprzez nieograniczony wzrost listy węzłów i wyczerpanie sterty JVM.
Ocena ryzyka
Pojedyncza mała wiadomość od członka grupy może wywołać odmowę usługi dla wszystkich innych członków grupy MLS, powodując wyczerpanie pamięci i zawieszenie aplikacji. Wpływa to na dostępność komunikacji grupowej.
Rekomendacja
Update Bouncy Castle for Java to version 1.86 or later. The new version interprets the value as unsigned via Integer.toUnsignedLong, rejecting out-of-range senders.
Inne podatności w Bouncy Castle for Java
Zobacz wszystkie- CVE-2026-97873Średnie
W Bouncy Castle for Java przed 1.86 (oraz LTS przed 2.73.13) rodziny PBES1 i PKCS#12 PBE używały liczby iteracji pochodzącej z niezaufanych danych wejściowych bez ograniczenia, co pozwalało na wymuszenie dowolnie dużego nakładu pracy. Poprawka odrzuca ujemną lub przekraczającą limit liczbę iteracji (domyślnie 10 000 000) na podstawie właściwości org.bouncycastle.pbe.max_iteration_count.
- CVE-2026-71890Wysokie
W Bouncy Castle for Java przed wersją 1.86 walidacja listy propozycji w zewnętrznym commicie MLS (RFC 9420) nie sprawdzała, czy usuwany liść faktycznie należy do dołączającego. Brak tej weryfikacji pozwalał każdej osobie posiadającej publiczne GroupInfo grupy na wysłanie commitu z propozycją Remove wskazującą dowolnego członka, co skutkowało jego usunięciem i przejęciem jego miejsca w drzewie ratchet. Poprawka wymusza zgodność poświadczenia usuwanego liścia z poświadczeniem nowego liścia dołączającego po obu stronach.
- CVE-2026-71888Wysokie
W Bouncy Castle for Java przed wersją 1.86 parser strumieniowy CMS AuthenticatedData akceptował komunikaty, w których pola digestAlgorithm i authAttrs były niespójne co do obecności uwierzytelnionych atrybutów. Parser podejmował decyzję na podstawie samego digestAlgorithm, przez co mógł zweryfikować MAC treści i zwrócić atrybuty przez getAuthAttrs() jako uwierzytelnione, mimo że MAC nigdy ich nie obejmował. Problem dotyczy również wersji LTS przed 2.73.13 oraz wydań FIPS (BC-FJA) przed odpowiednimi wersjami bcpkix-fips i bcutil-fips.
- CVE-2026-71887Wysokie
W Bouncy Castle for Java przed wersją 1.86 wysokopoziomowe API OpenPGP akceptowało podpis danych wykonany przez podklucz podpisujący, którego sygnatura wiążąca podklucz nie zawierała osadzonej sygnatury Primary Key Binding (cross-certification), gdy w tej sygnaturze pominięto podpakiet Key Flags. Metoda isSigningKey() dziedziczyła flagi SIGN_DATA z klucza głównego, podczas gdy verifyEmbeddedPrimaryKeyBinding() odczytywała tylko podpakiety sygnatury wiążącej i uznawała podklucz za niepodpisujący, przez co ten sam podklucz był jednocześnie zdolny do podpisywania i zwolniony z wymogu cross-certification.
- CVE-2026-18040Średnie
W Bouncy Castle for Java przed 1.86 implementacja HQC ujawniała dane pochodzące z klucza prywatnego przez dwa kanały side-channel: arytmetyka GF(2^8) używała tablic wyszukiwania indeksowanych elementami pola, a próbnik wsparcia o stałej wadze kończył skanowanie przy pierwszej kolizji i zapisywał pozycje pod sekretnym indeksem. Atakujący obserwujący zachowanie cache lub czas deszyfrowania może odzyskać informacje o kluczu prywatnym HQC.
- CVE-2026-18036Wysokie
W bibliotece Bouncy Castle for Java przed wersją 1.86 występuje podatność typu side-channel w implementacji NTRU. Redukcja tajnych wartości za pomocą operatora % w trzech funkcjach pomocniczych powoduje, że czas wykonania zależy od operandu (dzielenie przez zmienną), co może pozwolić atakującemu na odzyskanie informacji o kluczu prywatnym NTRU poprzez pomiar czasu.
- CVE-2025-12194Średnie
Podatność typu niekontrolowane zużycie zasobów (CWE-400) w bibliotece Bouncy Castle for Java (wersje FIPS 2.1.0–2.1.1 oraz LTS 2.73.0–2.73.7) dotyczy natywnych implementacji algorytmów kryptograficznych AES i SHA. Może prowadzić do nadmiernej alokacji pamięci lub innych zasobów podczas przetwarzania danych przez te komponenty.
- CVE-2023-33201Średnie
Bouncy Castle dla Javy przed wersją 1.74 jest podatny na atak typu LDAP injection. Podatność ta dotyczy aplikacji, które wykorzystują LDAP CertStore z Bouncy Castle do walidacji certyfikatów X.509, gdzie nazwa podmiotu certyfikatu jest wstawiana do filtru wyszukiwania LDAP bez odpowiedniego zabezpieczenia.
Oryginalny opis (angielski, źródło NVD)
In Bouncy Castle for Java before 1.86, the MLS implementation (org.bouncycastle.mls) holds RFC 9420's uint32 leaf_index in a signed int, so a wire value with the top bit set decodes to a negative number. That is a legitimate encoding rather than malformed input, and it must still decode, since the MLS interop test vectors round-trip the full range. GroupKeySet.SecretTree.hasLeaf and Group.validateRemove compared the decoded value directly against the tree's leaf count, and a signed comparison treats any negative int as less than a positive bound, so an out-of-range sender passed the membership check. In the hasLeaf case the SenderData of an unprotected PrivateMessage could then drive LeafIndex.directPath through NodeIndex.parent() arithmetic that never reaches the tree root, growing the resulting node list without bound until the JVM exhausted its heap. A single small message from any current group member could therefore deny service to every other member of the group. Both comparisons now interpret the value as unsigned via Integer.toUnsignedLong, rejecting an out-of-range sender however it was encoded; well-formed leaf indices are unaffected.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

