CVE-2020-35681 json
Django Channels leakage of session identifiers using legacy AsgiHandler
published 2021-02-22 5 y ago modified 2026-06-17 4 mo ago also GHSA-v542-8q9x-cffc , PYSEC-2021-113 , EUVD-2021-0041
- cvss
- 7.4
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 2.7%
- EPSS 2.7% chance of exploitation in 30 days, percentile 85%
- public exploits
- 0
- none known
Summary
Django Channels 3.x before 3.0.3 allows remote attackers to obtain sensitive information from a different request scope. The legacy channels.http.AsgiHandler class, used for handling HTTP type requests in an ASGI environment prior to Django 3.0, did not correctly separate request scopes in Channels 3.0. In many cases this would result in a crash but, with correct timing, responses could be sent to the wrong client, resulting in potential leakage of session identifiers and other sensitive data. Note that this affects only the legacy Channels provided class, and not Django's similar ASGIHandler, available from Django 3.0.
Patch / fix
- pypi channels 3.0.3
- djangoproject channels 3.0.3
- python-django-channels Debian 14, Debian 13, Debian 12 3.0.3-1
debian advisories DEBIAN-CVE-2020-35681
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-2020-35681 updated cvss 7.4
django-channels: potential leakage of session identifiers using legacy AsgiHandler
-
Red Hat Update Infrastructure 3 for Cloud Providers python-djangonot 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
2.66% chance of exploitation in the next 30 days, higher than 85% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- channels.readthedocs.io https://channels.readthedocs.io/en/stable/releases/3.0.3.html referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| NVD | 3.1 | 7.4 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H |
| NVD | 2.0 | 5.8 | AV:N/AC:M/Au:N/C:P/I:N/A:P |
| GitHub | 3.1 | 7.4 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | channels | >=3.0.0, <3.0.3 |
3.0.3 |
Classification
- Weakness
-
- CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
References
-
github.com
/django/channels/commit/e85874d9630474986a6937430eac52db79a2a022
web
-
channels.readthedocs.io
/en/stable/releases/3.0.3.html
web, exploit, vendor-advisory
-
channels.readthedocs.io
/en/stable/releases/index.html
web, release-notes, vendor-advisory
-
github.com
/django/channels/releases
web, third-party-advisory
-
nvd.nist.gov
/vuln/detail/CVE-2020-35681
advisory
-
github.com
/advisories/GHSA-v542-8q9x-cffc
advisory
-
github.com
/django/channels
package
-
github.com
/pypa/advisory-database/tree/main/vulns/channels/PYSEC-2021-113.yaml
web
Sources
- CVE List CVE-2020-35681
- GitHub Advisory GHSA-v542-8q9x-cffc
- NVD CVE-2020-35681
- OSV PYSEC-2021-113
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.