Vikunja Desktop vulnerable to Remote Code Execution via same-window navigation
Summary
Vikunja Desktop vulnerable to Remote Code Execution via same-window navigation
Original description
The description as published by the source.
Vikunja is an open-source self-hosted task management platform. Starting in version 0.21.0 and prior to version 2.2.0, the Vikunja Desktop Electron wrapper enables nodeIntegration in the main BrowserWindow and does not restrict same-window navigations. An attacker who can place a link in user-generated content (task descriptions, comments, project descriptions) can cause the BrowserWindow to navigate to an attacker-controlled origin, where JavaScript executes with full Node.js access, resulting in arbitrary code execution on the victim's machine. Version 2.2.0 patches the issue.
Root cause
Two misconfigurations combine to create this vulnerability:
-
nodeIntegration: trueis set inBrowserWindowweb preferences (desktop/main.js:14-16), giving any page loaded in the renderer full access to Node.js APIs (require,child_process,fs, etc.). -
No
will-navigateorwill-redirecthandler is registered on thewebContents. The existingsetWindowOpenHandler(desktop/main.js:19-23) only interceptswindow.open()calls (new-window requests). It does not intercept same-window navigations triggered by:- `` links (without
target="_blank") window.locationassignments- HTTP redirects
- `` tags
- `` links (without
Attack scenario
- The attacker is a normal user on the same Vikunja instance (e.g., a member of a shared project).
- The attacker creates or edits a project description or task description containing a standard HTML link, e.g.: `Cli…
Source: OSV.dev (Open Source Vulnerabilities) NVD GitHub Advisory OSV
References
- advisory github.com
- advisory github.com
- advisory nvd.nist.gov
- web vikunja.io