Skip to content
Fencer Vulns
medium 6.5

CVE-2016-9964 json

bottle.py vulnerable to CRLF Injection

published 2016-12-16 9 y ago modified 2026-06-17 4 mo ago also GHSA-j6f7-hghw-g437 , PYSEC-2016-24 , EUVD-2016-0002

cvss
6.5
version 3.0, NVD
cisa kev
Not listed
not in CISA's catalog
epss
1.8%
EPSS 1.8% chance of exploitation in 30 days, percentile 78%
public exploits
0
none known

Summary

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.

Patch / fix

  • pypi bottle 0.12.11
  • python-bottle Debian 14, Debian 13, Debian 12 0.12.11-1

debian advisories DEBIAN-CVE-2016-9964

  • python-bottle Ubuntu 16.04 LTS 0.12.7-1+deb8u1build0.16.04.1
  • python-bottle Ubuntu Pro 14.04 LTS 0.12.0-1ubuntu0.1~esm1

ubuntu advisories UBUNTU-CVE-2016-9964

Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2016-9964 updated cvss 5.3

python-bottle: redirect() doesn't filter "\r\n" which allows for CRLF attack

  • Red Hat All currently supported Red Hat products
    not affected: vulnerable code not present

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

Exploit prediction

1.76% chance of exploitation in the next 30 days, higher than 78% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
NVD 3.0 6.5 CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
NVD 2.0 4.3 AV:N/AC:M/Au:N/C:N/I:P/A:N
GitHub 3.0 6.5 CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N

Affected packages

ecosystem package affected fixed in
pypi bottle
>=0.10.1, <0.12.11
0.12.11

Classification

Weakness
  • CWE-93 Improper Neutralization of CRLF Sequences

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.