Skip to main content

Wekan CVE-2025-65778

HIGH
Cross-site Scripting (XSS) (CWE-79)
2025-12-15 cve@mitre.org
8.1
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain Wekan board upload access
  2. Delivery
    Upload file served as text/html
  3. Exploit
    Lure victim to open attachment
  4. Execution
    Execute HTML/JS in app origin
  5. Impact
    Steal session token and perform CSRF

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 that an attacker can upload an attachment to a Wekan instance (typically board membership / an authenticated account, though open-registration deployments lower this barrier) AND that a victim subsequently opens/views the attachment, which pre-18.16 is served inline with an attacker-controlled Content-Type (text/html) and no forced-download/nosniff/CSP-sandbox headers. Limiting factors: victim user interaction is mandatory (UI:R); only versions up to 18.15 in default configuration are affected; and 18.16 mitigates by forcing Content-Disposition: attachment, Content-Type: application/octet-stream, X-Content-Type-Options: nosniff, a sandboxed CSP, and blocking inline SVG rendering.

Impact

CVSS 3.1 rates this 8.1 (High) via AV:N/AC:L/PR:N/UI:R with C:H/I:H, reflecting a network-reachable stored XSS that can steal sessions/tokens and perform CSRF in the application's origin. However, the real-world risk is more moderate than the raw score suggests, and the signals partially conflict. No EPSS score, CISA KEV listing, or public POC was provided, so there is no evidence of active or imminent exploitation (no public exploit identified at time of analysis). The CVSS PR:N (unauthenticated) rating also appears optimistic: exploitation requires an attacker to UPLOAD an attachment, which in Wekan normally requires an authenticated board-member account - verify with vendor, as this likely should be PR:L. The UI:R requirement (a victim must open/view the malicious attachment) further limits mass exploitation. Net: a legitimate patch-worthy vulnerability, but a targeted insider/low-privilege-abuse vector rather than a mass-exploitable unauthenticated RCE-class issue; prioritize patching but not as an emergency unless Wekan is internet-exposed with open registration.

Exploit ScenarioDerived

An attacker with the ability to upload attachments to a Wekan board uploads a malicious file that is served back with an attacker-controlled Content-Type of text/html. When a victim user opens/views that attachment, the embedded HTML/JS executes in the Wekan origin, allowing the attacker to steal the victim's session token and issue CSRF actions as that user. No public exploit code was identified, but the mechanism is straightforward given the required user interaction.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Stored cross-site scripting in Wekan through version 18.15 lets an attacker who can upload a board attachment have it served inline under an attacker-controlled Content-Type (text/html) on the application's own origin, so the victim's browser executes attacker-supplied HTML/JavaScript in the Wekan session context when the attachment is opened. Successful exploitation enables session and token theft and lets the attacker drive authenticated CSRF-style actions as the victim; CVSS 3.1 scores this 8.1 (High) via AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N, and the assessed prerequisites are that the attacker can upload an attachment (typically board membership or any authenticated account, with open-registration deployments lowering that barrier) and that a victim subsequently views it, making mandatory user interaction the main limiting factor. The issue is fixed in Wekan 18.16, which forces attachment responses to download with Content-Type: application/octet-stream, Content-Disposition: attachment, X-Content-Type-Options: nosniff and a restrictive sandboxed CSP, and blocks inline SVG rendering; no public exploit code was identified at time of analysis and there is no CISA KEV listing.

RemediationAI

