CVE-2022-31018
Denial of service binding form from JSON in Play Framework
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
0Exploited in Wild
-Decision
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
CVSS Scores
SSVC
- Decision:-
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
References (3)
URL | Tag | Source |
---|---|---|
https://github.com/playframework/playframework/releases/tag/2.8.16 | Release Notes | |
https://github.com/playframework/playframework/security/advisories/GHSA-v8x6-59g4-5g3w | Mitigation |
URL | Date | SRC |
---|
URL | Date | SRC |
---|---|---|
https://github.com/playframework/playframework/pull/11301 | 2022-06-13 |
URL | Date | SRC |
---|
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
|