All vulnerability reports

Potential deserialization of untrusted data in Vaadin 7 and 8 when JMX or RMI are enabled

Overview

Certain classes in com.vaadin:vaadin-server version 7 (all versions of Vaadin 7), and com.vaadin:vaadin-compatibility-server version 8 (all versions of Vaadin 8) allows attacker to perform unsafe deserialization when JMX or RMI are enabled.

See CWE-502: Deserialization of Untrusted Data

Description

When a Vaadin 7 application (or Vaadin 8 application that uses V7 compatibility package) is running in a Servlet container where JMX or RMI is used, and if an unauthenticated user can trigger the deserialization of a payload crafted by them, and vaadin-server.jar are part of the classpath when the deserialization happens, an attacker can achieve an unauthenticated remote code execution.

In practice, the attack can be executed by injecting a payload that will be deserialized and will be accessed by the NestedMethodProperty allowing the execution of malicious code.

The functionality used for the identified chain of deserialization events is no longer included in Vaadin 8 (without the Vaadin 7 compatibility packages) or the Vaadin platform. We still advise users of those products to ensure all access to deserialization facilities is restricted, since we cannot rule out the possibility that a similar attack vector is identified in the future.

Affected products and mitigation

Product version Mitigation
Vaadin 7 If you are using JMX or RMI together with any affected Vaadin version, you should take a look at the references listed below for handling the situation.
Vaadin 8 (with V7 compatibility package)

Artifacts

Maven coordinates Affected version
com.vaadin:vaadin-server 7.*
com.vaadin:vaadin-compatibility-server 8.*

Credit

This issue was discovered and responsibly reported by Kai Ullrich from Code White GmbH, Ulm, Germany.

References

History

  • 2021-09-03: Clarified affected packages
  • 2018-11-13: Initial vulnerability report published