CVE-2010-4535
NoneCVSS
—
EPSS
3.4%
Published
Jan 10, 2011
CISA due date
—
Cloudanix analysis
A flaw in the website's password reset feature could allow an attacker to make the entire site crash or become unavailable for everyone by sending it a specially crafted link.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Web Framework
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability allows a remote, unauthenticated attacker to cause a denial of service (DoS). By sending a password reset URL containing a specially crafted, extremely long base36 timestamp string, an attacker can force the server to consume excessive CPU and memory resources while attempting to process the string as a large integer. This resource exhaustion can render the web application unresponsive or cause it to crash.
Why it matters to the business
An attacker can make the application's password reset feature, and potentially the entire website, unavailable to legitimate users. This can disrupt user access, prevent account recovery, and damage the organization's reputation by making the service appear unreliable. For businesses reliant on their web application, this downtime can lead to lost revenue, customer churn, and operational disruption.
How an attack unfolds
A remote, unauthenticated attacker identifies a target application running a vulnerable version of Django. The attacker crafts a malicious URL for the password reset confirmation page. In the part of the URL where a timestamp is expected, the attacker inserts an exceptionally long string of characters representing a massive integer in base36 format. When the Django application receives this request, it attempts to parse this huge number without any prior validation of the string's length. This computation is resource-intensive, and by sending one or more of these requests, the attacker can tie up server processes, exhaust system resources (CPU and memory), and trigger a denial of service condition that affects all users.
How to fix it
To remediate this vulnerability, upgrade the Django framework to a patched version. Per the advisory, you should upgrade to Django 1.1.3 or later, 1.2.4 or later, or 1.3 beta 1 or later. The recommended course of action is to upgrade to the latest stable, supported version of Django to ensure all known security vulnerabilities are addressed.
How to confirm the fix worked
To confirm the vulnerability has been remediated, first verify the version of Django installed in your application's environment. You can check dependency files like 'requirements.txt' or use the command `python -m django --version`. Ensure the version is at or above the fixed versions (1.1.3, 1.2.4, or 1.3). In a non-production environment, you can attempt to simulate the attack by sending a request to the password reset confirmation endpoint with an abnormally long string in the timestamp field. A patched system should handle the input gracefully without significant resource consumption, likely by rejecting the invalid URL.
Typical attack path
- The attacker identifies a web application using a vulnerable version of the Django framework.
- The attacker locates the password reset functionality, typically at a URL like '/accounts/password/reset/'.
- The attacker crafts a malicious password reset confirmation URL containing an extremely long base36 string in place of the normal timestamp.
- The attacker sends one or more HTTP requests to the server with the malicious URL.
- The target server attempts to process the large number, consumes excessive resources, and becomes unresponsive to legitimate traffic.
How to detect it
Monitor web server access logs (e.g., Nginx, Apache) for GET requests to password reset endpoints that contain unusually long URL paths or path segments. Correlate these requests with server performance metrics; a sudden spike in CPU or memory utilization on a web server following such requests is a strong indicator of an exploitation attempt. Application-level logs may also show errors or timeouts related to integer conversion within the 'django.contrib.auth' module.
- REGEXP:GET \/.*password.*reset.*\/[a-zA-Z0-9]{100,}
What your security team should do
- Immediately identify and prioritize patching all internet-facing applications that use vulnerable versions of Django.
- Perform a dependency scan across all codebases to find any instances of outdated Django versions.
- As a defense-in-depth measure, consider implementing rate-limiting on unauthenticated, resource-intensive endpoints like password reset to mitigate the impact of this and similar denial-of-service attacks.
The record
The password reset functionality in django.contrib.auth in Django before 1.1.3, 1.2.x before 1.2.4, and 1.3.x before 1.3 beta 1 does not validate the length of a string representing a base36 timestamp, which allows remote attackers to cause a denial of service (resource consumption) via a URL that specifies a large base36 integer.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| PyPI | django | 0 | 1.1.3 |
| PyPI | django | 1.2 | 1.2.4 |
| Debian:11 | python-django | 0 | 1.2.4-1 |
| Debian:12 | python-django | 0 | 1.2.4-1 |
| Debian:13 | python-django | 0 | 1.2.4-1 |
| pypi | Django | 1.2 | No fix |
Related vulnerabilities
- GHSA-8p8v-wh79-9r56 Django vulnerable to Uncontrolled Resource Consumption Also affects django
- GHSA-mjgh-79qc-68w3 Django has a Race Condition vulnerability Also affects django
- CVE-2026-25673 An issue was discovered in 6.0 before 6.0.3, 5.2 before 5.2.12, and 4.2 before 4.2.29. Also affects django
- CVE-2026-25674 An issue was discovered in 6.0 before 6.0.3, 5.2 before 5.2.12, and 4.2 before 4.2.29. Also affects django
- GHSA-6426-9fv3-65x8 Django has an SQL Injection issue Also affects django
- GHSA-gvg8-93h5-g6qq Django has an SQL Injection issue Also affects django
- GHSA-2mcm-79hx-8fxw Django has Observable Timing Discrepancy Also affects django
- GHSA-33mw-q7rj-mjwj Django has Inefficient Algorithmic Complexity Also affects django