Metoda String.getBytes(int, int, byte[], int) w Eclipse OpenJ9 przed wersją 0.15 nie weryfikuje poprawności przekazanej tablicy bajtów ani indeksu podczas kompilacji przez JIT. Podatność umożliwia arbitralny zapis do dowolnego 32-bitowego adresu pamięci, nawet w środowisku chronionym przez SecurityManager.
▸ Pokaż oryginał (EN)
In Eclipse OpenJ9 prior to 0.15, the String.getBytes(int, int, byte[], int) method does not verify that the provided byte array is non-null nor that the provided index is in bounds when compiled by the JIT. This allows arbitrary writes to any 32-bit address or beyond the end of a byte array within Java code run under a SecurityManager.
Kompilator JIT (Just-In-Time) w Eclipse OpenJ9 pomija walidację argumentów wywołania metody String.getBytes(int, int, byte[], int) — nie sprawdza czy przekazana tablica bajtów jest różna od null ani czy podany indeks mieści się w granicach tablicy. W efekcie złośliwy kod Java może wywołać tę metodę z odpowiednio spreparowanymi argumentami, powodując zapis danych poza granicami tablicy (out-of-bounds write, CWE-787) lub pod dowolny 32-bitowy adres pamięci. Co istotne, atak jest możliwy nawet w kontekście kodu uruchomionego pod nadzorem SecurityManagera, który normalnie powinien ograniczać niebezpieczne operacje.
Atakujący może dokonać arbitralnego zapisu pamięci procesu JVM, co w praktyce może prowadzić do wykonania dowolnego kodu (RCE), eskalacji uprawnień lub destabilizacji działania aplikacji (denial of service). Podatność narusza poufność, integralność i dostępność systemu.
Należy zaktualizować Eclipse OpenJ9 do wersji 0.15 lub nowszej. Użytkownicy dystrybucji Red Hat powinni zastosować patche opisane w erratach RHSA-2019:2585, RHSA-2019:2590, RHSA-2019:2592 oraz RHSA-2019:2737.
Eclipse OpenJ9 w wersjach wcześniejszych niż 0.15.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEclipse Openj9
APPEclipse< 0.15.0
Powiązane podatności
Eclipse OpenJ9: brak weryfikacji dostępu do niedostępnych metod interfejsów przez MethodHandles
Stack-based buffer overflow w Eclipse OpenJ9 przy konwersji kodowania UTF-8
Eclipse OpenJ9: brak kontroli uprawnień do operacji diagnostycznych
Eclipse OpenJ9: przepełnienie bufora w jio_snprintf() i jio_vsnprintf()
Eclipse OpenJ9: błędne pominięcie null check w kompilatorze JIT