{"api_version":"1","generated_at":"2026-04-23T02:35:14+00:00","cve":"CVE-2020-28473","urls":{"html":"https://cve.report/CVE-2020-28473","api":"https://cve.report/api/cve/CVE-2020-28473.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2020-28473","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2020-28473"},"summary":{"title":"CVE-2020-28473","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.","state":"PUBLIC","assigner":"report@snyk.io","published_at":"2021-01-18 12:15:00","updated_at":"2021-01-28 15:57:00"},"problem_types":["CWE-444"],"metrics":[],"references":[{"url":"https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages/","name":"https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages/","refsource":"CONFIRM","tags":["Third Party Advisory"],"title":"Cache poisoning in popular open source packages | Snyk Blog","mime":"text/html","httpstatus":"200","archivestatus":"0"},{"url":"https://github.com/bottlepy/bottle","name":"https://github.com/bottlepy/bottle","refsource":"MISC","tags":["Product","Third Party Advisory"],"title":"bottlepy/bottle · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108","name":"https://snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108","refsource":"MISC","tags":["Exploit","Third Party Advisory"],"title":"Web Cache Poisoning in bottle | Snyk","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://lists.debian.org/debian-lts-announce/2021/01/msg00019.html","name":"[debian-lts-announce] 20210124 [SECURITY] [DLA 2531-1] python-bottle security update","refsource":"MLIST","tags":["Third Party Advisory"],"title":"[SECURITY] [DLA 2531-1] python-bottle security update","mime":"text/html","httpstatus":"200","archivestatus":"404"},{"url":"https://www.cve.org/CVERecord?id=CVE-2020-28473","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-28473","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[{"source":"LEGACY","value":"Snyk Security Team","lang":""}],"nvd_cpes":[{"cve_year":"2020","cve_id":"28473","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"bottlepy","cpe5":"bottle","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"28473","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"bottlepy","cpe5":"bottle","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"28473","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"debian","cpe5":"debian_linux","cpe6":"9.0","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"},{"cve_year":"2020","cve_id":"28473","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"o","cpe4":"debian","cpe5":"debian_linux","cpe6":"9.0","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"*","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[{"cve":"CVE-2020-28473","qid":"198535","title":"Ubuntu Security Notification for Bottle Vulnerability (USN-5105-1)"},{"cve":"CVE-2020-28473","qid":"750357","title":"OpenSUSE Security Update for python-bottle (openSUSE-SU-2021:0302-1)"},{"cve":"CVE-2020-28473","qid":"982814","title":"Python (pip) Security Update for bottle (GHSA-qhx9-7hx7-cp4r)"}]},"source_records":{"cve_program":{"data_type":"CVE","data_format":"MITRE","data_version":"4.0","CVE_data_meta":{"ASSIGNER":"report@snyk.io","DATE_PUBLIC":"2021-01-18T11:12:14.506344Z","ID":"CVE-2020-28473","STATE":"PUBLIC","TITLE":"Web Cache Poisoning"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"bottle","version":{"version_data":[{"version_affected":">=","version_value":"0"},{"version_affected":"<","version_value":"0.12.19"}]}}]},"vendor_name":"n/a"}]}},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Web Cache Poisoning"}]}]},"references":{"reference_data":[{"refsource":"MISC","url":"https://snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108","name":"https://snyk.io/vuln/SNYK-PYTHON-BOTTLE-1017108"},{"refsource":"MISC","url":"https://github.com/bottlepy/bottle","name":"https://github.com/bottlepy/bottle"},{"refsource":"CONFIRM","name":"https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages/","url":"https://snyk.io/blog/cache-poisoning-in-popular-open-source-packages/"},{"refsource":"MLIST","name":"[debian-lts-announce] 20210124 [SECURITY] [DLA 2531-1] python-bottle security update","url":"https://lists.debian.org/debian-lts-announce/2021/01/msg00019.html"}]},"description":{"description_data":[{"lang":"eng","value":"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."}]},"impact":{"cvss":{"version":"3.1","vectorString":"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","baseScore":6.8,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},"credit":[{"lang":"eng","value":"Snyk Security Team"}]},"nvd":{"publishedDate":"2021-01-18 12:15:00","lastModifiedDate":"2021-01-28 15:57:00","problem_types":["CWE-444"],"metrics":{"baseMetricV3":{"cvssV3":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:H","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"HIGH","availabilityImpact":"HIGH","baseScore":6.8,"baseSeverity":"MEDIUM"},"exploitabilityScore":1.6,"impactScore":5.2},"baseMetricV2":{"cvssV2":{"version":"2.0","vectorString":"AV:N/AC:M/Au:N/C:P/I:P/A:N","accessVector":"NETWORK","accessComplexity":"MEDIUM","authentication":"NONE","confidentialityImpact":"PARTIAL","integrityImpact":"PARTIAL","availabilityImpact":"NONE","baseScore":5.8},"severity":"MEDIUM","exploitabilityScore":8.6,"impactScore":4.9,"acInsufInfo":false,"obtainAllPrivilege":false,"obtainUserPrivilege":false,"obtainOtherPrivilege":false,"userInteractionRequired":true}},"configurations":{"CVE_data_version":"4.0","nodes":[{"operator":"OR","children":[],"cpe_match":[{"vulnerable":true,"cpe23Uri":"cpe:2.3:a:bottlepy:bottle:*:*:*:*:*:*:*:*","versionEndExcluding":"0.12.19","cpe_name":[]}]},{"operator":"OR","children":[],"cpe_match":[{"vulnerable":true,"cpe23Uri":"cpe:2.3:o:debian:debian_linux:9.0:*:*:*:*:*:*:*","cpe_name":[]}]}]}},"legacy_mitre":{"record":{"CveYear":"2020","CveId":"28473","Ordinal":"190960","Title":"CVE-2020-28473","CVE":"CVE-2020-28473","Year":"2020"},"notes":[{"CveYear":"2020","CveId":"28473","Ordinal":"1","NoteData":"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.","Type":"Description","Title":null},{"CveYear":"2020","CveId":"28473","Ordinal":"2","NoteData":"2021-01-18","Type":"Other","Title":"Published"},{"CveYear":"2020","CveId":"28473","Ordinal":"3","NoteData":"2021-01-24","Type":"Other","Title":"Modified"}]}}}