{"id":"CVE-2026-3644","title":"The fix for CVE-2026-0672, which rejected control characters in http.cookies.Morsel, was incomplete","summary":"The fix for CVE-2026-0672, which rejected control characters in http.cookies.Morsel, was incomplete. The Morsel.update(), |= operator, and unpickling paths were not patched, allowing control characters to bypass input validation. Additio…","severity":"high","cvss":7.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N","cwe":["CWE-20","CWE-116"],"vendor":"python","product":"python","affected":["python < 3.13.13","python >= 3.14.0, < 3.14.4","python = 3.15.0"],"patched":["python 3.14.4"],"published":"2026-03-16","updated":"2026-06-30","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-3644","references":[{"url":"https://github.com/python/cpython/commit/556aa098e738b127c714866f819b4abe2f7593d8","label":"cna@python.org"},{"url":"https://github.com/python/cpython/commit/57e88c1cf95e1481b94ae57abe1010469d47a6b4","label":"cna@python.org"},{"url":"https://github.com/python/cpython/commit/62ceb396fcbe69da1ded3702de586f4072b590dd","label":"cna@python.org"},{"url":"https://github.com/python/cpython/commit/d16ecc6c3626f0e2cc8f08c309c83934e8a979dd","label":"cna@python.org"},{"url":"https://github.com/python/cpython/commit/dae4b1a21f8df4570e30986affd61bbe4ade4cef","label":"cna@python.org"},{"url":"https://github.com/python/cpython/issues/145599","label":"cna@python.org"},{"url":"https://github.com/python/cpython/pull/145600","label":"cna@python.org"},{"url":"https://mail.python.org/archives/list/security-announce@python.org/thread/H6CADMBCDRFGWCMOXWUIHFJNV43GABJ7/","label":"cna@python.org"}],"tags":["nvd"],"epss":0.00478,"epssPercentile":0.40329,"ingestedAt":"2026-07-01T03:50:34.530Z","slug":"CVE-2026-3644","body":"## Overview\n\nThe fix for CVE-2026-0672, which rejected control characters in http.cookies.Morsel, was incomplete. The Morsel.update(), |= operator, and unpickling paths were not patched, allowing control characters to bypass input validation. Additionally, BaseCookie.js_output() lacked the output validation applied to BaseCookie.output().\n\n## Affected\n\n- `python < 3.13.13`\n- `python >= 3.14.0, < 3.14.4`\n- `python = 3.15.0`\n\n## Remediation\n\nUpgrade past the affected range:\n\n- `python 3.14.4`","depth":"twilight","depthScore":41,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}