CVE-2020-10672
Description
FasterXML jackson-databind 2.x before 2.9.10.4 mishandles the interaction between serialization gadgets and typing, related to org.apache.aries.transaction.jms.internal.XaPooledConnectionFactory (aka aries.transaction.jms).
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
FasterXML jackson-databind before 2.9.10.4 allows remote code execution via a crafted gadget from aries.transaction.jms when default typing is enabled.
Vulnerability
Overview CVE-2020-10672 is an unsafe deserialization vulnerability in FasterXML jackson-databind versions prior to 2.9.10.4. The issue stems from improper handling of the interaction between serialization gadgets and typing, specifically allowing the class org.apache.aries.transaction.jms.internal.XaPooledConnectionFactory (from the aries.transaction.jms library) to be used as a gadget [2][4]. When default typing is enabled or @JsonTypeInfo is used, an attacker can supply a malicious JSON payload that instantiates this class, leading to remote code execution.
Exploitation
To exploit this vulnerability, the attacker must have the ability to send crafted JSON data to an application that uses jackson-databind with default typing enabled (or a similar configuration that allows polymorphic type resolution). No authentication is required if the input is untrusted [2]. The attacker then includes the aries.transaction.jms gadget in the JSON, which triggers a chain of operations culminating in arbitrary code execution [3].
Impact
Successful exploitation allows an attacker to execute arbitrary code on the target system with the privileges of the application process. This can lead to full compromise of the application and potentially the underlying server, including data theft, malware installation, or lateral movement within the network [2].
Mitigation
The vulnerability is fixed in jackson-databind version 2.9.10.4 and later. Users should upgrade immediately to this version or newer [3]. As a general best practice, avoid enabling default typing unless absolutely necessary, and consider using a custom type validator to restrict allowed classes [4]. The fix adds org.apache.aries.transaction.jms.internal.XaPooledConnectionFactory to the block list of known dangerous types [3].
AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
com.fasterxml.jackson.core:jackson-databindMaven | >= 2.9.0, < 2.9.10.4 | 2.9.10.4 |
Affected products
4- FasterXML/jackson-databinddescription
- osv-coords3 versionspkg:apk/chainguard/hivepkg:apk/chainguard/hive-compatpkg:maven/com.fasterxml.jackson.core/jackson-databind
< 4.0.1-r1+ 2 more
- (no CPE)range: < 4.0.1-r1
- (no CPE)range: < 4.0.1-r1
- (no CPE)range: >= 2.9.0, < 2.9.10.4
Patches
208fbfacf89a4fix: merge fix from 2.9 branch #2653 #2658 #2659 #2660 #2662 #2664 #2666 #2670 #2680 #2682 #2688 #2698 #2704 #2765 #2798 #2814 #2826 #2827 #2854 (#2858)
1 file changed · +78 −11
src/main/java/com/fasterxml/jackson/databind/jsontype/impl/SubTypeValidator.java+78 −11 modified@@ -48,6 +48,9 @@ public class SubTypeValidator // [databind#1737]; 3rd party //s.add("org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor"); // deprecated by [databind#1855] s.add("org.springframework.beans.factory.config.PropertyPathFactoryBean"); + // [databind#2680] + s.add("org.springframework.aop.config.MethodLocatingFactoryBean"); + s.add("org.springframework.beans.factory.config.BeanReferenceFactoryBean"); // s.add("com.mchange.v2.c3p0.JndiRefForwardingDataSource"); // deprecated by [databind#1931] // s.add("com.mchange.v2.c3p0.WrapperConnectionPoolDataSource"); // - "" - @@ -73,24 +76,26 @@ public class SubTypeValidator s.add("com.sun.deploy.security.ruleset.DRSHelper"); s.add("org.apache.axis2.jaxws.spi.handler.HandlerResolverImpl"); - // [databind#2186]: yet more 3rd party gadgets + // [databind#2186], [databind#2670]: yet more 3rd party gadgets s.add("org.jboss.util.propertyeditor.DocumentEditor"); s.add("org.apache.openjpa.ee.RegistryManagedRuntime"); s.add("org.apache.openjpa.ee.JNDIManagedRuntime"); - s.add("org.apache.axis2.transport.jms.JMSOutTransportInfo"); - - // [databind#2326] (2.7.9.6): one more 3rd party gadget + s.add("org.apache.openjpa.ee.WASRegistryManagedRuntime"); // [#2670] addition + s.add("org.apache.axis2.transport.jms.JMSOutTransportInfo"); + + // [databind#2326] (2.9.9) s.add("com.mysql.cj.jdbc.admin.MiniAdmin"); - // [databind#2334]: logback-core + // [databind#2334]: logback-core (2.9.9.1) s.add("ch.qos.logback.core.db.DriverManagerConnectionSource"); - // [databind#2341]: jdom/jdom2 + // [databind#2341]: jdom/jdom2 (2.9.9.1) s.add("org.jdom.transform.XSLTransformer"); s.add("org.jdom2.transform.XSLTransformer"); - // [databind#2387]: EHCache + // [databind#2387], [databind#2460]: EHCache s.add("net.sf.ehcache.transaction.manager.DefaultTransactionManagerLookup"); + s.add("net.sf.ehcache.hibernate.EhcacheJtaTransactionManagerLookup"); // [databind#2389]: logback/jndi s.add("ch.qos.logback.core.db.JNDIConnectionSource"); @@ -107,8 +112,10 @@ public class SubTypeValidator s.add("org.apache.commons.configuration.JNDIConfiguration"); s.add("org.apache.commons.configuration2.JNDIConfiguration"); - // [databind#2469]: xalan2 + // [databind#2469]: xalan s.add("org.apache.xalan.lib.sql.JNDIConnectionPool"); + // [databind#2704]: xalan2 + s.add("com.sun.org.apache.xalan.internal.lib.sql.JNDIConnectionPool"); // [databind#2478]: comons-dbcp, p6spy s.add("org.apache.commons.dbcp.datasources.PerUserPoolDataSource"); @@ -129,15 +136,75 @@ public class SubTypeValidator // [databind#2631]: shaded hikari-config s.add("org.apache.hadoop.shaded.com.zaxxer.hikari.HikariConfig"); - // [databind#2634]: ibatis-sqlmap, anteros-core + // [databind#2634]: ibatis-sqlmap, anteros-core/-dbcp s.add("com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig"); s.add("br.com.anteros.dbcp.AnterosDBCPConfig"); + // [databind#2814]: anteros-dbcp + s.add("br.com.anteros.dbcp.AnterosDBCPDataSource"); - // [databind#2642]: javax.swing (jdk) + // [databind#2642][databind#2854]: javax.swing (jdk) s.add("javax.swing.JEditorPane"); + s.add("javax.swing.JTextPane"); - // [databind#2648]: shire-core + // [databind#2648], [databind#2653]: shire-core s.add("org.apache.shiro.realm.jndi.JndiRealmFactory"); + s.add("org.apache.shiro.jndi.JndiObjectFactory"); + + // [databind#2658]: ignite-jta (, quartz-core) + s.add("org.apache.ignite.cache.jta.jndi.CacheJndiTmLookup"); + s.add("org.apache.ignite.cache.jta.jndi.CacheJndiTmFactory"); + s.add("org.quartz.utils.JNDIConnectionProvider"); + + // [databind#2659]: aries.transaction.jms + s.add("org.apache.aries.transaction.jms.internal.XaPooledConnectionFactory"); + s.add("org.apache.aries.transaction.jms.RecoverablePooledConnectionFactory"); + + // [databind#2660]: caucho-quercus + s.add("com.caucho.config.types.ResourceRef"); + + // [databind#2662]: aoju/bus-proxy + s.add("org.aoju.bus.proxy.provider.RmiProvider"); + s.add("org.aoju.bus.proxy.provider.remoting.RmiProvider"); + + // [databind#2664]: activemq-core, activemq-pool, activemq-pool-jms + + s.add("org.apache.activemq.ActiveMQConnectionFactory"); // core + s.add("org.apache.activemq.ActiveMQXAConnectionFactory"); + s.add("org.apache.activemq.spring.ActiveMQConnectionFactory"); + s.add("org.apache.activemq.spring.ActiveMQXAConnectionFactory"); + s.add("org.apache.activemq.pool.JcaPooledConnectionFactory"); // pool + s.add("org.apache.activemq.pool.PooledConnectionFactory"); + s.add("org.apache.activemq.pool.XaPooledConnectionFactory"); + s.add("org.apache.activemq.jms.pool.XaPooledConnectionFactory"); // pool-jms + s.add("org.apache.activemq.jms.pool.JcaPooledConnectionFactory"); + + // [databind#2666]: apache/commons-jms + s.add("org.apache.commons.proxy.provider.remoting.RmiProvider"); + + // [databind#2682]: commons-jelly + s.add("org.apache.commons.jelly.impl.Embedded"); + + // [databind#2688]: apache/drill + s.add("oadd.org.apache.xalan.lib.sql.JNDIConnectionPool"); + + // [databind#2698]: weblogic w/ oracle/aq-jms + // (note: dependency not available via Maven Central, but as part of + // weblogic installation, possibly fairly old version(s)) + s.add("oracle.jms.AQjmsQueueConnectionFactory"); + s.add("oracle.jms.AQjmsXATopicConnectionFactory"); + s.add("oracle.jms.AQjmsTopicConnectionFactory"); + s.add("oracle.jms.AQjmsXAQueueConnectionFactory"); + s.add("oracle.jms.AQjmsXAConnectionFactory"); + + // [databind#2764]: org.jsecurity: + s.add("org.jsecurity.realm.jndi.JndiRealmFactory"); + + // [databind#2798]: com.pastdev.httpcomponents: + s.add("com.pastdev.httpcomponents.configuration.JndiConfiguration"); + + // [databind#2826], [databind#2827] + s.add("com.nqadmin.rowset.JdbcRowSetImpl"); + s.add("org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl"); DEFAULT_NO_DESER_CLASS_NAMES = Collections.unmodifiableSet(s); }
592872f4235cFix #2659
2 files changed · +5 −0
release-notes/VERSION-2.x+2 −0 modified@@ -15,6 +15,8 @@ Project: jackson-databind #2648: Block one more gadget type (shiro-core) #2653: Block one more gadget type (shiro-core) #2658: Block one more gadget type (ignite-jta) +#2659: Block one more gadget type (aries.transaction.jms) + (reported by Srikanth Ramu) 2.9.10.3 (23-Feb-2020)
src/main/java/com/fasterxml/jackson/databind/jsontype/impl/SubTypeValidator.java+3 −0 modified@@ -147,6 +147,9 @@ public class SubTypeValidator s.add("org.apache.ignite.cache.jta.jndi.CacheJndiTmFactory"); s.add("org.quartz.utils.JNDIConnectionProvider"); + // [databind#2659]: aries.transaction.jms + s.add("org.apache.aries.transaction.jms.internal.XaPooledConnectionFactory"); + DEFAULT_NO_DESER_CLASS_NAMES = Collections.unmodifiableSet(s); }
Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
14- github.com/advisories/GHSA-95cm-88f5-f2c7ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2020-10672ghsaADVISORY
- github.com/FasterXML/jackson-databind/commit/08fbfacf89a4a4c026a6227a1b470ab7a13e2e88ghsaWEB
- github.com/FasterXML/jackson-databind/commit/592872f4235c7f2a3280725278da55544032f72dghsaWEB
- github.com/FasterXML/jackson-databind/issues/2659ghsax_refsource_MISCWEB
- lists.debian.org/debian-lts-announce/2020/03/msg00027.htmlghsamailing-listx_refsource_MLISTWEB
- medium.com/%40cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062ghsax_refsource_MISCWEB
- medium.com/@cowtowncoder/on-jackson-cves-dont-panic-here-is-what-you-need-to-know-54cd0d6e8062ghsaWEB
- security.netapp.com/advisory/ntap-20200403-0002ghsaWEB
- security.netapp.com/advisory/ntap-20200403-0002/mitrex_refsource_CONFIRM
- www.oracle.com/security-alerts/cpujan2021.htmlghsax_refsource_MISCWEB
- www.oracle.com/security-alerts/cpujul2020.htmlghsax_refsource_MISCWEB
- www.oracle.com/security-alerts/cpuoct2020.htmlghsax_refsource_MISCWEB
- www.oracle.com/security-alerts/cpuoct2021.htmlghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.