An issue was discovered in Squid through 4.7. When handling the tag esi:when when ESI is enabled, Squid calls ESIExpression::Evaluate. This function uses a fixed stack buffer to hold the expression while it's being evaluated. When processing the expression, it could either evaluate the top of the stack, or add a new member to the stack. When adding a new member, there is no check to ensure that the stack won't overflow.
{
"unresolved_ranges": [
{
"cpe": "cpe:2.3:o:canonical:ubuntu_linux:16.04:*:*:*:lts:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "16.04"
}
]
},
{
"cpe": "cpe:2.3:o:canonical:ubuntu_linux:18.04:*:*:*:lts:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "18.04"
}
]
},
{
"cpe": "cpe:2.3:o:canonical:ubuntu_linux:19.10:*:*:*:*:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "19.10"
}
]
},
{
"cpe": "cpe:2.3:o:canonical:ubuntu_linux:20.04:*:*:*:lts:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "20.04"
}
]
},
{
"cpe": "cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "10.0"
}
]
},
{
"cpe": "cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "9.0"
}
]
},
{
"cpe": "cpe:2.3:o:opensuse:leap:15.1:*:*:*:*:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"last_affected": "15.1"
}
]
}
]
}{
"cpe": "cpe:2.3:a:squid-cache:squid:*:*:*:*:*:*:*:*",
"source": "CPE_FIELD",
"extracted_events": [
{
"introduced": "3.0"
},
{
"last_affected": "3.5.28"
},
{
"introduced": "4.0"
},
{
"last_affected": "4.10"
},
{
"introduced": "5.0"
},
{
"last_affected": "5.0.1"
}
]
}