<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Django REST Framework - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/django-rest-framework/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Wed, 21 Oct 2026 21:41:23 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/django-rest-framework/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Django REST framework: Token revocation failure (CVE-2026-114137)</title><link>https://feed.craftedsignal.io/briefs/2026-10-django-rest-token-revocation/</link><pubDate>Wed, 21 Oct 2026 21:41:23 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-10-django-rest-token-revocation/</guid><description>Django REST framework versions 3.12.0 through 3.18.1 contain a logic flaw where TokenProxy.delete() uses an incorrect primary key, causing credential revocation attempts to fail silently.</description><content:encoded><![CDATA[<p>Django REST framework versions 3.12.0 to 3.18.1 contain a logic vulnerability in the <code>TokenProxy.delete()</code> method within <code>rest_framework/authtoken/models.py</code>. The method incorrectly uses the user ID primary key instead of the token string primary key when executing database deletion queries. As a result, the query fails to locate the target record and reports zero deletions without triggering an error or exception.</p>
<p>Any application, administrative integration, or operational script relying on this method to revoke access will incorrectly process the operation as successful. Because Django REST framework tokens do not expire automatically, this vulnerability allows revoked or compromised tokens to remain active indefinitely, granting continued unauthorized access to APIs. This issue is fixed in version 3.18.2.</p>
<h2 id="impact">Impact</h2>
<p>Attackers can maintain persistent access to APIs despite administrator attempts to revoke their credentials. The silent failure prevents security monitoring tools or automated lifecycle management scripts from detecting that the token remains valid in the database.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade Django REST framework to version 3.18.2 or later immediately.</li>
<li>Audit custom scripts, management commands, and administrative API integrations that perform token revocation to ensure they do not rely on <code>TokenProxy.delete()</code>.</li>
<li>For affected systems, perform a database audit to identify orphaned or unintended active tokens that were mistakenly thought to be deleted by automated processes.</li>
<li>Transition to using explicit record deletion methods, such as <code>Token.objects.filter(key=...).delete()</code>, which correctly target the token string primary key.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>vulnerability</category><category>web-api</category><category>django</category></item></channel></rss>