CVE-2026-114137
High · 7.4CVSS
7.4
EPSS
0.5%
Published
Oct 21, 2026
CISA due date
—
Cloudanix analysis
A flaw in an API toolkit can make it look like login credentials were successfully canceled when they were not, letting anyone who still has the old credentials keep using them.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Full Compromise
- Component
- Web Framework
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
TokenProxy.delete() in rest_framework/authtoken/models.py issues a DELETE using the proxy's user-id PK instead of the Token table's token-string PK, resulting in a no-op query that returns zero rows deleted without error or exception.
Why it matters to the business
Revocation of API credentials can silently fail, leaving tokens active indefinitely and enabling continued unauthorized access; the issue affects recent releases and has shown a 35% rise in exploitation probability over the last 30 days.
How an attack unfolds
An attacker obtains a valid DRF token, continues using it after an administrative or script-based revocation attempt that relies on TokenProxy, and authenticates successfully because the underlying row was never removed.
How to fix it
Upgrade Django REST framework to version 3.18.2 or later; replace any custom revocation code that instantiates TokenProxy with direct Token model operations or the TokenAdmin.delete_model pattern.
How to confirm the fix worked
Confirm the installed DRF version is 3.18.2+, execute a test revocation via TokenProxy and verify the token row is actually removed from the database, and review any custom revocation scripts for TokenProxy usage.
Typical attack path
- Obtain or compromise a DRF authentication token
- Trigger a revocation operation that uses a TokenProxy instance
- Observe the operation completing with a reported success or zero-error state
- Reuse the still-valid token for subsequent authenticated requests
How to detect it
Search application and database logs for TokenProxy deletion attempts that report zero rows affected; correlate continued successful authentications using tokens that were the target of recent revocation calls; inspect code and runtime traces for references to rest_framework/authtoken/models.py TokenProxy.
- TokenProxy.delete
- rest_framework/authtoken/models.py
- zero deletions
- TokenProxy
What your security team should do
- Immediately upgrade all Django REST framework installations to 3.18.2 or newer
- Audit application and operational code for direct use of TokenProxy.delete() or similar proxy-based revocation
- Implement logging around token deletion operations that alerts on zero-row outcomes
- Review all active tokens for any that should have been revoked since the vulnerable versions were in use
The record
Django REST framework is a toolkit for building Web APIs. From 3.12.0 until 3.18.2, TokenProxy.delete() in rest_framework/authtoken/models.py uses the proxy's user-id pk while the concrete Token token-string primary key identifies rows, so Django issues a deletion query that matches no row and reports zero deletions without raising an error. Applications, administrative integrations, or operational scripts that revoke credentials through a TokenProxy instance can therefore believe revocation succeeded while the token remains live and continues authenticating. DRF's own TokenAdmin.delete_model workaround is not affected, but other callers can leave access available indefinitely because DRF tokens do not expire automatically. This issue is fixed in version 3.18.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-76642 util-linux versions through 2.41.5 and 2.42.2 fail to check mount helper exit status… CWE-390
- CVE-2026-59845 A flaw was found in libssh. CWE-390
- CVE-2026-53434 Detection of Error Condition Without Action vulnerability in Apache Tomcat when… CWE-390
- CVE-2026-48792 pam_usb provides hardware authentication for Linux using ordinary removable media. CWE-390
- CVE-2026-44310 Gitsign is a keyless Sigstore to signing tool for Git commits with your a GitHub / OIDC… CWE-390
- CVE-2025-0029 Improper handling of error condition during host-induced faults can allow a local… CWE-390
- CVE-2025-26465 A vulnerability was found in OpenSSH when the VerifyHostKeyDNS option is enabled. CWE-390
- CVE-2024-12086 A flaw was found in rsync. CWE-390