{"id":"CVE-2026-3644","state":"PUBLISHED","title":"Incomplete control character validation in http.cookies","description":"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. Additionally, BaseCookie.js_output() lacked the output validation applied to BaseCookie.output().","publishedAt":"2026-03-16T17:37:31.344Z","updatedAt":"2026-08-13T00:27:41.980Z","severity":{"score":6,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","source":"PSF"},"assigner":"PSF","products":["Python Software Foundation CPython"],"affected":[{"vendor":"Python Software Foundation","product":"CPython","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.10.21","versionType":"python"},{"version":"3.11.0","status":"affected","lessThan":"3.11.16","versionType":"python"},{"version":"3.12.0","status":"affected","lessThan":"3.12.14","versionType":"python"},{"version":"3.13.0","status":"affected","lessThan":"3.13.13","versionType":"python"},{"version":"3.14.0","status":"affected","lessThan":"3.14.4","versionType":"python"},{"version":"3.15.0a1","status":"affected","lessThan":"3.15.0a8","versionType":"python"}],"modules":["http.cookies"],"repo":"https://github.com/python/cpython"}],"references":["https://mail.python.org/archives/list/security-announce@python.org/thread/H6CADMBCDRFGWCMOXWUIHFJNV43GABJ7/","https://github.com/python/cpython/commit/57e88c1cf95e1481b94ae57abe1010469d47a6b4","https://github.com/python/cpython/issues/145599","https://github.com/python/cpython/pull/145600","https://github.com/python/cpython/commit/62ceb396fcbe69da1ded3702de586f4072b590dd","https://github.com/python/cpython/commit/d16ecc6c3626f0e2cc8f08c309c83934e8a979dd","https://github.com/python/cpython/commit/556aa098e738b127c714866f819b4abe2f7593d8","https://github.com/python/cpython/commit/dae4b1a21f8df4570e30986affd61bbe4ade4cef","https://github.com/python/cpython/commit/3974092b037f9a3b000fb15b48ea61ce3b25d330"],"weaknesses":["CWE-20","CWE-116"],"ingestedAt":"2026-10-29T20:11:50.837Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/3xxx/CVE-2026-3644.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-3644","state":"PUBLISHED","datePublished":"2026-03-16T17:37:31.344Z","dateUpdated":"2026-08-13T00:27:41.980Z","assignerShortName":"PSF","assignerOrgId":"28c92f92-d60d-412d-b760-e73465c3df22","dateReserved":"2026-03-06T16:13:09.289Z"},"containers":{"cna":{"title":"Incomplete control character validation in http.cookies","descriptions":[{"lang":"en","value":"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. Additionally, BaseCookie.js_output() lacked the output validation applied to BaseCookie.output()."}],"affected":[{"vendor":"Python Software Foundation","product":"CPython","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.10.21","versionType":"python"},{"version":"3.11.0","status":"affected","lessThan":"3.11.16","versionType":"python"},{"version":"3.12.0","status":"affected","lessThan":"3.12.14","versionType":"python"},{"version":"3.13.0","status":"affected","lessThan":"3.13.13","versionType":"python"},{"version":"3.14.0","status":"affected","lessThan":"3.14.4","versionType":"python"},{"version":"3.15.0a1","status":"affected","lessThan":"3.15.0a8","versionType":"python"}],"modules":["http.cookies"],"repo":"https://github.com/python/cpython"}],"references":[{"url":"https://mail.python.org/archives/list/security-announce@python.org/thread/H6CADMBCDRFGWCMOXWUIHFJNV43GABJ7/","tags":["vendor-advisory"]},{"url":"https://github.com/python/cpython/commit/57e88c1cf95e1481b94ae57abe1010469d47a6b4","tags":["patch"]},{"url":"https://github.com/python/cpython/issues/145599","tags":["issue-tracking"]},{"url":"https://github.com/python/cpython/pull/145600","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/62ceb396fcbe69da1ded3702de586f4072b590dd","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/d16ecc6c3626f0e2cc8f08c309c83934e8a979dd","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/556aa098e738b127c714866f819b4abe2f7593d8","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/dae4b1a21f8df4570e30986affd61bbe4ade4cef","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/3974092b037f9a3b000fb15b48ea61ce3b25d330","tags":["patch"]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"PRESENT","attackVector":"NETWORK","baseScore":6,"baseSeverity":"MEDIUM","exploitMaturity":"NOT_DEFINED","privilegesRequired":"LOW","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"NONE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"LOW","vulnIntegrityImpact":"HIGH","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"providerMetadata":{"shortName":"PSF","orgId":"28c92f92-d60d-412d-b760-e73465c3df22","dateUpdated":"2026-08-13T00:27:41.980Z"},"credits":[{"lang":"en","type":"coordinator","value":"Stan Ulbrych"},{"lang":"en","type":"remediation developer","value":"Stan Ulbrych"},{"lang":"en","type":"remediation reviewer","value":"Victor Stinner"},{"lang":"en","type":"remediation reviewer","value":"Seth Larson"},{"lang":"en","type":"reporter","value":"Vyom Yadav"}],"source":{"discovery":"UNKNOWN"},"x_generator":{"engine":"Vulnogram 1.0.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-03-16T18:25:27.051552Z","id":"CVE-2026-3644","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-20","type":"CWE","lang":"en","description":"CWE-20 Improper Input Validation"}]},{"descriptions":[{"cweId":"CWE-116","type":"CWE","lang":"en","description":"CWE-116 Improper Encoding or Escaping of Output"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-03-16T18:25:55.021Z"}}]}}}