Quick answers
- Is CVE-2026-91972 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-91972 being exploited in the wild.
- How severe is CVE-2026-91972?
- High severity, with a CVSS score of 7.5, published 15 September 2026.
- Which products and versions are affected?
- code.vikunja.io/api (Go) <= 2.5.0, SEMVER:introduced=0, SEMVER:introduced=0,fixed=2.6.0; Vikunja before 2.6.0.
- Is there a fix for CVE-2026-91972?
- Yes. code.vikunja.io/api (Go): upgrade to 2.6.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-91972 attacked?
- It is attacked over the network.
- Am I affected by CVE-2026-91972?
- Check whether you run code.vikunja.io/api (Go) or Vikunja at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
How to fix
- code.vikunja.io/api (Go): upgrade to 2.6.0 or later
go get code.vikunja.io/api@v2.6.0
Technical details
The vulnerability is a missing rate-limit enforcement (CWE-307) in the API routing layer. The registerAPIRoutesV2() function in pkg/routes/routes.go fails to apply the unauthRateLimit() middleware (a default per-IP floor of 10 requests per 60 seconds) to public authentication endpoints, instead relying on setupRateLimit() which is configuration-gated and disabled by default. This contrasts with the v1 API implementation, which unconditionally applies unauthRateLimit() to all pre-auth routes. The attack is network-reachable, requires no authentication or user interaction, and enables unbounded brute-force attacks against login, registration, and password-reset endpoints. The fix (version 2.6.0+) applies the unconditional rate-limit floor to v2 public route groups.
Affected products
- Vikunja Vikunja before 2.6.0
Identifiers
- CVE-2026-91972
- GHSA-6rvj-qwjf-3m4q
- GO-2026-6721
Timeline
- 2026-08-31: disclosed
- 2026-09-15: patched