Biblioteka Bouncy Castle for Java zawiera podatność w mechanizmie składania fragmentów handshake protokołu DTLS, gdzie bufor jest alokowany na podstawie niezweryfikowanej 24-bitowej wartości długości. Umożliwia to zdalnemu, nieuwierzytelnionemu atakującemu wywołanie wyczerpania pamięci i niedostępności usługi (DoS).
▸ Pokaż oryginał (EN)
In Bouncy Castle for Java before 1.85, DTLS handshake reassembler allocates buffer from unchecked 24-bit length. This issue also affects Bouncy Castle for Java LTS before 2.73.12, and Bouncy Castle for Java FIPS (BC-FJA) before bctls-fips 1.0.24 (1.0.X series), 2.0.24 (2.0.X series) and 2.1.24 (2.1.X series).
Podczas procesu DTLS handshake moduł reassemblera fragmentów odczytuje 24-bitowe pole długości z odebranego pakietu i natychmiast na jego podstawie alokuje bufor w pamięci, bez uprzedniej walidacji tej wartości. Atakujący może przesłać specjalnie spreparowany pakiet DTLS z zawyżoną wartością pola długości, wymuszając tym samym alokację bardzo dużego bufora. Wielokrotne lub jednorazowe wysłanie takiego pakietu może doprowadzić do wyczerpania dostępnej pamięci procesu i awarii aplikacji.
Atakujący zdalnie, bez uwierzytelnienia, może doprowadzić do odmowy usługi (DoS) poprzez wyczerpanie zasobów pamięci aplikacji korzystającej z podatnych wersji biblioteki Bouncy Castle.
Należy zaktualizować bibliotekę do wersji: Bouncy Castle for Java 1.85 lub nowszej, Bouncy Castle for Java LTS 2.73.12 lub nowszej, BC-FJA bctls-fips 1.0.24 / 2.0.24 / 2.1.24 lub nowszych (odpowiednio dla używanej serii). Patche dostępne są w repozytorium projektu — szczegóły w referencjach producenta.
Bouncy Castle for Java przed wersją 1.85; Bouncy Castle for Java LTS przed wersją 2.73.12; Bouncy Castle for Java FIPS (BC-FJA) — bctls-fips przed wersjami 1.0.24 (seria 1.0.X), 2.0.24 (seria 2.0.X) oraz 2.1.24 (seria 2.1.X)
Podatność dotyczy wyłącznie komponentu DTLS — aplikacje nieużywające protokołu DTLS z biblioteką Bouncy Castle nie są narażone. Szczegóły opublikowano na wiki projektu bcgit/bc-java.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:AmberBouncycastle Bc Java
APPBouncycastle< 1.85Bouncycastle Bctls Fips
APPBouncycastle< 1.0.242.0.19 – 2.0.24 (bez)2.1.20 – 2.1.24 (bez)Bouncycastle Bouncy Castle For Java Lts
APPBouncycastle≤ 2.73.11
Powiązane podatności
Bouncy Castle Java: błędna weryfikacja hostname (CN-fallback) w JSSE
Niebezpieczna refleksja przy deserializacji klucza XMSS w Bouncy Castle
Bouncy Castle for Java: przedwczesna alokacja pamięci w dekoderze MLS
Bouncy Castle for Java: nadmierna alokacja pamięci w BKS/UBER keystore przed weryfikacją integralności
Bouncy Castle for Java — błąd weryfikacji podpisu RSA PKCS#1 (pominięcie bajtów skrótu)