// For flags

CVE-2022-31023

Dev error stack trace leaking into prod 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. Verions prior to 2.8.16 are vulnerable to generation of error messages containing sensitive information. Play Framework, when run in dev mode, shows verbose errors for easy debugging, including an exception stack trace. Play does this by configuring its `DefaultHttpErrorHandler` to do so based on the application mode. In its Scala API Play also provides a static object `DefaultHttpErrorHandler` that is configured to always show verbose errors. This is used as a default value in some Play APIs, so it is possible to inadvertently use this version in production. It is also possible to improperly configure the `DefaultHttpErrorHandler` object instance as the injected error handler. Both of these situations could result in verbose errors displaying to users in a production application, which could expose sensitive information from the application. In particular, the constructor for `CORSFilter` and `apply` method for `CORSActionBuilder` use the static object `DefaultHttpErrorHandler` as a default value. This is patched in Play Framework 2.8.16. The `DefaultHttpErrorHandler` object has been changed to use the prod-mode behavior, and `DevHttpErrorHandler` has been introduced for the dev-mode behavior. A workaround is available. When constructing a `CORSFilter` or `CORSActionBuilder`, ensure that a properly-configured error handler is passed. Generally this should be done by using the `HttpErrorHandler` instance provided through dependency injection or through Play's `BuiltInComponents`. Ensure that the application is not using the `DefaultHttpErrorHandler` static object in any code that may be run in production.

Play Framework es un framework web para Java y Scala. Las versiones anteriores a 2.8.16 son vulnerables a una generación de mensajes de error que contienen información confidencial. Play Framework, cuando es ejecutado en modo dev, muestra errores verbose para facilitar la depuración, incluyendo un seguimiento de la pila de excepciones. Play hace esto configurando su "DefaultHttpErrorHandler" para que lo haga en función del modo de aplicación. En su API Scala, Play también proporciona un objeto estático "DefaultHttpErrorHandler" que está configurado para mostrar siempre los errores verbose. Esto es usado como valor por defecto en algunas APIs de Play, por lo que es posible usar inadvertidamente esta versión en producción. También es posible configurar incorrectamente la instancia del objeto "DefaultHttpErrorHandler" como administrador de errores inyectado. Ambas situaciones podrían resultar en que sean mostrados errores verbales a usuarios en una aplicación de producción, lo que podría exponer información confidencial de la aplicación. En concreto, el constructor de "CORSFilter" y el método "apply" de "CORSActionBuilder" usan el objeto estático "DefaultHttpErrorHandler" como valor por defecto. Esto ha sido corregido en Play Framework versión 2.8.16. El objeto "DefaultHttpErrorHandler" ha sido cambiado para usar el comportamiento del modo prod, y ha sido introducido "DevHttpErrorHandler" para el comportamiento del modo dev. Se presenta una mitigación disponible. Cuando construya un "CORSFilter" o un "CORSActionBuilder", asegúrese de que es pasado un manejador de errores correctamente configurado. Generalmente, esto debería hacerse al usar la instancia "HttpErrorHandler" proporcionada mediante la inyección de dependencia o mediante "BuiltInComponents" de Play. Asegúrese de que la aplicación no usa el objeto estático "DefaultHttpErrorHandler" en ningún código que pueda ejecutarse en producción

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None
Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None
Attack Vector
Network
Attack Complexity
Low
Authentication
None
Confidentiality
Partial
Integrity
None
Availability
None
* 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-04-18 EPSS Updated
  • 2024-08-03 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-209: Generation of Error Message Containing Sensitive Information
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.16
Search vendor "Lightbend" for product "Play Framework" and version " < 2.8.16"
-
Affected