{"id":"CVE-2016-9964","aliases":["DEBIAN-CVE-2016-9964","DLA-761-1","DSA-3743-1","EUVD-2016-0002","GHSA-j6f7-hghw-g437","MGASA-2017-0031","PYSEC-2016-24","UBUNTU-CVE-2016-9964","openSUSE-SU-2024:11220-1"],"status":"published","title":"bottle.py vulnerable to CRLF Injection","description":"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.","severity":{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium","assessor":"primary","from":"nvd"},"epss":{"day":"2026-11-08","score":0.01761,"percentile":0.78159,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-93"],"published":"2016-12-16T09:02:00Z","modified":"2026-10-20T10:48:06Z","fixes":[{"ecosystem":"PyPI","package":"bottle","fixed_in":["0.12.11"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"python-bottle","fixed_in":["0.12.11-1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"python-bottle","fixed_in":["0.12.11-1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"python-bottle","fixed_in":["0.12.11-1"],"sources":["osv"]},{"ecosystem":"Debian:7","package":"python-bottle","fixed_in":["0.10.11-1+deb7u2"],"sources":["osv"]},{"ecosystem":"Debian:8","package":"python-bottle","fixed_in":["0.12.7-1+deb8u1"],"sources":["osv"]},{"ecosystem":"Mageia:5","package":"python-bottle","fixed_in":["0.12.11-1.mga5"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:14.04:LTS","package":"python-bottle","fixed_in":["0.12.0-1ubuntu0.1~esm1"],"sources":["osv"]},{"ecosystem":"Ubuntu:16.04:LTS","package":"python-bottle","fixed_in":["0.12.7-1+deb8u1build0.16.04.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.10.1"},{"fixed":"0.12.11"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.11-1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.11-1"}]}]},{"source":"osv","ecosystem":"Debian:14","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.11-1"}]}]},{"source":"osv","ecosystem":"Debian:7","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.11-1+deb7u2"}]}],"versions":["0.10.11-1","0.10.11-1+deb7u1"]},{"source":"osv","ecosystem":"Debian:8","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.7-1+deb8u1"}]}],"versions":["0.12.7-1"]},{"source":"osv","ecosystem":"PyPI","package":"bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.10.1"},{"fixed":"0.12.11"}]}],"versions":["0.10.1","0.10.10","0.10.11","0.10.12","0.10.2","0.10.3","0.10.4","0.10.5","0.10.6","0.10.7","0.10.8","0.10.9","0.11.1","0.11.2","0.11.3","0.11.4","0.11.5","0.11.6","0.11.7","0.12.1","0.12.10","0.12.2","0.12.3","0.12.4","0.12.5","0.12.6","0.12.7","0.12.8","0.12.9"]},{"source":"osv","ecosystem":"Mageia:5","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.11-1.mga5"}]}]},{"source":"osv","ecosystem":"PyPI","package":"bottle","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"6d7e13da0f998820800ecb3fe9ccee4189aefb54"}]},{"type":"ECOSYSTEM","events":[{"introduced":"0.10.1"},{"fixed":"0.12.11"}]}],"versions":["0.10.1","0.10.10","0.10.11","0.10.12","0.10.2","0.10.3","0.10.4","0.10.5","0.10.6","0.10.7","0.10.8","0.10.9","0.11.1","0.11.2","0.11.3","0.11.4","0.11.5","0.11.6","0.11.7","0.12.1","0.12.10","0.12.2","0.12.3","0.12.4","0.12.5","0.12.6","0.12.7","0.12.8","0.12.9"]},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.0-1ubuntu0.1~esm1"}]}],"versions":["0.11.6-1","0.12.0-1"]},{"source":"osv","ecosystem":"Ubuntu:16.04:LTS","package":"python-bottle","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.7-1+deb8u1build0.16.04.1"}]}],"versions":["0.12.7-1"]}],"products":[{"vendor":"bottlepy","product":"bottle"},{"vendor":"debian","product":"debian_linux"}],"references":[{"url":"https://github.com/bottlepy/bottle/issues/913","tags":["x_refsource_CONFIRM","x_transferred","Issue Tracking","Patch","Third Party Advisory","fix","web","report"]},{"url":"https://github.com/bottlepy/bottle/commit/6d7e13da0f998820800ecb3fe9ccee4189aefb54","tags":["x_refsource_CONFIRM","x_transferred","Issue Tracking","Patch","Third Party Advisory","fix","web"]},{"url":"http://www.debian.org/security/2016/dsa-3743","tags":["vendor-advisory","x_refsource_DEBIAN","x_transferred","Third Party Advisory","advisory","web"]},{"url":"http://www.securityfocus.com/bid/94961","tags":["vdb-entry","x_refsource_BID","x_transferred","Third Party Advisory","VDB Entry","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2016-9964","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-j6f7-hghw-g437","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/bottle/PYSEC-2016-24.yaml","tags":["web"]},{"url":"https://github.com/bottlepy/bottle/commit/78f67d51965db11cb1ed0003f1eb7926458b5c2c","tags":["web"]},{"url":"https://web.archive.org/web/20170214030628/http://www.securityfocus.com/bid/94961","tags":["web"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2016-9964","tags":["advisory"]},{"url":"https://github.com/bottlepy/bottle","tags":["package"]},{"url":"https://advisories.mageia.org/MGASA-2017-0031.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=20004","tags":["report"]},{"url":"https://lwn.net/Vulnerabilities/709842/","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2016-9964","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2016-9964","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2016-9964","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2016-9964","description":"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.","status":"published","published":"2016-12-16T09:02:00Z","modified":"2024-08-06T03:07:31.418Z","updated_at":"2026-11-02T14:33:32.103757Z"}],"euvd":[{"id":"EUVD-2016-0002","description":"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.","status":"published","published":"2016-12-16T09:02:00Z","modified":"2024-08-06T03:07:31Z","updated_at":"2026-11-03T02:22:25.833438Z"}],"ghsa":[{"id":"GHSA-j6f7-hghw-g437","title":"bottle.py vulnerable to CRLF Injection","description":"bottle.py is a fast and simple micro-framework for python web-applications. 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.","status":"published","published":"2022-05-17T03:05:15Z","modified":"2024-11-18T16:26:24Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"},{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-93"],"updated_at":"2026-11-02T14:38:19.029049Z"}],"nvd":[{"id":"CVE-2016-9964","description":"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.","status":"published","published":"2016-12-16T09:59:00.373Z","modified":"2026-06-17T00:56:51.143Z","cvss":[{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium","assessor":"primary"},{"version":"2.0","score":4.3,"vector":"AV:N/AC:M/Au:N/C:N/I:P/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-93"],"updated_at":"2026-11-02T14:03:32.79141Z"}],"osv":[{"id":"CVE-2016-9964","description":"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.","status":"published","published":"2016-12-16T09:59:00.373Z","modified":"2026-10-20T10:48:06.597693464Z","cvss":[{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:03.472693Z"},{"id":"DEBIAN-CVE-2016-9964","description":"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.","status":"published","published":"2016-12-16T09:59:00.373Z","modified":"2026-09-22T07:02:48.67400766Z","cvss":[{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:45:28.207321Z"},{"id":"GHSA-j6f7-hghw-g437","title":"bottle.py vulnerable to CRLF Injection","description":"bottle.py is a fast and simple micro-framework for python web-applications. 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.","status":"published","published":"2022-05-17T03:05:15Z","modified":"2024-11-25T05:23:41.636493Z","cvss":[{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium"},{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-93"],"updated_at":"2026-11-02T15:46:49.977351Z"},{"id":"UBUNTU-CVE-2016-9964","description":"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.","status":"published","published":"2016-12-16T09:59:00Z","modified":"2025-09-08T16:43:57Z","cvss":[{"version":"3.0","score":6.5,"vector":"CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-02T15:54:13.356796Z"},{"id":"DLA-761-1","title":"python-bottle - security update","status":"published","published":"2016-12-24T00:00:00Z","modified":"2026-03-09T02:08:56.17983Z","updated_at":"2026-11-02T15:46:13.207219Z"},{"id":"DSA-3743-1","title":"python-bottle - security update","status":"published","published":"2016-12-20T00:00:00Z","modified":"2026-03-09T01:22:31.605043Z","updated_at":"2026-11-02T15:46:16.523846Z"},{"id":"MGASA-2017-0031","title":"Updated python-bottle packages fix security vulnerability","description":"redirect() in bottle.py in bottle 0.12.10 doesn't filter a \"\\r\\n\"\nsequence, which leads to a CRLF attack, as demonstrated by a\nredirect(\"233\\r\\nSet-Cookie: name=salt\") call. (CVE-2016-9964)\n","status":"published","published":"2017-01-29T22:31:20Z","modified":"2026-04-16T06:26:14.682645189Z","updated_at":"2026-11-02T15:49:40.103088Z"},{"id":"openSUSE-SU-2024:11220-1","title":"python-bottle-doc-0.12.19-1.8 on GA media","description":"These are all security issues fixed in the python-bottle-doc-0.12.19-1.8 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2024-06-15T00:00:00Z","modified":"2026-02-04T04:02:20.032094Z","updated_at":"2026-11-02T16:58:34.894275Z"},{"id":"PYSEC-2016-24","description":"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.","status":"published","published":"2016-12-16T09:59:00Z","modified":"2023-11-08T03:58:39.635834Z","updated_at":"2026-11-02T15:52:51.645172Z"}]}}
