Security advisory
A Server-Side Template Injection was identified in Apache Syncope prior to 2.1.6 enabling attackers to inject arbitrary Java EL expressions, leading to an unauthenticated Remote Code Execution (RCE) vulnerability. Apache Syncope uses Java Bean Validation (JSR 380) custom constraint validators. When building custom constraint violation error messages, they support different types of interpolation, including Java EL expressions. Therefore, if an attacker can inject arbitrary data in the error message template being passed, they will be able to run arbitrary Java code.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2020-1959
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 06:21 UTC · Revision 1
Source evidence
A Server-Side Template Injection was identified in Apache Syncope prior to 2.1.6 enabling attackers to inject arbitrary Java EL expressions, leading to an unauthenticated Remote Code Execution (RCE) vulnerability. Apache Syncope uses Java Bean Validation (JSR 380) custom constraint validators. When building custom constraint violation error messages, they support different types of interpolation, including Java EL expressions. Therefore, if an attacker can inject arbitrary data in the error message template being passed, they will be able to run arbitrary Java code.
osv:CVE-2020-1959
Complete source record
{
"id": "607f2cc1df155afb5e88cc44922761ce287a89944826e0cac79c36fdad10c84a",
"url": "https://osv.dev/vulnerability/CVE-2020-1959",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2020-1959",
"summary": "A Server-Side Template Injection was identified in Apache Syncope prior to 2.1.6 enabling attackers to inject arbitrary Java EL expressions, leading to an unauthenticated Remote Code Execution (RCE) vulnerability. Apache Syncope uses Java Bean Validation (JSR 380) custom constraint validators. When building custom constraint violation error messages, they support different types of interpolation, including Java EL expressions. Therefore, if an attacker can inject arbitrary data in the error message template being passed, they will be able to run arbitrary Java code.",
"evidence": "osv:CVE-2020-1959",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2020-1959",
"aliases": [
"CVE-2020-1959",
"GHSA-vjqw-r3ww-wj2w"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/apache/syncope",
"type": "GIT",
"events": [
{
"introduced": "49c2e53ba6baf1423a89b5ab9a24aa665a5780ad"
},
{
"fixed": "a1200e18daccb3deebcdaaf91c965596df10cab7"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:apache:syncope:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "2.1.0"
},
{
"fixed": "2.1.6"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"syncope-2.1.5",
"syncope-2.1.4",
"syncope-2.1.3",
"syncope-2.1.2",
"syncope-2.1.1",
"syncope-2.1.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2020-1959.json"
}
}
],
"modified": "2026-10-24T10:30:38.376032546Z",
"provider": "osv",
"references": [],
"provider_metadata": {}
},
"related_cves": [
{
"value": "CVE-2020-1959",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 434440,
"published_at": "2020-05-04T13:15:13.533+00:00"
}