Medium severity · published Jan 18, 2021
CVE-2020-28473
The package bottle from 0 and before 0.12.19 are vulnerable to Web Cache Poisoning by using a vector called parameter cloaking
6.8
CVSS
1.8%
EPSS
No
On KEV
Description
The package bottle from 0 and before 0.12.19 are vulnerable to Web Cache Poisoning by using a vector called parameter cloaking. When the attacker can separate query parameters using a semicolon (;), they can cause a difference in the interpretation of the request between the proxy (running with default configuration) and the server. This can result in malicious requests being cached as completely safe ones, as the proxy would usually not see the semicolon as a separator, and therefore would not include it in a cache key of an unkeyed parameter.
CVSS vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H
Attack vector
Network
Complexity
High
Privileges
None
User interaction
Required
Confidentiality
None
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)1.8% · higher than 78% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
BO
Bottle · Bottlepy
before 0.12.19 · source: NVD
DL
Debian Linux · Debian
9.0 · source: NVD
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2020-28473
CVE.org
https://www.cve.org/CVERecord?id=CVE-2020-28473
Product
https://github.com/bottlepy/bottle
Third Party Advisory
https://lists.debian.org/debian-lts-announce/2021/01/msg00019.html
Third Party Advisory
https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages/
Exploit
https://snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108
More from Bottle
9.8
CVE-2022-31799
Bottle before 0.12.20 mishandles errors during early request binding
6.5
CVE-2016-9964
redirect() in bottle.py in bottle 0.12.10 doesn't filter a "\r\n" sequence, which leads to a CRLF attack, as demonstrated by a redirect("233\r\nSet-Cookie: name=salt") call
–
CVE-2014-3137
Bottle 0.10.x before 0.10.12, 0.11.x before 0.11.7, and 0.12.x before 0.12.6 does not properly limit content types, which allows remote attackers to bypass intended access…
