{"cve":"CVE-2026-35597","nvd":{"published":"2026-04-10T17:17:03.217","modified":"2026-10-26T22:10:00.163","status":"Analyzed","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.","cvss_v4":null,"cvss_v3":{"version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N","score":7.5},"cwes":["CWE-307"],"references":["https://github.com/go-vikunja/vikunja/commit/6ca0151d02fa0e8c7e2181ab916a28e08caaaec8","https://github.com/go-vikunja/vikunja/pull/2576","https://github.com/go-vikunja/vikunja/releases/tag/v2.3.0","https://github.com/go-vikunja/vikunja/security/advisories/GHSA-fgfv-pv97-6cmj","https://github.com/go-vikunja/vikunja/security/advisories/GHSA-fgfv-pv97-6cmj"],"products":["vikunja:vikunja"],"source":"nvd","synced_at":"2026-10-26T22:26:44.656832877+00:00"},"epss":{"cve":"CVE-2026-35597","score":0.00296,"percentile":0.22105,"date":"2026-10-26"},"kev":null,"osv":[{"id":"GHSA-fgfv-pv97-6cmj","url":"https://osv.dev/vulnerability/GHSA-fgfv-pv97-6cmj","summary":"Vikunja Vulnerable to TOTP Brute-Force Due to Non-Functional Account Lockout","modified":"2026-07-21T14:02:38Z","packages":[{"ecosystem":"Go","name":"code.vikunja.io/api","purl":"pkg:golang/code.vikunja.io/api","ranges":["<2.3.0"],"fixed":["2.3.0"]}]},{"id":"GO-2026-5362","url":"https://osv.dev/vulnerability/GO-2026-5362","summary":"Vikunja Vulnerable to TOTP Brute-Force Due to Non-Functional Account Lockout in code.vikunja.io/api","modified":"2026-06-25T19:45:34.729264710Z","packages":[{"ecosystem":"Go","name":"code.vikunja.io/api","purl":"pkg:golang/code.vikunja.io/api","ranges":["all versions"],"fixed":[]}]}],"attribution":["This product uses the NVD API but is not endorsed or certified by the NVD.","EPSS scores: FIRST Exploit Prediction Scoring System, https://www.first.org/epss","Known exploited vulnerabilities: CISA Known Exploited Vulnerabilities Catalog, https://www.cisa.gov/known-exploited-vulnerabilities-catalog","Package advisories: OSV (https://osv.dev), from the GitHub Advisory Database, PyPA, Go, RustSec and other ecosystem databases, under CC-BY 4.0 or CC0","CVE records: the CVE Program's CVE List (https://www.cve.org), under its terms of use (https://www.cve.org/Legal/TermsOfUse). CVE is a registered trademark of The MITRE Corporation; this product is not affiliated with the CVE Program."]}