Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2026-33336— Vikunja Desktop vulnerable to Remote Code Execution via same-window navigation

EPSS 0.34% · P56
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2026-33336

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
Vikunja Desktop vulnerable to Remote Code Execution via same-window navigation
Source: NVD (National Vulnerability Database)
Vulnerability Description
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: 1. **`nodeIntegration: true`** is set in `BrowserWindow` web preferences (`desktop/main.js:14-16`), giving any page loaded in the renderer full access to Node.js APIs (`require`, `child_process`, `fs`, etc.). 2. **No `will-navigate` or `will-redirect` handler** is registered on the `webContents`. The existing `setWindowOpenHandler` (`desktop/main.js:19-23`) only intercepts `window.open()` calls (new-window requests). It does **not** intercept same-window navigations triggered by: - `<a href="https://...">` links (without `target="_blank"`) - `window.location` assignments - HTTP redirects - `<meta http-equiv="refresh">` tags ## Attack scenario 1. The attacker is a normal user on the same Vikunja instance (e.g., a member of a shared project). 2. The attacker creates or edits a project description or task description containing a standard HTML link, e.g.: `<a href="https://evil.example/exploit">Click here for the updated design spec</a>` 3. The Vikunja frontend renders this link. DOMPurify sanitization correctly allows it -- it is a legitimate anchor tag, not a script injection. Render path example: `frontend/src/views/project/ProjectInfo.vue` uses `v-html` with DOMPurify-sanitized output. 4. The victim uses Vikunja Desktop and clicks the link. 5. Because no `will-navigate` handler exists, the BrowserWindow navigates to `https://evil.example/exploit` in the same renderer process. 6. The attacker's page now executes in a context with `nodeIntegration: true` and runs: `require('child_process').exec('id > /tmp/pwned');` 7. Arbitrary commands execute as the victim's OS user. ## Impact Full remote code execution on the victim's desktop. The attacker can read/write arbitrary files, execute arbitrary commands, install malware or backdoors, and exfiltrate credentials and sensitive data. No XSS vulnerability is required -- a normal, sanitizer-approved hyperlink is sufficient. ## Proof of concept 1. Set up a Vikunja instance with two users sharing a project. 2. As the attacker user, edit a project description to include: `<a href="https://attacker.example/poc.html">Meeting notes</a>` 3. Host poc.html with: `<script>require('child_process').exec('calc.exe')</script>` 4. As the victim, open the project in Vikunja Desktop and click the link. 5. calc.exe (or any other command) executes on the victim's machine. ## Credits This vulnerability was found using [GitHub Security Lab Taskflows](https://github.com/GitHubSecurityLab/seclab-taskflows).
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
对生成代码的控制不恰当(代码注入)
Source: NVD (National Vulnerability Database)
Vulnerability Title
Vikunja 代码注入漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Vikunja是Vikunja开源的一个待办事项应用程序。 Vikunja 0.21.0至2.2.0之前版本存在代码注入漏洞,该漏洞源于Vikunja Desktop Electron包装器在主BrowserWindow中启用了nodeIntegration且未限制同窗口导航,可能导致攻击者通过用户生成内容中的链接使BrowserWindow导航至攻击者控制的源,进而执行具有完整Node.js访问权限的JavaScript,最终在受害者机器上执行任意代码。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
go-vikunjavikunja >= 0.21.0, < 2.2.0 -

II. Public POCs for CVE-2026-33336

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-33336

登录查看更多情报信息。

Same Patch Batch · go-vikunja · 2026-03-24 · 16 CVEs total

CVE-2026-333168.1 HIGHVikunja’s Improper Access Control Enables Bypass of Administrator-Imposed Account Disablem
CVE-2026-336788.1 HIGHVikunja has IDOR in Task Attachment ReadOne Allows Cross-Project File Access and Deletion
CVE-2026-336807.5 HIGHVikunja Vulnerable to Link Share Hash Disclosure via ReadAll Endpoint Enables Permission E
CVE-2026-334746.5 MEDIUMVikunja Affected by DoS via Image Preview Generation
CVE-2026-336776.5 MEDIUMWebhook BasicAuth Credentials Exposed to Read-Only Project Collaborators via API
CVE-2026-336766.5 MEDIUMVikunja has Cross-Project Information Disclosure via Task Relations — Missing Authorizatio
CVE-2026-336756.4 MEDIUMVikunja has SSRF via Todoist/Trello Migration File Attachment URLs that Allows Reading Int
CVE-2026-336796.4 MEDIUMVikunja has SSRF via OpenID Connect Avatar Download that Bypasses Webhook SSRF Protections
CVE-2026-334735.7 MEDIUMVikunja has TOTP Reuse During Validity Window
CVE-2026-33315Vikunja has a 2FA Bypass via Caldav Basic Auth
CVE-2026-33313Vikunja has an IDOR in Task Comments Allows Reading Arbitrary Comments
CVE-2026-33335Vikunja Desktop allows arbitrary local application invocation via unvalidated shell.openEx
CVE-2026-33334Vikunja Desktop: Any frontend XSS escalates to Remote Code Execution due to nodeIntegratio
CVE-2026-33668Vikunja Allows Disabled/Locked User Accounts to Authenticate via API Tokens, CalDAV, and O
CVE-2026-33700Vikunja has a Link Share Delete IDOR — Missing Project Ownership Check Allows Cross-Projec

IV. Related Vulnerabilities

V. Comments for CVE-2026-33336

No comments yet


Leave a comment