Vulnerability record · CVE-2023-46695 · published 2 November 2023
CVE-2023-46695: Django UsernameField DoS via slow NFKC normalization on Windows
Djangoproject · Django
Django's NFKC normalization is slow on Windows, and django.contrib.auth.forms.UsernameField processes user-supplied Unicode input without limiting its size. An attacker can submit a username containing a very large number of Unicode characters to trigger excessive CPU consumption and deny service.
Description
An issue was discovered in Django 3.2 before 3.2.23, 4.1 before 4.1.13, and 4.2 before 4.2.7. The NFKC normalization is slow on Windows. As a consequence, django.contrib.auth.forms.UsernameField is subject to a potential DoS (denial of service) attack via certain inputs with a very large number of Unicode characters.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Automated analysis
high priorityCVSS 7.5 with network-reachable, unauthenticated availability impact and a high EPSS score, though exploitation is limited to denial of service and no KEV listing exists.
What it is
Django's NFKC normalization is slow on Windows, and django.contrib.auth.forms.UsernameField processes user-supplied Unicode input without limiting its size. An attacker can submit a username containing a very large number of Unicode characters to trigger excessive CPU consumption and deny service.
Impact
An unauthenticated attacker can tie up server resources and degrade or block availability of the Django application for legitimate users. There is no confidentiality or integrity impact; the effect is denial of service.
Attack surface
Reachable over the network through the authentication form's username field, which is typically exposed on login and registration endpoints. No authentication is required and no user interaction beyond submitting the crafted input is needed, per the CVSS vector AV:N/AC:L/PR:N/UI:N.
Exploitation
Not listed in CISA KEV and no public exploit references are tagged in the record, but EPSS is high at roughly 0.498 (98.8th percentile), indicating elevated likelihood of attempted exploitation.
What to do
- Upgrade to Django 3.2.23, 4.1.13, or 4.2.7 or later, which contain the fix.
- If immediate patching is not possible, apply input length limits on username and other Unicode-normalized fields at the web server or form level.
- Rate-limit and throttle authentication and registration endpoints to reduce the impact of resource-exhaustion attempts.
- Monitor CPU usage on Windows-hosted Django instances and alert on abnormal spikes tied to authentication traffic.
Detection
- Alert on unusually long username values in login or registration request bodies and query strings.
- Monitor for high CPU consumption or request latency spikes correlated with authentication endpoint traffic.
- Review web server and application logs for repeated oversized POST requests to login or registration paths from single sources.
This assessment is produced automatically and is not human-reviewed. Verify against the vendor advisory before acting on it.
Affected products
1 vulnerable configurations from NVD's CPE data, grouped by vendor and product.
References
Track CVE-2023-46695 inside VULONE
Watch it alongside the ransomware crews, C2 infrastructure and forum chatter that reference it, query it through the API and pull it into your SIEM over TAXII.
Related vulnerabilities
Same products first, then exploited flaws of the same weakness class.
Source: NIST National Vulnerability Database (record CVE-2023-46695), CISA KEV, FIRST EPSS (scores of 2026-09-26). This page is refreshed as NVD updates the record.