Executive Summary
CVE-2026-114137 is a high-severity flaw (CVSS 7.4) in Django REST framework (DRF), the widely used toolkit for building Web APIs on Django. In versions from 3.12.0 until 3.18.2, TokenProxy.delete() in rest_framework/authtoken/models.py does not delete the token it is asked to delete.
Vulnerability Details
| Field | Value |
|---|---|
| CVE ID | CVE-2026-114137 |
| CVSS score | 7.4 (High) |
| Component | rest_framework/authtoken/models.py — TokenProxy.delete() |
| Affected versions | 3.12.0 up to (but not including) 3.18.2 |
| Published | 2026-10-21 |
| Source | NVD |
Root Cause
TokenProxy is a proxy model over the concrete Token model. The proxy's primary key is the user id, while the concrete Token model identifies rows by the token string primary key. When TokenProxy.delete() runs, Django issues a deletion query keyed on the user-id value, which matches no row in the token table. The call reports success while the token remains valid.
The NVD description is truncated in the source feed, so the exact reported outcome should be confirmed against the full NVD entry and the DRF release notes.
Impact
Code paths that rely on deleting a token through the proxy model, such as the Django admin token management view or custom revocation logic, may believe a credential has been revoked when it has not. A token that an administrator intended to invalidate (for example after a suspected compromise or an employee departure) can continue to authenticate API requests.
Remediation
- Upgrade Django REST framework to 3.18.2 or later.
- Audit any recent token revocations performed through the admin interface or
TokenProxy. Confirm the rows are gone from theauthtoken_tokentable. - Rotate tokens that were meant to be revoked while running an affected version, by deleting them through the concrete
Tokenmodel or by regenerating them. - Consider token expiry or a short-lived-token scheme so that a failed revocation has a bounded lifetime.