VYPR
High severityNVD Advisory· Published Jan 6, 2021· Updated Aug 4, 2024

CVE-2020-36181

CVE-2020-36181

Description

FasterXML jackson-databind 2.x before 2.9.10.8 mishandles the interaction between serialization gadgets and typing, related to org.apache.tomcat.dbcp.dbcp.cpdsadapter.DriverAdapterCPDS.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

FasterXML jackson-databind before 2.9.10.8 allows remote code execution via a crafted serialization gadget using DriverAdapterCPDS from Tomcat DBCP.

CVE-2020-36181 is a deserialization vulnerability in FasterXML jackson-databind versions prior to 2.9.10.8. The issue arises from an incomplete blacklist of "gadget" classes that can be used in conjunction with default typing to achieve remote code execution. Specifically, the class org.apache.tomcat.dbcp.dbcp.cpdsadapter.DriverAdapterCPDS was not blocked, allowing it to be leveraged as a serialization gadget [1][3][4].

Exploitation requires that the application has enabled default typing (e.g., via ObjectMapper.enableDefaultTyping()) and uses a vulnerable version of jackson-databind. An attacker can craft a malicious JSON payload that, when deserialized, triggers JNDI injection through the DriverAdapterCPDS class, leading to arbitrary code execution [2][4]. No authentication is needed if the deserialization endpoint is exposed.

Successful exploitation can result in full remote code execution in the context of the vulnerable application, potentially allowing an attacker to take over the server or access sensitive data [2]. The vulnerability is part of a series of similar issues (CVE-2020-36179 to CVE-2020-36182) targeting DBCP-related gadget classes [4].

The fix was implemented in commit 3ded28a and released in version 2.9.10.8, which adds org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS and related classes to the blacklist [3][4]. Users are strongly advised to upgrade to the latest version or disable default typing if it is not required.

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.

PackageAffected versionsPatched versions
com.fasterxml.jackson.core:jackson-databindMaven
>= 2.7.0, < 2.9.10.82.9.10.8
com.fasterxml.jackson.core:jackson-databindMaven
>= 2.0.0, < 2.6.7.52.6.7.5

Affected products

2

Patches

3
e19c557b7891

[maven-release-plugin] prepare release jackson-databind-2.6.7.5

https://github.com/FasterXML/jackson-databindTatu SalorantaJun 22, 2021via osv
1 file changed · +2 2
  • pom.xml+2 2 modified
    @@ -10,7 +10,7 @@
     
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
    -  <version>2.6.7.5-SNAPSHOT</version>
    +  <version>2.6.7.5</version>
       <name>jackson-databind</name>
       <packaging>bundle</packaging>
       <description>General data-binding functionality for Jackson: works on core streaming API</description>
    @@ -21,7 +21,7 @@
         <connection>scm:git:git@github.com:FasterXML/jackson-databind.git</connection>
         <developerConnection>scm:git:git@github.com:FasterXML/jackson-databind.git</developerConnection>
         <url>http://github.com/FasterXML/jackson-databind</url>
    -    <tag>HEAD</tag>
    +    <tag>jackson-databind-2.6.7.5</tag>
       </scm>
     
       <properties>
    
7ae9214c0670

[maven-release-plugin] prepare release jackson-databind-2.9.10.8

https://github.com/FasterXML/jackson-databindTatu SalorantaJan 6, 2021via osv
1 file changed · +2 2
  • pom.xml+2 2 modified
    @@ -10,7 +10,7 @@
     
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
    -  <version>2.9.10.8-SNAPSHOT</version>
    +  <version>2.9.10.8</version>
       <name>jackson-databind</name>
       <packaging>bundle</packaging>
       <description>General data-binding functionality for Jackson: works on core streaming API</description>
    @@ -21,7 +21,7 @@
         <connection>scm:git:git@github.com:FasterXML/jackson-databind.git</connection>
         <developerConnection>scm:git:git@github.com:FasterXML/jackson-databind.git</developerConnection>
         <url>http://github.com/FasterXML/jackson-databind</url>
    -    <tag>HEAD</tag>
    +    <tag>jackson-databind-2.9.10.8</tag>
       </scm>
     
       <properties>
    
3ded28aece69

Fixed #3004

