W Eclipse OpenJ9 przed wersją 0.29.0 maszyna wirtualna JVM nie zgłasza wyjątku IllegalAccessError dla obiektów MethodHandle wywołujących niedostępne metody interfejsów. Podatność ta może pozwolić na nieautoryzowany dostęp do metod, które powinny być niedostępne zgodnie z modelem kontroli dostępu Javy.
▸ Pokaż oryginał (EN)
In Eclipse Openj9 before version 0.29.0, the JVM does not throw IllegalAccessError for MethodHandles that invoke inaccessible interface methods.
Mechanizm MethodHandles w Javie powinien egzekwować ograniczenia dostępu analogiczne do standardowej refleksji — wywołanie niedostępnej metody interfejsu powinno skutkować wyrzuceniem wyjątku IllegalAccessError. W podatnej wersji OpenJ9 ten mechanizm kontroli dostępu nie jest prawidłowo stosowany, przez co JVM pomija weryfikację uprawnień. Atakujący może skonstruować odpowiedni obiekt MethodHandle, który wywoła metodę interfejsu normalnie niedostępną w danym kontekście, obchodząc tym samym zasady widoczności i hermetyzacji.
Atakujący może uzyskać nieautoryzowany dostęp do chronionych metod interfejsów, co prowadzi do naruszenia poufności, integralności oraz dostępności danych i zasobów aplikacji. W zależności od kontekstu aplikacji możliwe jest wykonanie nieautoryzowanych operacji z podwyższonymi uprawnieniami (privilege escalation).
Należy zaktualizować Eclipse OpenJ9 do wersji 0.29.0 lub nowszej, w której poprawka została wprowadzona. Szczegóły dostępne w referencjach producenta oraz w pull requeście nr 13740 na GitHubie projektu.
Eclipse OpenJ9 we wszystkich wersjach przed 0.29.0
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEclipse Openj9
APPEclipse< 0.29.0
Powiązane podatności
Stack-based buffer overflow w Eclipse OpenJ9 przy konwersji kodowania UTF-8
Eclipse OpenJ9: brak kontroli uprawnień do operacji diagnostycznych
Eclipse OpenJ9: arbitralny zapis pamięci przez metodę String.getBytes() w JIT
Eclipse OpenJ9: przepełnienie bufora w jio_snprintf() i jio_vsnprintf()
Eclipse OpenJ9: błędne pominięcie null check w kompilatorze JIT