CVE-2020-28473
Web Cache Poisoning
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
6.8
Web Cache Poisoning
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.
- Record
CVE-2020-28473- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H/E:P/RL:O/RC:C - Updated
- 2026-11-02
EUVDEUVD-2021-0038
6.8
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.
- Record
EUVD-2021-0038- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H/E:P/RL:O/RC:C - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-qhx9-7hx7-cp4r
6.1
bottle HTTP Request smuggling
The package bottle 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.
- Record
GHSA-qhx9-7hx7-cp4r- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Weakness
- CWE-444
- Updated
- 2026-11-02
NVD
6.8
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.
- Record
CVE-2020-28473- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - CVSS 2.0
- 5.8 Medium
AV:N/AC:M/Au:N/C:P/I:P/A:N - Weakness
- CWE-444
- Updated
- 2026-11-02
OSV
6.8
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.
- Record
CVE-2020-28473- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2020-28473
6.8
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.
- Record
DEBIAN-CVE-2020-28473- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
Show 9 moreShow less
OSVGHSA-qhx9-7hx7-cp4r
6.1
bottle HTTP Request smuggling
The package bottle 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.
- Record
GHSA-qhx9-7hx7-cp4r- CVSS 4.0
- 6.1 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Weakness
- CWE-444
- Updated
- 2026-11-02
OSVOESA-2021-1067
6.8
python-bottle security update
Bottle is a fast, simple and lightweight WSGI micro web-framework for Python. It is distributed as a single file module and has no dependencies other than the Python Standard Library.
Security Fix(es):
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.(CVE-2020-28473)
- Record
OESA-2021-1067- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-28473
6.8
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.
- Record
UBUNTU-CVE-2020-28473- CVSS 3.1
- 6.8 Medium
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVMGASA-2021-0171 No score
Updated python-bottle packages fix security vulnerability
Updated python-bottle packages fix security vulnerability:
python-bottle before 0.12.19 is 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 (CVE-2020-28473).
- Record
MGASA-2021-0171- Updated
- 2026-11-02
OSVopenSUSE-SU-2021:0302-1 No score
Security update for python-bottle
This update for python-bottle fixes the following issues:
- CVE-2020-28473: Fixed Web Cache Poisoning vulnerability using parameter cloaking (bsc#1182181).
This update was imported from the SUSE:SLE-15:Update update project.
- Record
openSUSE-SU-2021:0302-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:13210-1 No score
python-bottle-doc-0.12.25-5.1 on GA media
These are all security issues fixed in the python-bottle-doc-0.12.25-5.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:13210-1- Updated
- 2026-11-02
OSVPYSEC-2021-129 No score
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.
- Record
PYSEC-2021-129- Updated
- 2026-11-02
OSVSUSE-SU-2021:0483-1 No score
Security update for python-bottle
This update for python-bottle fixes the following issues:
- CVE-2020-28473: Fixed Web Cache Poisoning vulnerability using parameter cloaking (bsc#1182181).
- Record
SUSE-SU-2021:0483-1- Updated
- 2026-11-02
OSVUSN-5105-1 No score
python-bottle vulnerability
It was discovered that Bottle incorrectly handled certain inputs. An attacker could possibly use this issue to cache malicious requests.
- Record
USN-5105-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
bottlePyPI |
before 0.12.19 | 0.12.19 |
python-bottleDebian:12 |
before 0.12.19-1 | 0.12.19-1 |
python-bottleDebian:13 |
before 0.12.19-1 | 0.12.19-1 |
python-bottleDebian:14 |
before 0.12.19-1 | 0.12.19-1 |
python-bottleDebian:9 |
before 0.12.13-1+deb9u1, plus listed versions 0.12.13-1 |
0.12.13-1+deb9u1 |
bottlePyPI |
before 0.12.19, plus listed versions 0.10.10.10.100.10.110.10.120.10.2 Show 45 moreShow less0.10.30.10.40.10.50.10.60.10.70.10.80.10.90.11.10.11.20.11.30.11.40.11.50.11.60.11.70.12.10.12.100.12.110.12.120.12.130.12.140.12.150.12.160.12.170.12.180.12.20.12.30.12.40.12.50.12.60.12.70.12.80.12.90.4.100.4.110.4.120.4.130.4.140.4.30.4.40.4.60.4.70.4.80.4.90.5.30.5.4 |
0.12.19 |
python-bottleMageia:7 |
before 0.12.16-1.1.mga7 | 0.12.16-1.1.mga7 |
python-bottleopenEuler:20.03-LTS |
before 0.12.13-8.oe1 | 0.12.13-8.oe1 |
python-bottleopenEuler:20.03-LTS-SP1 |
before 0.12.13-8.oe1 | 0.12.13-8.oe1 |
python-bottleSUSE:Linux Enterprise Module for Desktop Applications 15 SP2 |
before 0.12.13-3.3.1 | 0.12.13-3.3.1 |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-bottleSUSE:Linux Enterprise Module for Python 2 15 SP2 |
before 0.12.13-3.3.1 | 0.12.13-3.3.1 |
python-bottleUbuntu:Pro:14.04:LTS |
before 0.12.0-1ubuntu0.1~esm2, plus listed versions 0.11.6-10.12.0-10.12.0-1ubuntu0.1~esm1 |
0.12.0-1ubuntu0.1~esm2 |
python-bottleUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 0.12.7-10.12.7-1+deb8u1build0.16.04.10.12.7-1+deb8u1ubuntu0.1~esm1 |
None known |
python-bottleUbuntu:18.04:LTS |
before 0.12.13-1ubuntu0.1, plus listed versions 0.12.13-1 |
0.12.13-1ubuntu0.1 |
python-bottleUbuntu:20.04:LTS |
before 0.12.15-2.1ubuntu0.1, plus listed versions 0.12.15-20.12.15-2build10.12.15-2.1 |
0.12.15-2.1ubuntu0.1 |
python-bottleUbuntu:22.04:LTS |
All versions, plus listed versions 0.12.19-10.12.19-1+deb11u1build0.22.04.1 |
None known |
python-bottleopenSUSE:Leap 15.2 |
before 0.12.13-lp152.4.3.1 | 0.12.13-lp152.4.3.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | ||
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-28473 is a medium vulnerability (CVSS 6.8) in Bottlepy Bottle, published January 18, 2021. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.79%, the 78th percentile. Fixed in bottle 0.12.19.
References
snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108
github.com/bottlepy/bottle
snyk.io/blog/cache-poisoning-in-popular-open-source-packages
lists.debian.org/debian-lts-announce/2021/01/msg00019.html
nvd.nist.gov/vuln/detail/CVE-2020-28473
github.com/bottlepy/bottle/commit/57a2f22e0c1d2b328c4f54bf75741d74f47f1a6b
Show 15 moreShow less
github.com/advisories/GHSA-qhx9-7hx7-cp4r
github.com/pypa/advisory-database/tree/main/vulns/bottle/PYSEC-2021-129.yaml
security-tracker.debian.org/tracker/CVE-2020-28473
advisories.mageia.org/MGASA-2021-0171.html
bugs.mageia.org/show_bug.cgi?id=28219
debian.org/lts/security/2021/dla-2531
openeuler.org/en/security/safety-bulletin/detail.html?id=openEuler-SA-2021-1067
suse.com/support/update/announcement/2021/suse-su-20210483-1
bugzilla.suse.com/1182181
suse.com/security/cve/CVE-2020-28473
ubuntu.com/security/CVE-2020-28473
ubuntu.com/security/notices/USN-5105-1
cve.org/CVERecord?id=CVE-2020-28473
lists.opensuse.org/archives/list/[email protected]/thread/NH4G4ACMTOHQQPWHAFALRZDCUZ5J46OZ
suse.com/security/cve/CVE-2022-31799
Left out here: 23 versions. The JSON record has them.