Podatność w silniku szablonów Jinjava (przed wersją 2.8.1) umożliwia atakującemu ucieczkę z sandbox i deserializację dowolnych klas Java poprzez mechanizm ObjectMapper. W konsekwencji możliwe jest nieautoryzowane wykonanie kodu (RCE) oraz odczyt lokalnych plików systemowych.
▸ Pokaż oryginał (EN)
jinjava is a Java-based template engine based on django template syntax, adapted to render jinja templates. Priori to 2.8.1, by using mapper.getTypeFactory().constructFromCanonical(), it is possible to instruct the underlying ObjectMapper to deserialize attacker-controlled input into arbitrary classes. This enables the creation of semi-arbitrary class instances without directly invoking restricted methods or class literals. As a result, an attacker can escape the sandbox and instantiate classes such as java.net.URL, opening up the ability to access local files and URLs(e.g., file:///etc/passwd). With further chaining, this primitive can potentially lead to remote code execution (RCE). This vulnerability is fixed in 2.8.1.
Atakujący może wykorzystać metodę mapper.getTypeFactory().constructFromCanonical(), aby nakłonić wbudowany ObjectMapper do deserializacji kontrolowanego przez siebie wejścia do dowolnych klas Java. Pozwala to na tworzenie instancji klas takich jak java.net.URL bez bezpośredniego wywoływania ograniczonych metod ani literałów klasowych, co skutecznie omija mechanizm sandbox. Poprzez łączenie (chaining) uzyskanych prymitywów atakujący może uzyskać dostęp do lokalnych plików i zasobów sieciowych (np. file:///etc/passwd), a w dalszej kolejności doprowadzić do zdalnego wykonania kodu (RCE).
Atakujący może uzyskać pełną kontrolę nad zaatakowanym systemem, w tym odczytywać dowolne pliki lokalne, nawiązywać połączenia z zewnętrznymi zasobami oraz potencjalnie wykonać zdalny kod (RCE) bez konieczności posiadania jakichkolwiek uprawnień.
Należy zaktualizować bibliotekę HubSpot Jinjava do wersji 2.8.1 lub nowszej, w której podatność została naprawiona. Patche dostępne są w repozytorium GitHub producenta (tag jinjava-2.8.1).
HubSpot Jinjava w wersjach wcześniejszych niż 2.8.1
Podatność sklasyfikowana jako CWE-1336 (improper neutralization of special elements used in a template engine). Poprawka dostępna w commicie 66df351e7e8ad71ca04dcacb4b65782af820b8b1 w repozytorium GitHub HubSpot/jinjava.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HHubspot Jinjava
APPHubspot< 2.8.1
Powiązane podatności
HubSpot JinJava — obejście sandbox i wykonanie dowolnego kodu Java przez ForTag
Jinjava before 2.5.4 allow access to arbitrary classes by calling Java methods on objects passed into a Jinjav...
Jinjava before 2.4.6 does not block the getClass method, related to com/hubspot/jinjava/el/ext/JinjavaBeanELRe...
The HubSpot WordPress plugin before 8.8.15 does not validate the proxy URL given to the proxy REST endpoint, w...
The hubl-server module is a wrapper for the HubL Development Server. During installation hubl-server downloads...