CVE-2020-10109
HTTP Request Smuggling in Twisted
CVE-2020-10109 is a critical vulnerability (CVSS 9.8) in Twisted, published March 12, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 3.29%, the 88th percentile. Fixed in twisted 20.3.0.
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-444
- Updated
- 2026-11-02
CVE List No score
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
CVE-2020-10109- Updated
- 2026-11-02
EUVDEUVD-2020-0229 No score
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
EUVD-2020-0229- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-p5xh-vx83-mxcj
9.3
HTTP Request Smuggling in Twisted
In Twisted Web through 20.3.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
GHSA-p5xh-vx83-mxcj- CVSS 4.0
- 9.3 Critical
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-444
- Updated
- 2026-11-02
OSVALPINE-CVE-2020-10109
9.8
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
ALPINE-CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-03
OSVAZL-6820
9.8
CVE-2020-10109 affecting package python-twisted for versions less than 22.2.0-1
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
AZL-6820- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 13 moreShow less
OSVBELL-CVE-2020-10109
9.8
CVE-2020-10109 does not affect BellSoft software
- Record
BELL-CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSV
9.8
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2020-10109
9.8
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
DEBIAN-CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-p5xh-vx83-mxcj
9.3
HTTP Request Smuggling in Twisted
In Twisted Web through 20.3.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
GHSA-p5xh-vx83-mxcj- CVSS 4.0
- 9.3 Critical
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-444
- Updated
- 2026-11-02
OSVRHSA-2020:1561
7.3
Red Hat Security Advisory: python-twisted-web security update
- Record
RHSA-2020:1561- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L - Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-10109
9.8
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
UBUNTU-CVE-2020-10109- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVMGASA-2020-0428 No score
Updated python-twisted packages fix security vulnerabilities
Jake Miller and ZeddYu Lu discovered that Twisted incorrectly handled certain content-length headers. A remote attacker could possibly use this issue to perform HTTP request splitting attacks (CVE-2020-10108, CVE-2020-10109).
- Record
MGASA-2020-0428- Updated
- 2026-11-02
OSVopenSUSE-SU-2024:11041-1 No score
matrix-synapse-1.43.0-1.1 on GA media
These are all security issues fixed in the matrix-synapse-1.43.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2024:11041-1- Updated
- 2026-11-02
OSVPYSEC-2020-260 No score
In Twisted Web through 19.10.0, there was an HTTP request splitting vulnerability. When presented with a content-length and a chunked encoding header, the content-length took precedence and the remainder of the request body was interpreted as a pipelined request.
- Record
PYSEC-2020-260- Updated
- 2026-11-02
OSVSUSE-SU-2022:2811-1 No score
Security update for python-Twisted
This update for python-Twisted fixes the following issues:
- CVE-2020-10108: Fixed an HTTP request smuggling issue (bsc#1166457).
- CVE-2020-10109: Fixed an HTTP request smuggling issue (bsc#1166458).
- Record
SUSE-SU-2022:2811-1- Updated
- 2026-11-02
OSVSUSE-SU-2022:2822-1 No score
Security update for python-Twisted
This update for python-Twisted fixes the following issues:
- CVE-2020-10109: Fixed an HTTP request smuggling issue (bsc#1166458).
- Record
SUSE-SU-2022:2822-1- Updated
- 2026-11-02
OSVUSN-4308-1 No score
twisted vulnerabilities
it was discovered that Twisted incorrectly validated or sanitized certain URIs or HTTP methods. A remote attacker could use this issue to inject invalid characters and possibly perform header injection attacks. (CVE-2019-12387)
It was discovered that Twisted incorrectly verified XMPP TLS certificates. A remote attacker could possibly use this issue to perform a machine-in-the-middle attack and obtain sensitive information. (CVE-2019-12855)
It was discovered that Twisted incorrectly handled HTTP/2 connections. A remote attacker could possibly use this issue to cause Twisted to hang or consume resources, leading to a denial of service. This issue only affected Ubuntu 18.04 LTS and Ubuntu 19.10. (CVE-2019-9512, CVE-2019-9514, CVE-2019-9515)
Jake Miller and ZeddYu Lu discovered that Twisted incorrectly handled certain content-length headers. A remote attacker could possibly use this issue to perform HTTP request splitting attacks. (CVE-2020-10108, CVE-2020-10109)
- Record
USN-4308-1- Updated
- 2026-11-02
OSVUSN-4308-2 No score
twisted vulnerabilities
USN-4308-1 fixed several vulnerabilities in Twisted. This update provides the corresponding update for Ubuntu 14.04 ESM.
Original advisory details:
it was discovered that Twisted incorrectly validated or sanitized certain URIs or HTTP methods. A remote attacker could use this issue to inject invalid characters and possibly perform header injection attacks. (CVE-2019-12387)
It was discovered that Twisted incorrectly verified XMPP TLS certificates. A remote attacker could possibly use this issue to perform a machine-in-the-middle attack and obtain sensitive information. (CVE-2019-12855)
Jake Miller and ZeddYu Lu discovered that Twisted incorrectly handled certain content-length headers. A remote attacker could possibly use this issue to perform HTTP request splitting attacks. (CVE-2020-10108, CVE-2020-10109)
- Record
USN-4308-2- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
twistedPyPI |
before 20.3.0 | 20.3.0 |
py3-twistedAlpine:v3.11 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.12 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.13 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.14 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.15 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.16 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.17 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.18 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.19 |
before 20.3.0-r0 | 20.3.0-r0 |
Show 41 moreShow less
| Package | Affected | Fixed |
|---|---|---|
py3-twistedAlpine:v3.20 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.21 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.22 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.23 |
before 20.3.0-r0 | 20.3.0-r0 |
py3-twistedAlpine:v3.24 |
before 20.3.0-r0 | 20.3.0-r0 |
python-twistedAzure Linux:2 |
before 22.2.0-1 | 22.2.0-1 |
twistedDebian:12 |
before 18.9.0-7 | 18.9.0-7 |
twistedDebian:13 |
before 18.9.0-7 | 18.9.0-7 |
twistedDebian:14 |
before 18.9.0-7 | 18.9.0-7 |
twistedDebian:8 |
before 14.0.2-3+deb8u1, plus listed versions 14.0.2-3 |
14.0.2-3+deb8u1 |
twistedDebian:9 |
before 16.6.0-2+deb9u1, plus listed versions 16.6.0-2 |
16.6.0-2+deb9u1 |
twistedPyPI |
before 20.3.0, plus listed versions 1.0.11.0.31.0.41.0.51.0.6 Show 45 moreShow less1.0.71.1.01.1.11.2.010.0.010.1.010.2.011.0.011.1.012.0.012.1.012.2.012.3.013.0.013.1.013.2.014.0.014.0.114.0.215.0.015.1.015.2.015.2.115.3.015.4.015.5.016.0.016.1.016.1.116.2.016.3.016.3.116.3.216.4.016.4.116.5.016.5.0rc116.5.0rc216.6.016.6.0rc116.7.0rc116.7.0rc217.1.017.1.0rc117.5.0 |
20.3.0 |
python-twistedMageia:7 |
before 19.2.1-1.2.mga7 | 19.2.1-1.2.mga7 |
twistedPyPI |
before 20.3.0rc1, plus listed versions 1.0.11.0.31.0.41.0.51.0.6 Show 45 moreShow less1.0.71.1.01.1.11.2.010.0.010.1.010.2.011.0.011.1.012.0.012.1.012.2.012.3.013.0.013.1.013.2.014.0.014.0.114.0.215.0.015.1.015.2.015.2.115.3.015.4.015.5.016.0.016.1.016.1.116.2.016.3.016.3.116.3.216.4.016.4.116.5.016.5.0rc116.5.0rc216.6.016.6.0rc116.7.0rc116.7.0rc217.1.017.1.0rc117.5.0 |
20.3.0rc1 |
python-twisted-webRed Hat:enterprise_linux:7::client |
before 0:12.1.0-7.el7_8 | 0:12.1.0-7.el7_8 |
python-twisted-webRed Hat:enterprise_linux:7::computenode |
before 0:12.1.0-7.el7_8 | 0:12.1.0-7.el7_8 |
python-twisted-webRed Hat:enterprise_linux:7::server |
before 0:12.1.0-7.el7_8 | 0:12.1.0-7.el7_8 |
python-twisted-webRed Hat:enterprise_linux:7::workstation |
before 0:12.1.0-7.el7_8 | 0:12.1.0-7.el7_8 |
python-TwistedSUSE:HPE Helion OpenStack 8 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:OpenStack Cloud 8 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:OpenStack Cloud 9 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:OpenStack Cloud Crowbar 8 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:OpenStack Cloud Crowbar 9 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:Linux Enterprise Module for Web and Scripting 12 |
before 15.2.1-9.20.1 | 15.2.1-9.20.1 |
python-TwistedSUSE:Linux Enterprise Module for Package Hub 15 SP3 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise Module for Server Applications 15 SP3 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise High Performance Computing 15 SP2-ESPOS |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise Server 15 SP2-BCL |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise Server 15 SP2-LTSS |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Linux Enterprise Server for SAP Applications 15 SP2 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Manager Proxy 4.1 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Manager Retail Branch Server 4.1 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Manager Server 4.1 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedSUSE:Enterprise Storage 7 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedopenSUSE:Leap 15.3 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
python-TwistedopenSUSE:Leap 15.4 |
before 19.10.0-150200.3.15.1 | 19.10.0-150200.3.15.1 |
twistedUbuntu:Pro:14.04:LTS |
before 13.2.0-1ubuntu1.2+esm1, plus listed versions 13.0.0-1ubuntu113.2.0-1ubuntu113.2.0-1ubuntu1.2 |
13.2.0-1ubuntu1.2+esm1 |
twistedUbuntu:16.04:LTS |
before 16.0.0-1ubuntu0.4, plus listed versions 15.2.1-1ubuntu215.5.0-115.5.0-215.5.0-2ubuntu115.5.0-4 Show 6 moreShow less16.0.0~pre1-116.0.0~pre1-1ubuntu116.0.0~pre1-2ubuntu116.0.0~pre1-316.0.0-116.0.0-1ubuntu0.2 |
16.0.0-1ubuntu0.4 |
twistedUbuntu:18.04:LTS |
before 17.9.0-2ubuntu0.1, plus listed versions 16.6.0-2ubuntu317.9.0-117.9.0-2 |
17.9.0-2ubuntu0.1 |
matrix-synapseopenSUSE:Tumbleweed |
before 1.43.0-1.1 | 1.43.0-1.1 |
History
| When | Changed | Sources |
|---|---|---|
| 2026-11-03 | affected, aliases, references | OSV |
| 2026-11-03 | aliases | EUVD |
| 2026-11-02 | created | CVE List, GitHub Advisories, NVD, OSV |
References
know.bishopfox.com/advisories
know.bishopfox.com/advisories/twisted-version-19.10.0
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/YW3NIL7VXSGJND2Q4BSXM3CFTAFU6T7D
lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/6ISMZFZBWW4EV6ETJGXAYIXN3AT7GBPL
usn.ubuntu.com/4308-2
usn.ubuntu.com/4308-1
Show 52 moreShow less
security.gentoo.org/glsa/202007-24
lists.debian.org/debian-lts-announce/2022/02/msg00021.html
nvd.nist.gov/vuln/detail/CVE-2020-10109
github.com/twisted/twisted/commit/4a7d22e490bb8ff836892cc99a1f54b85ccb0281
github.com/twisted/twisted/blob/6ff2c40e42416c83203422ff70dfc49d2681c8e2/NEWS.rst
github.com/advisories/GHSA-p5xh-vx83-mxcj
github.com/pypa/advisory-database/tree/main/vulns/twisted/PYSEC-2020-260.yaml
lists.fedoraproject.org/archives/list/[email protected]/message/6ISMZFZBWW4EV6ETJGXAYIXN3AT7GBPL
lists.fedoraproject.org/archives/list/[email protected]/message/YW3NIL7VXSGJND2Q4BSXM3CFTAFU6T7D
security.alpinelinux.org/vuln/CVE-2020-10109
docs.bell-sw.com/security/cves/CVE-2020-10109
security-tracker.debian.org/tracker/CVE-2020-10109
github.com/twisted/twisted
advisories.mageia.org/MGASA-2020-0428.html
bugs.mageia.org/show_bug.cgi?id=26355
ubuntu.com/security/notices/USN-4308-1
access.redhat.com/errata/RHSA-2020:1561
lists.fedoraproject.org/archives/list/[email protected]/thread/YW3NIL7VXSGJND2Q4BSXM3CFTAFU6T7D
debian.org/lts/security/2020/dla-2145
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=1813439
bugzilla.redhat.com/show_bug.cgi?id=1813447
security.access.redhat.com/data/csaf/v2/advisories/2020/rhsa-2020_1561.json
access.redhat.com/security/cve/CVE-2020-10108
cve.org/CVERecord?id=CVE-2020-10108
nvd.nist.gov/vuln/detail/CVE-2020-10108
github.com/twisted/twisted/blob/twisted-20.3.0/NEWS.rst
access.redhat.com/security/cve/CVE-2020-10109
cve.org/CVERecord?id=CVE-2020-10109
suse.com/support/update/announcement/2022/suse-su-20222811-1
bugzilla.suse.com/1166457
bugzilla.suse.com/1166458
suse.com/security/cve/CVE-2020-10108
suse.com/security/cve/CVE-2020-10109
suse.com/support/update/announcement/2022/suse-su-20222822-1
ubuntu.com/security/CVE-2020-10109
ubuntu.com/security/notices/USN-4308-2
ubuntu.com/security/CVE-2019-9512
ubuntu.com/security/CVE-2019-9514
ubuntu.com/security/CVE-2019-9515
ubuntu.com/security/CVE-2019-12387
ubuntu.com/security/CVE-2019-12855
ubuntu.com/security/CVE-2020-10108
suse.com/security/cve/CVE-2018-12291
suse.com/security/cve/CVE-2019-5885
suse.com/security/cve/CVE-2020-1971
suse.com/security/cve/CVE-2020-26257
suse.com/security/cve/CVE-2020-26891
suse.com/security/cve/CVE-2021-29471
suse.com/security/cve/CVE-2021-3449
suse.com/security/cve/CVE-2021-39163
suse.com/security/cve/CVE-2021-39164
Left out here: 51 versions. The JSON record has them.