// For flags

CVE-2022-31018

Denial of service binding form from JSON in Play Framework

Severity Score

7.5
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

Play Framework is a web framework for Java and Scala. A denial of service vulnerability has been discovered in verions 2.8.3 through 2.8.15 of Play's forms library, in both the Scala and Java APIs. This can occur when using either the `Form#bindFromRequest` method on a JSON request body or the `Form#bind` method directly on a JSON value. If the JSON data being bound to the form contains a deeply-nested JSON object or array, the form binding implementation may consume all available heap space and cause an `OutOfMemoryError`. If executing on the default dispatcher and `akka.jvm-exit-on-fatal-error` is enabled—as it is by default—then this can crash the application process. `Form.bindFromRequest` is vulnerable when using any body parser that produces a type of `AnyContent` or `JsValue` in Scala, or one that can produce a `JsonNode` in Java. This includes Play's default body parser. This vulnerability been patched in version 2.8.16. There is now a global limit on the depth of a JSON object that can be parsed, which can be configured by the user if necessary. As a workaround, applications that do not need to parse a request body of type `application/json` can switch from the default body parser to another body parser that supports only the specific type of body they expect.

Play Framework es un framework web para Java y Scala. Se ha detectado una vulnerabilidad de denegación de servicio en las versiones 2.8.3 a 2.8.15 de la biblioteca de formularios de Play, tanto en la API de Scala como en la de Java. Esto puede ocurrir cuando es usado el método "Form#bindFromRequest" sobre un cuerpo de petición JSON o el método "Form#bind" directamente sobre un valor JSON. Si los datos JSON que son vinculados al formulario contienen un objeto JSON anidado profundamente o un array, la implementación de la vinculación del formulario puede consumir todo el espacio disponible en la pila y causar un "OutOfMemoryError". Si es ejecutado en el despachador por defecto y "akka.jvm-exit-on-fatal-error" está habilitado -como lo está por defecto- entonces esto puede bloquear el proceso de la aplicación. "Form.bindFromRequest" es vulnerable cuando es usado cualquier analizador de cuerpo que produce un tipo de "AnyContent" o "JsValue" en Scala, o uno que puede producir un "JsonNode" en Java. Esto incluye el analizador de cuerpos por defecto de Play. Esta vulnerabilidad ha sido parcheada en versión 2.8.16. Ahora se presenta un límite global en la profundidad de un objeto JSON que puede ser analizado, que puede ser configurado por el usuario si es necesario. Como mitigación, las aplicaciones que no necesiten analizar un cuerpo de petición de tipo "application/json" pueden cambiar el analizador de cuerpos por defecto por otro que sólo soporte el tipo de cuerpo específico que esperan

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
Attack Vector
Network
Attack Complexity
Low
Authentication
None
Confidentiality
None
Integrity
None
Availability
Partial
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
Timeline
  • 2022-05-18 CVE Reserved
  • 2022-06-02 CVE Published
  • 2024-01-22 EPSS Updated
  • 2024-08-03 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-400: Uncontrolled Resource Consumption
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Lightbend
Search vendor "Lightbend"
Play Framework
Search vendor "Lightbend" for product "Play Framework"
>= 2.8.3 <= 2.8.15
Search vendor "Lightbend" for product "Play Framework" and version " >= 2.8.3 <= 2.8.15"
-
Affected