Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate and join a shared project
-
ExploitSet malicious task title or display name closing the anchor
-
ExecutionMention or assign victim to trigger notification email
-
ImpactVictim opens email and clicks injected phishing link
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Vikunja account (PR:L) that can set attacker-controlled text that reaches the conversational email header: a task title, project title, or the commenter's own display name. The attacker must also share a project with the victim and trigger a task-comment or task-mention notification (e.g. by commenting with an @mention or assigning the victim) so Vikunja emails other project members. The technical enabler is that the header passes these strings raw into an existing <a href> element and then sanitizes with bluemonday UGCPolicy, which deliberately preserves http/https anchors (only adding rel="nofollow"), allowing an anchor-breakout phishing link; an injected <img> is neutralized because RewriteSrc blanks non-data: sources, so no tracking pixel. LIMITING FACTORS: no script execution is possible (not a true XSS), impact is confined to a phishing link; the victim must click it (UI:P), must use an HTML-rendering email client, and the attacker must already have project membership. Affects versions 2.2.0 up to but not including 2.7.1. |
| Impact | This is a genuine but low-to-moderate priority issue, not an inflated high-severity bug. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N, 5.1 Medium) is internally consistent with the mechanism: a network-reachable but authenticated attacker (PR:L - must hold a Vikunja account and be a member of a shared project) injects an HTML anchor whose only impact is limited integrity (VI:L, a phishing link in a notification email), with no confidentiality or availability impact and no scope change to other systems. Exploitation is passive-user-interaction dependent (UI:P): a victim must actually click the injected phishing link for harm to occur. No CISA KEV listing is present and no EPSS score was supplied, so there is no signal of active or widespread exploitation; the vuln.today decision label is 'this_month', consistent with a patch-on-normal-cadence item rather than an emergency. A detailed, end-to-end working reproduction exists inside the vendor GHSA advisory (tested on v2.6.0), which raises practical exploitability above a purely theoretical finding. Notably this is an explicitly incomplete fix of the earlier GHSA-45q4-x4r9-8fqj / CVE-2026-35600, where the vendor wrongly assumed bluemonday's raw-HTML sanitization of the conversational header was sufficient. The signals align rather than conflict: moderate CVSS, no KEV, no EPSS, PoC present, routine patch cadence - treat as a standard scheduled remediation. |
| Exploit ScenarioDerived | An authenticated attacker who is a member of a shared Vikunja project creates a task whose title is '</a><a href="https://evil.example/phish">Verify your account</a>' (or sets a malicious display name), then comments to mention or assigns a victim project member. Vikunja emails that member a task-comment/task-mention notification whose conversational header interpolates the title raw inside an existing anchor, so the payload breaks out and renders a clickable attacker-controlled phishing link. A detailed working reproduction is published in the vendor GHSA advisory; harm requires the recipient to click the injected link (UI:P). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
HTML injection in the conversational notification header of Vikunja 2.2.0 through 2.7.0 allows an authenticated project member to break out of the display anchor and plant a clickable phishing link in task-comment and task-mention emails that Vikunja sends to other project members. The attacker only needs control of text that reaches the header - a task title, a project title or their own display name - plus shared project membership and an action that triggers a notification (an @mention or an assignment). Impact is confined to link injection in the rendered email: no script execution is possible, remote images are neutralized by the sanitizer, and the recipient must click the injected link in an HTML-capable mail client, so the practical effect is credential-phishing redirection rather than code execution or data compromise. No CISA KEV entry, no confirmed public exploit code and no EPSS signal are present in the supplied data; the vendor advisory does include a detailed end-to-end lab reproduction using the REST API and a local SMTP sink.
RemediationAI
Upgrade Vikunja to 2.7.1, the fixed version listed in the advisory package metadata and in the referenced release tag https://github.com/go-vikunja/vikunja/releases/tag/v2.7.1. The escaping fix is commit 18ff05932632c65dbc90a88118597989c6af4bf9, which html.EscapeString() escapes the action, task URL, project title, task title and task identifier in CreateConversationalHeader and adds a regression test asserting that injected href attributes do not reach the HTML message. Note the GHSA narrative describes the fix as landed on main via that commit and states that no released version carried it at advisory drafting, so confirm the v2.7.1 tag actually contains commit 18ff059 before relying on the release alone. The advisory documents no official workaround; the only complete fix it describes is the escaping change. As an operational containment measure pending upgrade, turning off the mailer or conversational notification emails removes the vulnerable sink entirely, at the cost of losing all email notification delivery, and recipients who read notifications in a plain-text mail client are not exposed to the injected anchor.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Vikunja is a Go task/project management application (Go module go/code.vikunja.io/api) whose notification subsystem renders HTML emails. In pkg/notifications/mail.go, CreateConversationalHeader builds the header with fmt.Sprintf, placing the doer's display name (via the i18n action string) and the raw project title and task title inside an existing <a href> element: the format string emits "(%s > %s) %s</a>". The assembled header string is then sanitized in pkg/notifications/mail_render.go as raw HTML by a bluemonday UGCPolicy, which intentionally permits http/https anchors and merely appends rel="nofollow". Because the attacker-controlled titles are interpolated before sanitization and inside an anchor context, a title such as </a><a href="https://evil.example/phish">Verify your account</a> closes the legitimate anchor and passes a fully formed phishing link through the policy. The advisory notes that an injected <img> is not useful as a tracking pixel because RewriteSrc (mail_render.go) blanks every non-data: source. Root cause class is CWE-79 (improper neutralization of input before it is placed in an HTML document), realized here as an anchor-context breakout rather than classic script XSS. This is an incomplete fix of GHSA-45q4-x4r9-8fqj (CVE-2026-35600): commit 0f3730d escaped every Line(...) call in pkg/models/notifications.go but deliberately left the header call untouched, on the assumption that bluemonday sanitization of the finished string made escaping unnecessary. The supplied fix commit 18ff059 wraps action, taskURL, projectTitle, taskTitle and taskIdentifier in html.EscapeString and replaces the manual >/</& replacements in convertLinesToPlain with html.UnescapeString, with a regression test asserting that href="https://evil.example" does not appear in the HTML message while the escaped text survives in the plain-text part.
Know when Vikunja gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Authenticated project member injects content (PR:L), delivered over the network via email; victim must click the link (UI:R); only limited integrity impact (phishing content), no confidentiality or availability, no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Vikunja 2.2.0 before 2.7.1 contains an HTML injection vulnerability in CreateConversationalHeader in pkg/notifications/mail.go that interpolates display names and task and project titles raw into email anchors. Authenticated users can craft titles or display names that close the anchor and inject phishing links into task-comment and task-mention notification emails sent to project members.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Cross-tenant information disclosure in the self-hosted task manager Vikunja (0.24.0 through 2.3.0) lets a holder of any
Weak password policy in Vikunja task management before 2.0.0 allows users to set trivially guessable passwords. PoC avai
Principal type confusion in Vikunja (versions 0.22.0-2.3.0) allows an authenticated low-privilege attacker to fully cont
Stored cross-site scripting (XSS) in Vikunja prior to version 2.0.0 allows authenticated attackers to steal authenticati
Vikunja before version 2.0.0 contains a path traversal vulnerability in its backup restoration function that fails to va
Vikunja is an open-source self-hosted task management platform. [CVSS 6.1 MEDIUM]
Business logic vulnerability in Vikunja task management platform before 2.1.0 allows incomplete resource cleanup, potent
Instance-wide data breach in Vikunja before 2.2.1 lets remote attackers exfiltrate and destroy every file attachment acr
Vikunja's OIDC callback handler issues a full JWT to any successfully matched user without checking whether that account
Vikunja instances before 2.6.0 expose CalDAV BasicAuth endpoints (/dav, /.well-known, and /feeds) that are not covered b
Vikunja versions before 2.6.0 ship authentication endpoints under /api/v2 (login, register, password-reset, and OAuth to
Vikunja prior to 2.6.0 leaks the secret hash that backs a project's link shares through its single-share read endpoint,
EUVD-2026-108339
GHSA-j37p-9r5c-rjgj
NVD
CVE.org
EPSS
Exploit-DB