{"id":"PYSEC-2026-1300","summary":"Django-Select2 Vulnerable to Widget Instance Secret Cache Key Leaking","details":"### Impact\n\nInstances 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.\n\n### Patches\n\nThe problem has been patched in version 8.4.1 and all following versions.\n\n### Workarounds\n\nThis vulnerability is limited use cases where instances of widget classes are created during app loading (not during a request).\n\nExample of affected code:\n```python\nclass MyForm(forms.ModelForm):\n    class Meta:\n        widgets = {\"my_select_field\": Select2ModelWidget()}\n```\n\nDjango allows you to pass just the widget class (not the instance). This can be used to mitigate the session request leak.\n\nExample of affected code:\n```python\nclass MyForm(forms.ModelForm):\n    class Meta:\n        widgets = {\"my_select_field\": Select2ModelWidget}\n```\n\n\n\n### References\n\nThanks to @neartik for reporting this issue. I will address it later. I had to delete your issue, to avoid exploitation of this security issue.","aliases":["CVE-2025-48383","GHSA-wjrh-hj83-3wh7"],"modified":"2026-07-07T17:46:34.969610478Z","published":"2026-07-07T16:02:53.098211Z","references":[{"type":"WEB","url":"https://github.com/codingjoe/django-select2/security/advisories/GHSA-wjrh-hj83-3wh7"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-48383"},{"type":"WEB","url":"https://github.com/codingjoe/django-select2/commit/e5f41e6edba004d35f94915ff5e2559f44853412"},{"type":"PACKAGE","url":"https://github.com/codingjoe/django-select2"},{"type":"PACKAGE","url":"https://pypi.org/project/django-select2"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-wjrh-hj83-3wh7"}],"affected":[{"package":{"name":"django-select2","ecosystem":"PyPI","purl":"pkg:pypi/django-select2"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"8.4.1"}]}],"versions":["2.0.1","3.0","3.0.1","3.0.2","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.2.0","3.2.1","3.3.0","3.3.1","4.0.0","4.2.0","4.2.1","4.2.2","4.3.0","4.3.1","4.3.2","5.0.0","5.0.1","5.0.2","5.0.3","5.1.0","5.1.1","5.10.0","5.11.0","5.11.1","5.2.0","5.2.1","5.3.0","5.3.1","5.4.0","5.4.1","5.4.2","5.4.3","5.5.0","5.6.0","5.7.0","5.7.1","5.8.0","5.8.1","5.8.10","5.8.2","5.8.3","5.8.4","5.8.5","5.8.6","5.8.7","5.8.9","5.9.0","6.0.0","6.0.1","6.0.2","6.0.3","6.1.0","6.1.1","6.1.2","6.2.0","6.3.0","6.3.1","7.0.2","7.0.3","7.0.4","7.0.5","7.1.0","7.1.1","7.1.2","7.10.0","7.10.1","7.11.0","7.11.1","7.2.0","7.2.2","7.2.3","7.2.4","7.3.0","7.4.1","7.4.2","7.5.0","7.6.0","7.6.1","7.6.2","7.7.0","7.7.1","7.7.2","7.7.3","7.8.1","7.9.0","8.0.0","8.1.0","8.1.1","8.1.2","8.2.0","8.2.1","8.2.2","8.2.3","8.2.4","8.3.0","8.4.0"],"database_specific":{"source":"https://github.com/pypa/advisory-database/blob/main/vulns/django-select2/PYSEC-2026-1300.yaml"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N"}]}