Upgrade to Wekan 18.16 or later, which is the vendor-released patch: https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v816-2025-11-02-wekan--release. The specific upstream fix is commit e9a727301d7b4f1689a703503df668c0f4f4cab8 (https://github.com/wekan/wekan/commit/e9a727301d7b4f1689a703503df668c0f4f4cab8), which forces all attachment downloads to Content-Type: application/octet-stream with Content-Disposition: attachment, X-Content-Type-Options: nosniff and a sandboxed Content-Security-Policy, blocks inline SVG rendering, and re-enables strict server-side upload validation (MIME sniffing from file content, a dangerous-type denylist for text/html, SVG, XML and JavaScript types, and content scanning). If upgrading immediately is not possible, compensating controls are: restrict who can upload attachments by removing upload permission from untrusted or self-registered accounts (side effect: legitimate users lose attachment sharing); disable public self-registration so outsiders cannot gain the upload capability (side effect: onboarding becomes admin-driven); and, at the reverse proxy, rewrite responses for attachment paths so they are returned as Content-Type: application/octet-stream with Content-Disposition: attachment and X-Content-Type-Options: nosniff, plus a restrictive sandbox CSP (side effect: inline previews of images and avatars break, and proxy rules must be maintained as attachment routes change). Where uploads cannot be disabled, treat all attachments as untrusted, do not open them in a logged-in Wekan session, and consider serving Wekan attachments from a separate origin/domain so any successfully rendered payload does not share the application's session context. Note that blocking or stripping SVG and HTML uploads alone is only a partial mitigation because the Content-Type is attacker-controlled at serve time; the header hardening introduced in 18.16 is the durable fix. No vendor-released patch was available before 18.16, and no other patch version should be assumed.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Wekan is a Meteor-based open-source kanban application that stores uploaded board files and avatars through the ostrio:files collection package. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation, i.e. cross-site scripting): attachments were persisted and later returned inline, with the response Content-Type derived from attacker-influenced upload metadata, so a file declared or detected as text/html (or SVG/XML variants) was rendered as active markup inside the Wekan origin rather than downloaded as inert data. Because the payload executes same-origin in the victim's authenticated browser context, it can read the app session, exfiltrate tokens, and issue state-changing requests (CSRF). The vendor's fix addresses both halves of the problem: the attachment serving path was changed so responses carry Content-Type: application/octet-stream, Content-Disposition: attachment, X-Content-Type-Options: nosniff and a sandboxing Content-Security-Policy; the universal attachment link generation was reworked to override the ostrio:files link method reliably; and server-side upload validation (models/fileValidation.js) was hardened so MIME detection uses actual file content, dangerous types (text/html, application/xhtml+xml, image/svg+xml, text/xml, application/xml, application/javascript, text/javascript) are held to a denylist, uploaded content is scanned for script tags, event handlers, javascript: URIs, iframes/objects/embeds, meta-refresh, foreignObject and XML entity/DTD constructs, oversized files that cannot be fully scanned are treated as unsafe, and SVG uploads are no longer rendered inline. The affected component family corresponds to the CPE cpe:2.3:a:wekan_project:wekan:*:*:*:*:*:*:*:*, covering all releases up to and including 18.15 in the default configuration.

Know when Wekan 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

NVD PRIMARY 8.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
vuln.today AI 7.3 HIGH

Uploading an attachment realistically requires an authenticated Wekan board account (PR:L), and a victim must open the malicious attachment (UI:R); XSS yields session theft and CSRF so C:H/I:H, A:N.

3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

DescriptionNVD

An issue was discovered in Wekan The Open Source kanban board system up to version 18.15, fixed in 18.16. Uploaded attachments can be served with attacker-controlled Content-Type (text/html), allowing execution of attacker-supplied HTML/JS in the application's origin and enabling session/token theft and CSRF actions.

Executive ViewAI

Why It Matters

Wekan versions up to 18.15 are vulnerable to a stored cross-site scripting flaw that allows attackers to execute malicious scripts in the context of a victim's authenticated session when they open a crafted attachment. This can lead to session hijacking, token theft, and unauthorized actions on behalf of affected users, potentially compromising sensitive board data and organizational workflows. Security leadership should prioritize patching to Wekan 18.16 to mitigate the risk of account takeover and data integrity issues.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Low
niche self-hosted open-source kanban, limited enterprise footprint
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

Affected Products (CPE)NVD

cpe:2.3:a:wekan_project:wekan:*:*:*:*:*:*:*:*

More in Wekan

View all
CVE-2021-3309 HIGH POC
8.1 Jan 26

packages/wekan-ldap/server/ldap.js in Wekan before 4.87 can process connections even though they are not authorized by t

CVE-2026-52891 CRITICAL
9.9 Jul 15

OS command injection in Wekan (the open-source Meteor-based kanban board) before version 9.07 lets an authenticated user

CVE-2026-55652 CRITICAL
9.8 Jul 15

Authentication bypass in Wekan (open-source Meteor kanban) before version 9.46 lets an unauthenticated attacker imperson

CVE-2023-28485 MEDIUM POC
5.4 Jun 26

A stored cross-site scripting (Stored XSS) vulnerability in file preview in WeKan before 6.75 allows remote authenticate

CVE-2021-20654 MEDIUM POC
5.4 Feb 10

Wekan, open source kanban board system, between version 3.12 and 4.11, is vulnerable to multiple stored cross-site scrip

CVE-2026-52893 CRITICAL
9.2 Jul 15

Account takeover in Wekan (open-source Meteor kanban) before 9.32 allows an attacker who controls an OIDC provider accou

CVE-2026-68561 HIGH
8.8 Aug 19

Privilege escalation in Wekan open-source kanban (all versions prior to 9.89, dubbed 'SortBleed') allows any board membe

CVE-2025-65780 HIGH
8.8 Dec 15

Privilege escalation in the self-hosted Wekan kanban board through version 18.15 allows any authenticated user to rewrit

CVE-2026-68899 HIGH
8.7 Aug 19

Stored XSS in Wekan prior to v9.90 allows authenticated board members to upload HTML containing JavaScript disguised as

CVE-2026-25560 HIGH
8.7 Feb 07

LDAP filter injection in WeKan before 8.19 allows remote unauthenticated attackers to manipulate LDAP search filters and

CVE-2026-41454 HIGH
8.7 Apr 22

Privilege escalation in WeKan (versions prior to 8.35) allows authenticated board members with low privileges to perform

CVE-2026-68558 HIGH
8.5 Aug 19

Wekan's outgoing webhook URL validator in versions 8.36 through 9.73 allows authenticated board members to bypass SSRF p

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy