CVE-2026-54512

jackson-databind contains the general-purpose data-binding functionality and tree-model for Jackson Data Processor. From 2.10.0 until 2.18.8, 2.21.4, and 3.1.4, jackson-databind's PolymorphicTypeValidator (PTV) is the primary safety mechanism guarding polymorphic deserialization. When polymorphic typing is enabled and a type identifier contains generic parameters (i.e. the type ID string contains <), DatabindContext._resolveAndValidateGeneric() validates only the raw container class name (the substring before <) against the configured PTV. If the container type is approved, the method parses the full canonical type string via TypeFactory.constructFromCanonical() and returns the fully parameterized type without ever validating the nested type arguments against the PTV. The nested type arguments are then resolved, instantiated, and populated as beans during deserialization. An attacker who controls the type ID can therefore place a denied class as a generic type parameter of an allowed container — for example java.util.ArrayList<com.evil.Gadget> when only java.util.ArrayList is allow-listed. The container passes the PTV check; com.evil.Gadget is loaded via Class.forName(name, true, loader), instantiated, and its properties are set from attacker-controlled JSON. This completely bypasses an explicitly configured PTV allow-list. This vulnerability is fixed in 2.18.8, 2.21.4, and 3.1.4.
Configurations

Configuration 1 (hide)

OR cpe:2.3:a:fasterxml:jackson-databind:*:*:*:*:*:*:*:*
cpe:2.3:a:fasterxml:jackson-databind:*:*:*:*:*:*:*:*
cpe:2.3:a:fasterxml:jackson-databind:*:*:*:*:*:*:*:*

History

25 Oct 2026, 23:10

Type Values Removed Values Added
Summary
  • (es) jackson-databind contiene la funcionalidad de enlace de datos de propósito general y el modelo de árbol para Jackson Data Processor. Desde 2.10.0 hasta 2.18.8, 2.21.4 y 3.1.4, el PolymorphicTypeValidator (PTV) de jackson-databind es el mecanismo de seguridad principal que protege la deserialización polimórfica. Cuando la tipificación polimórfica está habilitada y un identificador de tipo contiene parámetros genéricos (es decir, la cadena de ID de tipo contiene <), DatabindContext._resolveAndValidateGeneric() valida solo el nombre de la clase de contenedor en bruto (la subcadena antes de <) contra el PTV configurado. Si el tipo de contenedor es aprobado, el método analiza la cadena de tipo canónico completa a través de TypeFactory.constructFromCanonical() y devuelve el tipo completamente parametrizado sin validar nunca los argumentos de tipo anidados contra el PTV. Los argumentos de tipo anidados son entonces resueltos, instanciados y poblados como beans durante la deserialización. Un atacante que controla el ID de tipo puede, por lo tanto, colocar una clase denegada como parámetro de tipo genérico de un contenedor permitido - por ejemplo, java.util.ArrayList<com.evil.Gadget> cuando solo java.util.ArrayList está en la lista de permitidos. El contenedor pasa la verificación del PTV; com.evil.Gadget se carga a través de Class.forName(name, true, loader), se instancia y sus propiedades se configuran desde JSON controlado por el atacante. Esto elude completamente una lista de permitidos del PTV configurada explícitamente. Esta vulnerabilidad se corrige en 2.18.8, 2.21.4 y 3.1.4.

Information

Published : 2026-06-23 21:17

Updated : 2026-10-25 23:10


NVD link : CVE-2026-54512

Mitre link : CVE-2026-54512

CVE.ORG link : CVE-2026-54512


JSON object : View

Products Affected

fasterxml

  • jackson-databind
CWE
CWE-184

Incomplete List of Disallowed Inputs

CWE-502

Deserialization of Untrusted Data