Description
Vikunja from 2.2.0 before 2.7.0 contains a permissive CORS configuration that trusts every localhost and 127.0.0.1 port with credentials, even when service.publicurl is set. Attackers controlling a page on any localhost port can send a credentialed request to the token refresh endpoint and read the returned bearer JWT to take over the logged-in user's account.
Published: 2026-10-17
Score: 7.2 High
EPSS: n/a
KEV: No
Impact: Credential theft and account takeover via permissive CORS
Action: Immediate Patch
AI Analysis

Impact

Vikunja versions 2.2.0 through 2.6.x expose a CORS configuration that blindly accepts any localhost or 127.0.0.1 address as a trusted origin when credentials are included, regardless of the service.publicurl setting. A malicious page served from any localhost port can therefore issue an authenticated request to the token refresh endpoint and read the bearer JWT that is returned. Possession of this token effectively grants full control over the victim’s account.

Affected Systems

Vikunja (go‑vikunja:vikunja) is affected. All releases from version 2.2.0 up to, but not including, 2.7.0 contain the flaw. Users deploying these versions on any host should be aware that the default CORS policy permits credentialed requests from localhost origins.

Risk and Exploitability

The vulnerability carries a CVSS score of 7.2, indicating high severity. EPSS data is not available and the entry is not listed in the CISA KEV catalog. The likely attack scenario involves an attacker controlling a local web page or script on the same machine as the Vikunja instance; that attacker can then coerce the application to issue credentialed API calls to the token refresh endpoint and obtain a bearer JWT. This process requires no special privileges beyond hosting a page on a local port and does not rely on network connectivity to the public Internet beyond the localhost loopback.

Generated by OpenCVE AI on October 17, 2026 at 21:12 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Vikunja to version 2.7.0 or later, which removes the permissive localhost CORS rule.
  • If an upgrade is delayed, modify the Vikunja configuration to eliminate "localhost" and "127.0.0.1" origins from the list of allowed CORS origins, and disable credentialed requests for those origins.
  • Apply network controls or firewall rules to prevent external or non‑trusted hosts from serving pages that could execute scripts against the localhost interface used by Vikunja.

Generated by OpenCVE AI on October 17, 2026 at 21:12 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 17 Oct 2026 19:00:00 +0000

Type Values Removed Values Added
Description Vikunja from 2.2.0 before 2.7.0 contains a permissive CORS configuration that trusts every localhost and 127.0.0.1 port with credentials, even when service.publicurl is set. Attackers controlling a page on any localhost port can send a credentialed request to the token refresh endpoint and read the returned bearer JWT to take over the logged-in user's account.
Title Vikunja 2.2.0 before 2.7.0 Permissive CORS Policy Trusting Localhost Origins
First Time appeared Vikunja
Vikunja vikunja
Weaknesses CWE-942
CPEs cpe:2.3:a:vikunja:vikunja:*:*:*:*:*:*:*:*
Vendors & Products Vikunja
Vikunja vikunja
References
Metrics cvssV3_1

{'score': 6.3, 'vector': 'CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:N'}

cvssV4_0

{'score': 7.2, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-10-17T18:46:35.991Z

Reserved: 2026-10-17T12:19:42.358Z

Link: CVE-2026-111922

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-17T19:16:34.957

Modified: 2026-10-17T19:16:34.957

Link: CVE-2026-111922

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-17T21:15:15Z

Weaknesses
  • CWE-942

    Permissive Cross-domain Security Policy with Untrusted Domains