CVE-2025-48383
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
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
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
8.2
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
CVE-2025-48383- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-402, CWE-918
- Updated
- 2026-11-02
EUVDEUVD-2025-28218
8.2
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
EUVD-2025-28218- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-wjrh-hj83-3wh7
8.2
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Impact
Instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can secret access tokens across requests. This can allow users to access restricted querysets and restricted data.
Patches
The problem has been patched in version 8.4.1 and all following versions.
Workarounds
This vulnerability is limited use cases where instances of widget classes are created during app loading (not during a request).
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget()}
Django allows you to pass just the widget class (not the instance). This can be used to mitigate the session request leak.
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget}
References
Thanks to @neartik for reporting this issue. I will address it later. I had to delete your issue, to avoid exploitation of this security issue.
- Record
GHSA-wjrh-hj83-3wh7- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-402, CWE-918
- Updated
- 2026-11-02
NVD
8.2
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
CVE-2025-48383- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-402, CWE-918
- Updated
- 2026-11-02
OSV
8.2
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
CVE-2025-48383- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-402, CWE-918
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2025-48383
8.2
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
DEBIAN-CVE-2025-48383- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-02
OSVGHSA-wjrh-hj83-3wh7
8.2
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Impact
Instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can secret access tokens across requests. This can allow users to access restricted querysets and restricted data.
Patches
The problem has been patched in version 8.4.1 and all following versions.
Workarounds
This vulnerability is limited use cases where instances of widget classes are created during app loading (not during a request).
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget()}
Django allows you to pass just the widget class (not the instance). This can be used to mitigate the session request leak.
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget}
References
Thanks to @neartik for reporting this issue. I will address it later. I had to delete your issue, to avoid exploitation of this security issue.
- Record
GHSA-wjrh-hj83-3wh7- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-402, CWE-918
- Updated
- 2026-11-02
OSVPYSEC-2026-1300
8.2
Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking
Impact
Instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can secret access tokens across requests. This can allow users to access restricted querysets and restricted data.
Patches
The problem has been patched in version 8.4.1 and all following versions.
Workarounds
This vulnerability is limited use cases where instances of widget classes are created during app loading (not during a request).
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget()}
Django allows you to pass just the widget class (not the instance). This can be used to mitigate the session request leak.
Example of affected code:
class MyForm(forms.ModelForm):
class Meta:
widgets = {"my_select_field": Select2ModelWidget}
References
Thanks to @neartik for reporting this issue. I will address it later. I had to delete your issue, to avoid exploitation of this security issue.
- Record
PYSEC-2026-1300- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2025-48383
8.2
Django-Select2 is a Django integration for Select2. Prior to version 8.4.1, instances of HeavySelect2Mixin subclasses like the ModelSelect2MultipleWidget and ModelSelect2Widget can leak secret access tokens across requests. This can allow users to access restricted query sets and restricted data. This issue has been patched in version 8.4.1.
- Record
UBUNTU-CVE-2025-48383- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
django-select2PyPI |
before 8.4.1 | 8.4.1 |
django-select2Debian:13 |
before 7.10.0-2 | 7.10.0-2 |
django-select2Debian:14 |
before 7.10.0-2 | 7.10.0-2 |
django-select2PyPI |
before 8.4.1, plus listed versions 2.0.13.03.0.13.0.23.1.0 Show 45 moreShow less3.1.13.1.23.1.33.1.43.1.53.2.03.2.13.3.03.3.14.0.04.2.04.2.14.2.24.3.04.3.14.3.25.0.05.0.15.0.25.0.35.1.05.1.15.10.05.11.05.11.15.2.05.2.15.3.05.3.15.4.05.4.15.4.25.4.35.5.05.6.05.7.05.7.15.8.05.8.15.8.105.8.25.8.35.8.45.8.55.8.6 |
8.4.1 |
django-select2Ubuntu:22.04:LTS |
All versions, plus listed versions 7.7.2-1 |
None known |
django-select2Ubuntu:24.04:LTS |
All versions, plus listed versions 7.7.2-17.10.0-1 |
None known |
django-select2Ubuntu:25.10 |
All versions, plus listed versions 7.10.0-17.10.0-2 |
None known |
django-select2Ubuntu:26.10 |
All versions, plus listed versions 7.10.0-3 |
None known |
django-select2Ubuntu:26.04:LTS |
All versions, plus listed versions 7.10.0-27.10.0-3 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-48383 is a high vulnerability (CVSS 8.2) in Codingjoe Django-select2, published May 27, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.33%, the 25th percentile. Fixed in django-select2 8.4.1.
References
github.com/codingjoe/django-select2/security/advisories/GHSA-wjrh-hj83-3wh7
github.com/codingjoe/django-select2/commit/e5f41e6edba004d35f94915ff5e2559f44853412
nvd.nist.gov/vuln/detail/CVE-2025-48383
github.com/advisories/GHSA-wjrh-hj83-3wh7
github.com/CVEProject/cvelistV5/tree/main/cves/2025/48xxx/CVE-2025-48383.json
security-tracker.debian.org/tracker/CVE-2025-48383
Left out here: 52 versions. The JSON record has them.