Skip to main content
← All vulnerabilities
CVE-2026-35597GO-2026-5362GHSA-FGFV-PV97-6CMJ

Vikunja Affected by TOTP Brute-Force Due to Non-Functional Account Lockout

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.3.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: no
  • Technical impact: partial

Summary

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.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: no · Technical impact: partial

  3. Record last updated

Affected versions

  • go-vikunja vikunja

    fixed in 2.3.0

  • code.vikunja.io/apiGo

    All versions

  • code.vikunja.io/apiGo

    fixed in 2.3.0

References 4

GitHub · go-vikunja/vikunja