jackson-databind binds a JSON string to a javax.xml.datatype.Duration or javax.xml.datatype.XMLGregorianCalendar field by passing the raw string verbatim to DatatypeFactory.newDuration(value) or newXMLGregorianCalendar(value) in CoreXMLDeserializers.Std._deserialize. These deserializers are registered by default with no opt-in, so a plain ObjectMapper or JsonMapper with no polymorphic typing and no special configuration reaches this path. The XML Schema lexical grammar permits numeric components of arbitrary length, which the JDK materializes through the native BigInteger(String) and BigDecimal(String) constructors, both quadratic in digit count. Because the digits sit inside a JSON string token rather than a JSON number token, jackson-cores StreamReadConstraints.maxNumberLength guard never applies; jacksons own NumberDeserializers call validateIntegerLength or validateFPLength before parsing a stringified number, but the XML datatype deserializer omits that pre-check. An unauthenticated attacker can therefore submit a single request of a few megabytes, such as a Duration value consisting of the letter P followed by several million digits and the letter Y, and force tens of seconds to several minutes of single-threaded CPU work; a handful of concurrent requests can saturate a servers worker threads. This affects com.fasterxml.jackson.core:jackson-databind from 2.0.0 before 2.18.10, from 2.19.0 before 2.21.6, and from 2.22.0 before 2.22.2, and tools.jackson.core:jackson-databind from 3.0.0 before 3.1.6 and from 3.2.0 before 3.2.2. Users should upgrade to 2.18.10, 2.21.6, 2.22.2, 3.1.6, or 3.2.2.
The product does not properly control the allocation and maintenance of a limited resource.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Red Hat build of Apache Camel 4.18.4 for Spring Boot 3.5.16 | RedHat | jackson-databind | * |
| Red Hat build of Quarkus 3.27.6.redhat | RedHat | com.fasterxml.jackson.core/jackson-databind:2.21.7.redhat-00001 | * |
| Red Hat build of Quarkus 3.33.4.redhat | RedHat | com.fasterxml.jackson.core/jackson-databind:2.21.7.redhat-00001 | * |
| Red Hat Enterprise Linux 10 | RedHat | dogtag-pki-0:11.9.0-6.el10_2 | * |
| Red Hat Enterprise Linux 10.0 Extended Update Support | RedHat | dogtag-pki-0:11.6.0-3.el10_0.1 | * |
| Red Hat Enterprise Linux 9 | RedHat | jackson-core-0:2.21.6-1.el9_8 | * |
| Red Hat Enterprise Linux 9 | RedHat | jackson-databind-0:2.21.6-1.el9_8 | * |
| Red Hat Enterprise Linux 9 | RedHat | jackson-jaxrs-providers-0:2.21.6-1.el9_8 | * |
| Red Hat Enterprise Linux 9 | RedHat | jackson-modules-base-0:2.21.6-1.el9_8 | * |
| Red Hat Enterprise Linux 9.2 Update Services for SAP Solutions | RedHat | jackson-databind-0:2.21.6-1.el9_2.1 | * |
| Red Hat Enterprise Linux 9.6 Extended Update Support | RedHat | jackson-core-0:2.21.6-1.el9_6 | * |
| Red Hat Enterprise Linux 9.6 Extended Update Support | RedHat | jackson-databind-0:2.21.6-1.el9_6.1 | * |
| Red Hat Enterprise Linux 9.6 Extended Update Support | RedHat | jackson-jaxrs-providers-0:2.21.6-1.el9_6 | * |
| Red Hat Enterprise Linux 9.6 Extended Update Support | RedHat | jackson-modules-base-0:2.21.6-1.el9_6 | * |
| Red Hat Satellite 6.16 for RHEL 8 | RedHat | openvox-server-0:8.17.0-1.el8sat | * |
| Red Hat Satellite 6.16 for RHEL 8 | RedHat | openvox-server-0:8.17.0-1.el8sat | * |
| Red Hat Satellite 6.16 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.16 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.17 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.17 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.18 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.18 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.19 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| Red Hat Satellite 6.19 for RHEL 9 | RedHat | openvox-server-0:8.17.0-1.el9sat | * |
| OpenShift Developer Tools and Services 4.12 | RedHat | ocp-tools-4/jenkins-rhel8:1792044326 | * |
| OpenShift Developer Tools and Services 4.13 | RedHat | ocp-tools-4/jenkins-rhel8:1792044327 | * |
| OpenShift Developer Tools and Services 4.14 | RedHat | ocp-tools-4/jenkins-rhel8:1792044382 | * |
| OpenShift Developer Tools and Services 4.15 | RedHat | ocp-tools-4/jenkins-rhel8:1792044386 | * |
| OpenShift Developer Tools and Services 4.16 | RedHat | ocp-tools-4/jenkins-rhel9:1792040287 | * |
| OpenShift Developer Tools and Services 4.17 | RedHat | ocp-tools-4/jenkins-rhel9:1792040131 | * |
| OpenShift Developer Tools and Services 4.18 | RedHat | ocp-tools-4/jenkins-rhel9:1792041514 | * |
| OpenShift Developer Tools and Services 4.19 | RedHat | ocp-tools-4/jenkins-rhel9:1792040733 | * |
| OpenShift Developer Tools and Services 4.20 | RedHat | ocp-tools-4/jenkins-rhel9:1792040081 | * |
| OpenShift Developer Tools and Services 4.21 | RedHat | ocp-tools-4/jenkins-rhel9:1792040096 | * |
| OpenShift Developer Tools and Services 4.22 | RedHat | ocp-tools-4/jenkins-rhel9:1792040428 | * |
| Red Hat Lightspeed (formerly Insights) for Runtimes 1.0 | RedHat | rh-lightspeed-runtimes/runtimes-agent-init-rhel9:1790202798 | * |
| Red Hat OpenShift AI 2.25 | RedHat | rhoai/odh-modelmesh-rhel9:1790881700 | * |
| Red Hat OpenShift AI 2.25 | RedHat | rhoai/odh-trustyai-service-rhel9:1790933094 | * |
| Red Hat OpenShift AI 3.4 | RedHat | rhoai/odh-th06-cpu-torch210-py312-rhel9:1791874335 | * |
| Red Hat OpenShift AI 3.4 | RedHat | rhoai/odh-th06-cuda130-torch210-py312-rhel9:1791961113 | * |
| Red Hat OpenShift AI 3.4 | RedHat | rhoai/odh-th06-rocm64-torch291-py312-rhel9:1791872119 | * |
| Red Hat OpenShift AI 3.4 | RedHat | rhoai/odh-trustyai-service-rhel9:1791792525 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-datascience-cpu-py312-rhel9:1791952873 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-pytorch-cuda-py312-rhel9:1791816462 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-pytorch-llmcompressor-cuda-py312-rhel9:1791816487 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-pytorch-rocm-py312-rhel9:1791951049 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-tensorflow-cuda-py312-rhel9:1791951047 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-pipeline-runtime-tensorflow-rocm-py312-rhel9:1791950760 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-trustyai-service-rhel9:1791951741 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-codeserver-datascience-cpu-py312-rhel9:1791825469 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-datascience-cpu-py312-rhel9:1791903880 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-pytorch-cuda-py312-rhel9:1791817064 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-rhel9:1791817844 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-pytorch-rocm-py312-rhel9:1791816223 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-tensorflow-cuda-py312-rhel9:1791899290 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-tensorflow-rocm-py312-rhel9:1791816175 | * |
| Red Hat OpenShift AI 3.5 | RedHat | rhoai/odh-workbench-jupyter-trustyai-cpu-py312-rhel9:1791816316 | * |
| Red Hat OpenShift Dev Spaces 3.31 | RedHat | devspaces/multicluster-redirector-rhel9:1792491532 | * |
| Red Hat OpenShift Dev Spaces 3.31 | RedHat | devspaces/openvsx-rhel9:1792494821 | * |
| Red Hat OpenShift Dev Spaces 3.31 | RedHat | devspaces/pluginregistry-rhel9:1792495212 | * |
| Jackson-databind | Ubuntu | esm-apps/jammy | * |
| Jackson-databind | Ubuntu | esm-apps/noble | * |
| Jackson-databind | Ubuntu | esm-apps/resolute | * |
| Jackson-databind | Ubuntu | jammy | * |
| Jackson-databind | Ubuntu | noble | * |
| Jackson-databind | Ubuntu | resolute | * |
Mitigation of resource exhaustion attacks requires that the target system either:
The first of these solutions is an issue in itself though, since it may allow attackers to prevent the use of the system by a particular valid user. If the attacker impersonates the valid user, they may be able to prevent the user from accessing the server in question.
The second solution is simply difficult to effectively institute – and even when properly done, it does not provide a full solution. It simply makes the attack require more resources on the part of the attacker.