{"id":"CVE-2026-115877","state":"PUBLISHED","title":"Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value","description":"Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.web.http.HTTPChannel.headerReceived rejects a NUL byte in an HTTP header value but accepts a bare carriage return or bare line feed. Because Twisted splits header lines only on CRLF, a hidden Content-Length header can remain folded into another value while a lenient front end treats the bare character as a line terminator. The resulting framing disagreement can smuggle a following request past front-end access controls, poison a shared connection or cache, and expose a later client to the wrong response. This issue is an incomplete-fix residual of earlier Twisted request-smuggling protections. This issue is fixed in version 26.10.0rc1.","publishedAt":"2026-10-23T20:25:12.031Z","updatedAt":"2026-10-29T14:23:05.736Z","severity":{"score":5.4,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["twisted twisted"],"affected":[{"vendor":"twisted","product":"twisted","versions":[{"version":"< 26.10.0rc1","status":"affected"}]}],"references":["https://github.com/twisted/twisted/security/advisories/GHSA-q7qq-6mhp-9rc4","https://github.com/twisted/twisted/pull/12755","https://github.com/twisted/twisted/commit/022b6f7feb5980166c71f54e2c0d8f4f21ff6e1a","https://github.com/twisted/twisted/commit/1616f702d36eda8990a5a5b22ad70fab140a7eb1","https://github.com/twisted/twisted/releases/tag/twisted-26.10.0rc1"],"weaknesses":["CWE-444"],"ingestedAt":"2026-10-29T20:10:43.281Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/115xxx/CVE-2026-115877.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-115877","state":"PUBLISHED","datePublished":"2026-10-23T20:25:12.031Z","dateUpdated":"2026-10-29T14:23:05.736Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-10-23T19:37:27.176Z"},"containers":{"cna":{"title":"Twisted: HTTP Request Smuggling in twisted.web via a Bare CR or LF in a Header Value","descriptions":[{"lang":"en","value":"Twisted is an event-based framework for internet applications, supporting Python 3.6+. Prior to 26.10.0rc1, twisted.web.http.HTTPChannel.headerReceived rejects a NUL byte in an HTTP header value but accepts a bare carriage return or bare line feed. Because Twisted splits header lines only on CRLF, a hidden Content-Length header can remain folded into another value while a lenient front end treats the bare character as a line terminator. The resulting framing disagreement can smuggle a following request past front-end access controls, poison a shared connection or cache, and expose a later client to the wrong response. This issue is an incomplete-fix residual of earlier Twisted request-smuggling protections. This issue is fixed in version 26.10.0rc1."}],"affected":[{"vendor":"twisted","product":"twisted","versions":[{"version":"< 26.10.0rc1","status":"affected"}]}],"references":[{"url":"https://github.com/twisted/twisted/security/advisories/GHSA-q7qq-6mhp-9rc4","name":"https://github.com/twisted/twisted/security/advisories/GHSA-q7qq-6mhp-9rc4","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/twisted/twisted/pull/12755","name":"https://github.com/twisted/twisted/pull/12755","tags":["x_refsource_MISC"]},{"url":"https://github.com/twisted/twisted/commit/022b6f7feb5980166c71f54e2c0d8f4f21ff6e1a","name":"https://github.com/twisted/twisted/commit/022b6f7feb5980166c71f54e2c0d8f4f21ff6e1a","tags":["x_refsource_MISC"]},{"url":"https://github.com/twisted/twisted/commit/1616f702d36eda8990a5a5b22ad70fab140a7eb1","name":"https://github.com/twisted/twisted/commit/1616f702d36eda8990a5a5b22ad70fab140a7eb1","tags":["x_refsource_MISC"]},{"url":"https://github.com/twisted/twisted/releases/tag/twisted-26.10.0rc1","name":"https://github.com/twisted/twisted/releases/tag/twisted-26.10.0rc1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.4,"baseSeverity":"MEDIUM","confidentialityImpact":"LOW","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-444","lang":"en","description":"CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-23T20:25:12.031Z"},"source":{"advisory":"GHSA-q7qq-6mhp-9rc4","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://github.com/twisted/twisted/security/advisories/GHSA-q7qq-6mhp-9rc4","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-29T14:21:44.755036Z","id":"CVE-2026-115877","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-29T14:23:05.736Z"}}]}}}