https://github.com/FasterXML/jackson-databindTatu SalorantaJan 1, 2021via ghsa
2 files changed · +16 7
  • release-notes/VERSION-2.x+2 0 modified
    @@ -17,6 +17,8 @@ Project: jackson-databind
     #2999: Block 1 more gadget type (org.glassfish.web/javax.servlet.jsp.jstl, CVE-2020-35728)
      (reported by bu5yer of Sangfor FarSight Security Lab)
     #3003: Block one more gadget type (xxx, CVE to be allocated)
    +#3004: Block one more DBCP-related potential gadget class
    + (reported by Al1ex@knownsec)
     
     2.9.10.7 (02-Dec-2020)
     
    
  • src/main/java/com/fasterxml/jackson/databind/jsontype/impl/SubTypeValidator.java+14 7 modified
    @@ -118,9 +118,12 @@ public class SubTypeValidator
             // [databind#2704]: xalan2
             s.add("com.sun.org.apache.xalan.internal.lib.sql.JNDIConnectionPool");
     
    -        // [databind#2478]: comons-dbcp, p6spy
    +        // [databind#2478]: commons-dbcp 1.x, p6spy
    +        // [databind#3004]: commons-dbcp 1.x
    +        s.add("org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS");
             s.add("org.apache.commons.dbcp.datasources.PerUserPoolDataSource");
             s.add("org.apache.commons.dbcp.datasources.SharedPoolDataSource");
    +
             s.add("com.p6spy.engine.spy.P6DataSource");
     
             // [databind#2498]: log4j-extras (1.2)
    @@ -185,8 +188,9 @@ public class SubTypeValidator
             // [databind#2682]: commons-jelly
             s.add("org.apache.commons.jelly.impl.Embedded");
     
    -        // [databind#2688]: apache/drill
    +        // [databind#2688], [databind#3004]: apache/drill
             s.add("oadd.org.apache.xalan.lib.sql.JNDIConnectionPool");
    +        s.add("oadd.org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS");
             s.add("oadd.org.apache.commons.dbcp.datasources.PerUserPoolDataSource");
             s.add("oadd.org.apache.commons.dbcp.datasources.SharedPoolDataSource");
     
    @@ -209,32 +213,35 @@ public class SubTypeValidator
             s.add("com.nqadmin.rowset.JdbcRowSetImpl");
             s.add("org.arrah.framework.rdbms.UpdatableJdbcRowsetImpl");
     
    -        // [databind#2986]: dbcp2
    +        // [databind#2986], [databind#3004]: dbcp2
             s.add("org.apache.commons.dbcp2.datasources.PerUserPoolDataSource");
             s.add("org.apache.commons.dbcp2.datasources.SharedPoolDataSource");
    +        s.add("org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS");
     
             // [databind#2996]: newrelic-agent + embedded-logback-core
             // (derivative of #2334 and #2389)
             s.add("com.newrelic.agent.deps.ch.qos.logback.core.db.JNDIConnectionSource");
             s.add("com.newrelic.agent.deps.ch.qos.logback.core.db.DriverManagerConnectionSource");
     
    -        // [databind#2997]: tomcat/naming-factory-dbcp (embedded dbcp 1.x)
    +        // [databind#2997]/[databind#3004]: tomcat/naming-factory-dbcp (embedded dbcp 1.x)
             // (derivative of #2478)
    +        s.add("org.apache.tomcat.dbcp.dbcp.cpdsadapter.DriverAdapterCPDS");
             s.add("org.apache.tomcat.dbcp.dbcp.datasources.PerUserPoolDataSource");
             s.add("org.apache.tomcat.dbcp.dbcp.datasources.SharedPoolDataSource");
     
    -        // [databind#2998]: org.apache.tomcat/tomcat-dbcp (embedded dbcp 2.x)
    +        // [databind#2998]/[databind#3004]: org.apache.tomcat/tomcat-dbcp (embedded dbcp 2.x)
             // (derivative of #2478)
    +        s.add("org.apache.tomcat.dbcp.dbcp2.cpdsadapter.DriverAdapterCPDS");
             s.add("org.apache.tomcat.dbcp.dbcp2.datasources.PerUserPoolDataSource");
             s.add("org.apache.tomcat.dbcp.dbcp2.datasources.SharedPoolDataSource");
     
             // [databind#2999]: org.glassfish.web/javax.servlet.jsp.jstl (embedded Xalan)
             // (derivative of #2469)
             s.add("com.oracle.wls.shaded.org.apache.xalan.lib.sql.JNDIConnectionPool");
     
    -        // [databind#303]: another case of embedded Xalan (derivative of #2469)
    +        // [databind#3003]: another case of embedded Xalan (derivative of #2469)
             s.add("org.docx4j.org.apache.xalan.lib.sql.JNDIConnectionPool");
    -
    +        
             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

News mentions

0

No linked articles in our index yet.