CVE-2026-35597

Medium

Description

Vikunja is an open-source self-hosted task management platform. Prior to 2.3.0, the TOTP failed-attempt lockout mechanism is non-functional due to a database transaction handling bug. When a TOTP validation fails, the login handler in pkg/routes/api/v1/login.go calls HandleFailedTOTPAuth and then unconditionally rolls back. HandleFailedTOTPAuth in pkg/user/totp.go uses an in-memory counter (key-value store) to track failed attempts. When the counter reaches 10, it calls user.SetStatus(s, StatusAccountLocked) on the same database session s. Because the login handler always rolls back after a TOTP failure, the StatusAccountLocked write is undone. The in-memory counter correctly increments past 10, so the lockout code executes on every subsequent attempt, but the database write is rolled back every time. This allows unlimited brute-force attempts against TOTP codes. This vulnerability is fixed in 2.3.0.

SeverityMedium
CVSS5.9
Exploit probability—
ProductVikunja
PublishedApr 10, 2026
First seenApr 10, 2026
Weakness typeCWE-307CWE-307

How to fix

Update
  • vikunja vikunja2.3.0 or later
  • code.vikunja.io/api2.3.0 or later

Affected products

ProductAffected versionsFixed in
vikunja vikunjav < 2.3.02.3.0
code.vikunja.io/apiGov < 2.3.0, No range specified2.3.0

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.