Share
Beitragsbild zu Sicherheitslücke in HubSpots Jinjava-Engine setzt Tausende Websites potenziell RCE-Angriffen aus

Sicherheitslücke in HubSpots Jinjava-Engine setzt Tausende Websites potenziell RCE-Angriffen aus

20. September 2025

In der Jinjava-Template-Engine von HubSpot wurde eine kritische Sicherheitslücke entdeckt, die Tausende Websites und Anwendungen für Remote-Code-Execution (RCE) angreifbar machen kann. Die als CVE-2025-59340 geführte Schwachstelle erhielt den maximalen CVSS-Wert von 10,0.

Sandbox-Umgehung durch JavaType-basierte Deserialisierung

Die Lücke ermöglicht Angreifern, die in Jinjava implementierten Sandbox-Beschränkungen zu umgehen. Die Sandbox sollte unter anderem direkte Zugriffe auf gefährliche Methoden wie getClass() verhindern und die Erzeugung von Class-Objekten blockieren. Über einen Umweg — konkret durch Aufrufe an mapper.getTypeFactory().constructFromCanonical() — kann jedoch der zugrundeliegende ObjectMapper dazu gebracht werden, von einem Angreifer kontrollierte Eingaben in beliebige Klassen zu deserialisieren. So lassen sich semi-beliebige Klasseninstanzen erzeugen, ohne eingeschränkte Methoden oder Klassenliterale direkt aufzurufen.

Auf diese Weise lassen sich etwa java.net.URL-Instanzen erzeugen, was den Zugriff auf lokale Dateien und URLs (zum Beispiel file:///etc/passwd) ermöglicht. In Kombination mit weiteren Techniken kann diese Primitive laut Proof-of-Concept zu einer Remote-Code-Ausführung führen.

Proof-of-Concept und Auswirkungen

Sicherheitsforscher demonstrierten die Schwere der Schwachstelle mit einem Proof-of-Concept, das zeigt, wie über die erzeugten java.net.URL-Objekte sensible Systemdateien ausgelesen werden können. Der PoC illustriert außerdem, wie sich die primitive Deserialisierung mit weiteren Techniken zur Ausweitung von Berechtigungen und zum unbefugten Zugriff auf kritische Ressourcen verkettet lassen kann.

Technische Details

Jinjava-Templates stellen intern die Variable ____int3rpr3t3r____ zur Verfügung, die Zugriff auf die JinjavaInterpreter-Instanz erlaubt. Zwar wurden Maßnahmen ergriffen, um direkte Methodenaufrufe auf JinjavaInterpreter-Instanzen zu unterbinden und bestimmte gefährliche Klassen wie Class oder ClassLoader durch JinjavaBeanELResolver zu sperren — die Klasse JavaType selbst ist jedoch nicht eingeschränkt. Über ____int3rpr3t3r____ lässt sich auf das Feld config zugreifen, das einen ObjectMapper offenlegt. Mit dessen readValue(String content, JavaType valueType)-Methode können Angreifer beliebige Klassen instanziieren, sofern sie die entsprechende JavaType-Repräsentation konstruieren.

Die Möglichkeit, JavaType mittels constructFromCanonical zu erzeugen, erlaubt damit die Umgehung der Sandbox und die Schaffung leistungsfähiger Primitive, ohne direkt gesperrte Methoden aufzurufen.

{% set mapper = ____int3rpr3t3r____.config.objectMapper %}
{{ mapper.enableDefaultTyping() }}
{% set file = mapper.readValue('"file:///etc/passwd"', mapper.getTypeFactory().constructFromCanonical('java.net.URL')) %}
{% set inputStream = file.openStream() %}
{% set bytes = inputStream.readAllBytes() %}
{% set stringType = mapper.getTypeFactory().constructFromCanonical('java.lang.String') %}
{% set content = mapper.convertValue(bytes, stringType) %}
{{ content }}

Handlungsempfehlung und Offenlegung

Betroffene Unternehmen werden aufgefordert, Jinjava auf Version 2.8.1 oder höher zu aktualisieren, um die Lücke zu schließen. Die Schwachstelle wurde von den Sicherheitsforschern taisehub und odgrso verantwortungsvoll gemeldet, sodass HubSpot vor der öffentlichen Bekanntgabe einen Patch bereitstellen konnte.

Die Schwachstelle wird unter CWE-1336 eingeordnet — unsachgemäße Neutralisierung spezieller Elemente in Template-Engines — und stellt damit ein gängiges Risiko für Webanwendungen dar. Systemadministratoren sollten prüfen, ob ihre Anwendungen Jinjava verwenden, und die Aktualisierung angesichts der hohen Kritikalität priorisieren.

Auswirkung

Entkommen Sie der Jinjava-Sandbox und instanziieren Sie eine Vielzahl von Klassen mit JavaType.

Diese Funktion kann zum Lesen beliebiger Dateien und zum Ausführen eines vollständigen SSRF-Angriffs durch Erstellen netzwerkbezogener Objekte verwendet werden.

In bestimmten Umgebungen kann diese Primitive je nach den verfügbaren Klassen sogar zur vollständigen Remote-Code-Ausführung führen.

Lesen Sie auch


Bild/Quelle: https://depositphotos.com/de/home.html

Folgen Sie uns auf X

Folgen Sie uns auf Bluesky