Vikunja XSS: When 'Just Looking' Gets You Pwned
Vulnerability ID: CVE-2026-25935
CVSS Score: 8.6
Published: 2026-02-11
A high-severity Cross-Site Scripting (XSS) vulnerability was discovered in Vikunja, the open-source todo application. The flaw resides in the task preview mechanism, where the application improperly utilized the DOM to strip HTML tags from task descriptions. By leveraging a detached DOM element and the innerHTML property, an attacker can execute arbitrary JavaScript simply by convincing a victim to hover over a malicious task.
TL;DR
Hovering over a task in Vikunja < 1.1.0 triggers a stored XSS via the 'glance' tooltip. The app tried to strip HTML tags using innerHTML on a detached div, effectively executing the payload it meant to sanitize.
⚠️ Exploit Status: POC
Technical Details
- CWE ID: CWE-80
- CVSS 4.0: 8.6 (High)
- Attack Vector: Network
- User Interaction: Passive (Hover)
- Exploit Status: PoC Available
- KEV Status: Not Listed
Affected Systems
- Vikunja Frontend < 1.1.0
-
Vikunja: < 1.1.0 (Fixed in:
1.1.0)
Code Analysis
Commit: dd0b82f
fix: use domparser instead of innerhtml to strip html tags
- const tempDiv = document.createElement('div')
- tempDiv.innerHTML = props.task.description
- return tempDiv.textContent || tempDiv.innerText || ''
+ const doc = new DOMParser().parseFromString(props.task.description, 'text/html')
+ return doc.body.textContent || ''
Exploit Details
- GitHub Advisory: Official advisory containing the vulnerability description and fix
Mitigation Strategies
- Upgrade to Vikunja v1.1.0 or later immediately.
- Implement Content Security Policy (CSP) to restrict where scripts can be loaded from and where data can be sent.
- Use DOMPurify for any HTML rendering or manipulation in frontend code.
Remediation Steps:
- Pull the latest docker image:
docker pull vikunja/vikunja - Restart the Vikunja container.
- Verify the version in the frontend settings.
References
Read the full report for CVE-2026-25935 on our website for more details including interactive diagrams and full exploit analysis.
Top comments (0)