<?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/"><channel><title>Vikunja (0.22.0 Through 2.3.0) - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/products/vikunja-0.22.0-through-2.3.0/</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>Sun, 02 Aug 2026 13:36:25 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/products/vikunja-0.22.0-through-2.3.0/feed.xml" rel="self" type="application/rss+xml"/><item><title>Authentication Bypass and Privilege Escalation in Vikunja API</title><link>https://feed.craftedsignal.io/briefs/2026-08-vikunja-auth-bypass/</link><pubDate>Sun, 02 Aug 2026 13:36:25 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-08-vikunja-auth-bypass/</guid><description>Vikunja versions 0.22.0 through 2.3.0 contain an authentication bypass vulnerability allowing attackers to impersonate users and manage their API tokens via manipulated link-share JWTs.</description><content:encoded><![CDATA[<p>Vikunja versions 0.22.0 through 2.3.0 are affected by a flaw in API token management where the application fails to validate the principal type during ID resolution. The vulnerability stems from the use of a generic web.Auth.GetID() interface that treats user IDs and link-share IDs as identical numeric sequences. An authenticated attacker can identify a target user's numeric ID and repeatedly create link shares on a project they control until the link-share identifier increments to match the target's user ID. By generating a JWT for this specific link share, the attacker can successfully impersonate the target user when accessing the /api/v1/tokens endpoints. This allows the attacker to list, delete, or create new API tokens with arbitrary scopes under the victim's identity. This vulnerability was addressed in Vikunja version 2.4.0.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the Vikunja instance with a standard low-privilege account.</li>
<li>Attacker performs an authenticated user search to enumerate and capture the target's numeric user ID.</li>
<li>Attacker accesses a project they have write access to and creates multiple link shares.</li>
<li>Attacker monitors the link-share incrementing sequence until the ID matches the target user's numeric ID.</li>
<li>Attacker generates a JWT associated with the specific malicious link share.</li>
<li>Attacker sends an HTTP request to the /api/v1/tokens endpoint using the link-share JWT.</li>
<li>The application incorrectly resolves the JWT principal as the target user.</li>
<li>Attacker successfully creates or deletes API tokens on behalf of the target user to achieve persistence or exfiltration.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>The vulnerability allows for complete account takeover of API token management. An attacker can create new API tokens with escalated permissions, effectively gaining long-term programmatic access to the victim's data, tasks, and integrations. This vulnerability impacts any organization using Vikunja for sensitive project management or internal task tracking.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade all instances of Vikunja to version 2.4.0 or higher immediately to apply the fix for CVE-2026-68581.</li>
<li>Review application logs for unusual spikes in link-share creation activity, which may indicate an attacker attempting to brute-force the numeric ID sequence.</li>
<li>Audit existing API tokens for any unexpected tokens created by users, particularly those with administrative or broad read/write scopes.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category></item></channel></rss>