High
Security advisory
Handlebars before 3.0.8 and 4.x before 4.5.3 is vulnerable to Arbitrary Code Execution. The lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript. This can be used to run arbitrary code on a server processing Handlebars templates or in a victim's browser (effectively serving as XSS).
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2019-20920
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 05:27 UTC · Revision 1
Source evidence
Handlebars before 3.0.8 and 4.x before 4.5.3 is vulnerable to Arbitrary Code Execution. The lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript. This can be used to run arbitrary code on a server processing Handlebars templates or in a victim's browser (effectively serving as XSS).
osv:CVE-2019-20920
Complete source record
{
"id": "6a8b089c54faec2873f094e70eb7bce37fc02e73f9568190cfb3194b53cf18eb",
"url": "https://osv.dev/vulnerability/CVE-2019-20920",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2019-20920",
"summary": "Handlebars before 3.0.8 and 4.x before 4.5.3 is vulnerable to Arbitrary Code Execution. The lookup helper fails to properly validate templates, allowing attackers to submit templates that execute arbitrary JavaScript. This can be used to run arbitrary code on a server processing Handlebars templates or in a victim's browser (effectively serving as XSS).",
"evidence": "osv:CVE-2019-20920",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2019-20920",
"aliases": [
"CVE-2019-20920",
"GHSA-3cqr-58rm-57f8",
"SNYK-JS-HANDLEBARS-534478"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:L/A:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/handlebars-lang/handlebars.js",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "16bd606fec0ada4c811eb7afe6bfd619d88f3d37"
},
{
"introduced": "bff5fab8f9d42e21950be00dcf1cedf4dc1a565b"
},
{
"fixed": "c819c8b533934d2ac18001d7eb27a3205b00c2f3"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*",
"range": [
{
"introduced": "0"
},
{
"fixed": "3.0.8"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:handlebarsjs:handlebars:*:*:*:*:*:node.js:*:*",
"range": [
{
"introduced": "4.0.0"
},
{
"fixed": "4.5.3"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"v3.0.7",
"v4.5.2",
"v4.5.1",
"v4.5.0",
"v4.4.3",
"v4.4.2",
"v4.4.1",
"v4.2.1",
"v4.3.4",
"v4.4.0",
"v4.3.3",
"v4.3.2",
"v4.3.1",
"v4.3.0",
"v4.2.0",
"v4.1.2-0",
"v4.1.2",
"v1.3.0",
"v4.1.1",
"v4.0.12",
"v3.0.6",
"v3.0.5",
"v3.0.4",
"v4.0.11",
"v4.0.10",
"v4.0.9",
"v4.0.8",
"v4.0.7",
"v4.0.6",
"v4.0.5",
"v3.0.3",
"v4.0.4",
"v4.0.3",
"v4.0.2",
"v4.0.1",
"v4.0.0",
"v3.0.2",
"v3.0.1",
"v3.0.0",
"v2.0.0",
"v2.0.0-beta.1",
"v2.0.0-alpha.4",
"v2.0.0-alpha.3",
"v2.0.0-alpha.2",
"v2.0.0-alpha.1",
"v1.2.1",
"v1.2.0",
"v1.1.2",
"v1.1.1",
"v1.1.0",
"v1.0.12",
"1.0.0",
"v1.0.11",
"1.0.0-rc.4",
"v1.0.10",
"v1.0.9",
"1.0.0-rc.3",
"v1.0.8",
"1.0.rc.2",
"v1.0.6-2",
"v1.0.6",
"v1.0.6beta",
"1.0.0.beta.1",
"0.9.0.pre.4"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-20920.json"
}
}
],
"modified": "2026-10-24T10:30:28.950515041Z",
"provider": "osv",
"references": [
"https://snyk.io/vuln/SNYK-JS-HANDLEBARS-534478",
"https://www.npmjs.com/advisories/1324",
"https://www.npmjs.com/advisories/1316"
],
"provider_metadata": {}
},
"related_cves": [
{
"value": "CVE-2019-20920",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 432177,
"published_at": "2020-09-30T18:15:17.927+00:00"
}