CVE-2020-14172 Overview
CVE-2020-14172 is a critical insecure deserialization vulnerability affecting Atlassian Jira Server and Data Center. The vulnerability exists in the way these products use velocity templates, which allowed remote attackers to achieve remote code execution via insecure deserialization when combined with a server-side template injection vulnerability. This security improvement documents a significant architectural change in how Jira handles velocity templates to prevent such exploitation chains.
Critical Impact
Remote attackers can achieve full remote code execution on vulnerable Jira instances through insecure deserialization, potentially leading to complete system compromise, data theft, and lateral movement within enterprise networks.
Affected Products
- Atlassian Jira Server versions before 7.13.0
- Atlassian Jira Server and Data Center versions from 8.0.0 before 8.5.0
- Atlassian Jira Software Data Center versions from 8.6.0 before 8.8.1
Discovery Timeline
- July 3, 2020 - CVE-2020-14172 published to NVD
- November 21, 2024 - Last updated in NVD database
Technical Details for CVE-2020-14172
Vulnerability Analysis
This vulnerability is classified under CWE-502 (Deserialization of Untrusted Data) and affects the velocity template engine implementation within Atlassian Jira Server and Data Center. The fundamental issue stems from how the application processes serialized objects within the context of velocity template rendering.
When an attacker successfully exploits a server-side template injection (SSTI) vulnerability in the affected Jira versions, they can leverage the insecure deserialization pathway to execute arbitrary code on the server. The velocity template engine, commonly used for dynamic content generation in Java applications, was implemented in a manner that allowed unsafe object instantiation during template processing.
The attack requires no privileges and no user interaction, making it highly exploitable once a template injection vector is discovered. The vulnerability affects all confidentiality, integrity, and availability aspects of the target system, allowing attackers to read sensitive data, modify configurations, and disrupt service operations.
Root Cause
The root cause of this vulnerability lies in the unsafe handling of serialized data within Jira's velocity template processing pipeline. The velocity template engine allowed the instantiation of arbitrary Java classes during template evaluation, which could be chained with deserialization gadgets present in the application's classpath.
When combined with a server-side template injection vulnerability, attackers could craft malicious template expressions that trigger the deserialization of attacker-controlled data, ultimately leading to arbitrary code execution. The lack of proper input validation and class whitelisting during the deserialization process enabled this exploitation pathway.
Attack Vector
The attack vector for CVE-2020-14172 is network-based, requiring no authentication or user interaction. An attacker must first identify a server-side template injection point within the Jira application. Once discovered, they can craft malicious payloads that exploit the insecure deserialization behavior in the velocity template engine.
The exploitation chain typically involves:
- Identifying a template injection vulnerability in Jira's web interface
- Crafting a malicious velocity template expression that triggers deserialization
- Including serialized payload objects that leverage available gadget chains
- Achieving remote code execution when the malicious template is processed
For technical details on the vulnerability mechanism and exploitation patterns, refer to the Atlassian Security Advisory JRASERVER-70940.
Detection Methods for CVE-2020-14172
Indicators of Compromise
- Unusual Java process spawning or execution from the Jira application server
- Unexpected network connections originating from the Jira server to external hosts
- Suspicious velocity template errors or exceptions in Jira application logs
- Evidence of serialization-related class loading for known gadget chains (e.g., Commons Collections, Spring Framework gadgets)
Detection Strategies
- Monitor web application logs for velocity template injection patterns such as $class.forName() or #set directives with unusual class references
- Implement network-level monitoring for anomalous outbound connections from Jira servers
- Deploy endpoint detection solutions capable of identifying deserialization attack patterns and suspicious Java process behaviors
- Review Jira access logs for requests containing serialized object indicators or Base64-encoded payloads in unusual parameters
Monitoring Recommendations
- Enable verbose logging for the velocity template engine to capture template evaluation errors
- Configure alerting for any processes spawned by the Jira application server outside normal operation
- Implement file integrity monitoring on Jira installation directories to detect unauthorized modifications
- Monitor Java garbage collection and memory patterns for anomalies indicating object instantiation attacks
How to Mitigate CVE-2020-14172
Immediate Actions Required
- Upgrade Atlassian Jira Server to version 7.13.0 or later for installations running versions below 7.13.0
- Upgrade to version 8.5.0 or later for installations running versions 8.0.0 through 8.4.x
- Upgrade to version 8.8.1 or later for installations running versions 8.6.0 through 8.8.0
- Restrict network access to Jira instances using firewall rules while preparing for patching
Patch Information
Atlassian has released security updates that implement improved velocity template handling to prevent exploitation of this deserialization vulnerability. The patched versions include architectural changes to how velocity templates interact with the Java serialization mechanism.
Detailed patch information and upgrade instructions are available in the Atlassian Jira Issue Tracker. Organizations should prioritize applying these updates given the critical nature of the vulnerability and the potential for remote code execution.
Workarounds
- Implement web application firewall (WAF) rules to detect and block velocity template injection patterns
- Restrict access to Jira instances to trusted networks only until patching can be completed
- Consider deploying reverse proxy configurations that sanitize potentially malicious template expressions
- Enable Java Security Manager with restrictive policies to limit classes available for instantiation (note: this may impact functionality)
# Verify Jira version to assess vulnerability status
cat /opt/atlassian/jira/atlassian-jira/META-INF/maven/com.atlassian.jira/jira-webapp/pom.properties | grep version
# Restrict network access to Jira while preparing patches
iptables -A INPUT -p tcp --dport 8080 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


