Security advisory
An issue was discovered in Squid through 4.7. When Squid is parsing ESI, it keeps the ESI elements in ESIContext. ESIContext contains a buffer for holding a stack of ESIElements. When a new ESIElement is parsed, it is added via addStackElement. addStackElement has a check for the number of elements in this buffer, but it's off by 1, leading to a Heap Overflow of 1 element. The overflow is within the same structure so it can't affect adjacent memory blocks, and thus just leads to a crash while processing.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2019-12521
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 05:30 UTC · Revision 1
Source evidence
An issue was discovered in Squid through 4.7. When Squid is parsing ESI, it keeps the ESI elements in ESIContext. ESIContext contains a buffer for holding a stack of ESIElements. When a new ESIElement is parsed, it is added via addStackElement. addStackElement has a check for the number of elements in this buffer, but it's off by 1, leading to a Heap Overflow of 1 element. The overflow is within the same structure so it can't affect adjacent memory blocks, and thus just leads to a crash while processing.
osv:CVE-2019-12521
Complete source record
{
"id": "2017976ad7588148bffe418c84388d0df79acf3114dbdaae2cf62e02c250758e",
"url": "https://osv.dev/vulnerability/CVE-2019-12521",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2019-12521",
"summary": "An issue was discovered in Squid through 4.7. When Squid is parsing ESI, it keeps the ESI elements in ESIContext. ESIContext contains a buffer for holding a stack of ESIElements. When a new ESIElement is parsed, it is added via addStackElement. addStackElement has a check for the number of elements in this buffer, but it's off by 1, leading to a Heap Overflow of 1 element. The overflow is within the same structure so it can't affect adjacent memory blocks, and thus just leads to a crash while processing.",
"evidence": "osv:CVE-2019-12521",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2019-12521",
"aliases": [
"CVE-2019-12521"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/squid-cache/squid",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"last_affected": "6cfeb300caf423ff49a0511d8bd43a56f3418273"
},
{
"last_affected": "2e17b02616d37206ba9cccc53c20667624fbef9f"
},
{
"last_affected": "8a511d5e05aa17b47c7566839fd9c524512489d3"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:squid-cache:squid:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "3.0"
},
{
"last_affected": "3.5.28"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:squid-cache:squid:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "4.0"
},
{
"last_affected": "4.7"
}
],
"source": "CPE_RANGE"
},
{
"cpe": "cpe:2.3:a:squid-cache:squid:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "5.0"
},
{
"last_affected": "5.0.1"
}
],
"source": "CPE_RANGE"
}
]
}
}
],
"versions": [
"SQUID_5_0_1",
"SQUID_4_7",
"M-staged-PR365",
"M-staged-PR370",
"M-staged-PR376",
"M-staged-PR375",
"SQUID_4_6",
"M-staged-PR373",
"M-staged-PR372",
"M-staged-PR319",
"M-staged-PR366",
"M-staged-PR351",
"M-staged-PR342",
"M-staged-PR364",
"M-staged-PR359",
"SQUID_4_5",
"M-staged-PR348",
"M-staged-PR345",
"SQUID_4_4",
"M-staged-PR314",
"SQUID_3_5_28",
"M-staged-PR306",
"SQUID_4_3",
"M-staged-PR294",
"M-staged-PR299",
"M-staged-PR295",
"M-staged-PR293",
"M-staged-PR164",
"SQUID_4_2",
"M-staged-PR276",
"M-staged-PR274",
"SQUID_3_5_27",
"M-staged-PR264",
"M-staged-PR268",
"M-staged-PR267",
"M-staged-PR266",
"M-staged-PR258",
"M-staged-PR230",
"M-staged-PR255",
"M-staged-PR252",
"M-staged-PR229",
"M-staged-PR241",
"M-staged-PR239",
"M-staged-PR242",
"SQUID_4_1",
"M-staged-PR235",
"M-staged-PR238",
"M-staged-PR218",
"M-staged-PR237",
"M-staged-PR227",
"M-staged-PR202",
"M-staged-PR225",
"SQUID_4_0_25",
"M-staged-PR220",
"M-staged-PR221",
"M-staged-PR210",
"M-staged-PR209",
"M-staged-PR208",
"M-staged-PR198",
"M-staged-PR206",
"M-staged-PR182",
"M-staged-PR195",
"M-staged-PR199",
"M-staged-PR200",
"M-staged-PR196",
"M-staged-PR193",
"M-staged-PR181",
"M-staged-PR189",
"M-staged-PR176",
"M-staged-PR186",
"SQUID_4_0_24",
"M-staged-PR179",
"M-staged-PR170",
"M-staged-PR161",
"SQUID_4_0_23",
"SQUID_4_0_22",
"SQUID_4_0_21",
"SQUID_3_5_26",
"SQUID_4_0_20",
"SQUID_3_5_25",
"SQUID_4_0_19",
"SQUID_3_5_24",
"SQUID_4_0_18",
"SQUID_3_5_23",
"SQUID_4_0_17",
"SQUID_4_0_16",
"SQUID_3_5_22",
"SQUID_4_0_15",
"SQUID_3_5_21",
"SQUID_4_0_14",
"SQUID_4_0_13",
"SQUID_3_5_20",
"SQUID_4_0_12",
"SQUID_4_0_11",
"SQUID_3_5_19",
"SQUID_4_0_10",
"SQUID_3_5_18",
"SQUID_3_5_17",
"SQUID_4_0_9",
"SQUID_3_5_16",
"SQUID_4_0_8",
"SQUID_3_5_15",
"SQUID_4_0_7",
"SQUID_3_5_14",
"SQUID_4_0_6",
"SQUID_4_0_5",
"SQUID_3_5_13",
"SQUID_4_0_4",
"SQUID_3_5_12",
"SQUID_4_0_3",
"SQUID_3_5_11",
"SQUID_4_0_2",
"SQUID_4_0_1",
"SQUID_3_5_10",
"SQUID_3_5_9",
"SQUID_3_5_8",
"SQUID_3_5_7",
"SQUID_3_5_6",
"SQUID_3_5_5",
"SQUID_3_5_4",
"SQUID_3_5_3",
"SQUID_3_5_2",
"SQUID_3_5_1",
"SQUID_3_5_0_4",
"SQUID_3_5_0_3",
"SQUID_3_5_0_2",
"SQUID_3_5_0_1",
"take00",
"SQUID_3_0_RC1",
"SQUID_3_0_PRE7",
"SQUID_3_0_PRE6",
"SQUID_3_0_PRE5",
"SQUID_3_0_PRE4",
"SQUID_3_0_PRE3",
"SQUID_3_0_PRE2",
"SQUID_3_0_PRE1",
"HISTORIC_RELEASES"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-12521.json"
}
}
],
"modified": "2026-10-24T10:30:29.575676977Z",
"provider": "osv",
"references": [
"https://gitlab.com/jeriko.one/security/-/blob/master/squid/CVEs/CVE-2019-12521.txt",
"https://lists.debian.org/debian-lts-announce/2020/07/msg00009.html",
"https://security.gentoo.org/glsa/202005-05",
"https://security.netapp.com/advisory/ntap-20210205-0006/",
"https://usn.ubuntu.com/4356-1/",
"https://www.debian.org/security/2020/dsa-4682"
],
"provider_metadata": {
"unresolved_ranges": [
{
"cpes": [
"cpe:2.3:o:canonical:ubuntu_linux:16.04:*:*:*:lts:*:*:*",
"cpe:2.3:o:canonical:ubuntu_linux:18.04:*:*:*:lts:*:*:*",
"cpe:2.3:o:canonical:ubuntu_linux:19.10:*:*:*:*:*:*:*",
"cpe:2.3:o:canonical:ubuntu_linux:20.04:*:*:*:lts:*:*:*"
],
"vendor_product": "canonical:ubuntu_linux",
"extracted_events": [
{
"range": [
{
"introduced": "16.04"
},
{
"last_affected": "16.04"
},
{
"introduced": "18.04"
},
{
"last_affected": "18.04"
},
{
"introduced": "19.10"
},
{
"last_affected": "19.10"
},
{
"introduced": "20.04"
},
{
"last_affected": "20.04"
}
],
"source": "CPE_STRING"
}
]
},
{
"cpes": [
"cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*",
"cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*"
],
"vendor_product": "debian:debian_linux",
"extracted_events": [
{
"range": [
{
"introduced": "9.0"
},
{
"last_affected": "9.0"
},
{
"introduced": "10.0"
},
{
"last_affected": "10.0"
}
],
"source": "CPE_STRING"
}
]
},
{
"cpes": [
"cpe:2.3:o:opensuse:leap:15.1:*:*:*:*:*:*:*"
],
"vendor_product": "opensuse:leap",
"extracted_events": [
{
"range": [
{
"introduced": "15.1"
},
{
"last_affected": "15.1"
}
],
"source": "CPE_STRING"
}
]
}
]
}
},
"related_cves": [
{
"value": "CVE-2019-12521",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 432352,
"published_at": "2020-04-15T19:15:12.393+00:00"
}