Skip to main content

Wekan CVE-2026-68899

| EUVDEUVD-2026-62706 HIGH
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-08-19 GitHub_M
8.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Obtain Wekan board member credentials
  2. Delivery
    Upload HTML+JS payload via attachment API with spoofed image/png MIME type
  3. Exploit
    Silent file-binary absence causes validation to trust client-supplied type
  4. Execution
    Dangerous-content scan skipped; malicious file stored under Wekan origin
  5. Persist
    Victim user opens attachment link
  6. Impact
    JavaScript executes in victim's browser, exfiltrating session token or performing privileged actions

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK

2 techniques across 2 tactics: Command and Control, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Two specific deployment conditions must simultaneously be true: (1) the Wekan instance must have the WITH_API=true environment variable set, enabling the REST attachment upload endpoint in server/routes/attachmentApi.js; and (2) the Unix file binary must be absent from the server environment, which is common in minimal Docker/Alpine container images. When either condition is absent the vulnerability is not exploitable - deployments with file installed perform content-based MIME detection normally, and deployments without WITH_API=true do not expose the upload API path. Additionally, the attacker must hold at least board member access (CVSS PR:L), limiting exploitation to authenticated insiders or accounts compromised through other means. Exploitation also requires a victim user to open the stored attachment (CVSS UI:R), preventing fully passive exploitation. Defenders can quickly assess exposure by running 'which file' inside the container and checking the WITH_API environment variable.

Impact

The vendor-assigned CVSS 3.1 score of 8.7 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) reflects the potential scope change - XSS that compromises other users' sessions including administrator accounts - and is appropriate for worst-case impact. However, AC:L understates real-world exploitation difficulty: two conditions beyond the attacker's control must simultaneously hold - the WITH_API=true environment variable must be set, and the Unix file binary must be absent. The second condition is common in Alpine/minimal Docker images but is not the universal default, making the effective attack surface narrower than AC:L implies. No EPSS score was provided in the input data, preventing quantitative exploitation probability comparison. No CISA KEV listing exists, and no independent POC has been identified - the advisory originates from a researcher-reported GitHub security advisory (GHSA-jhph-whx8-wq6p). The stored XSS impact is high when conditions are met: a low-privileged board member can achieve session theft and admin-level actions against any user who opens the attachment, which aligns with S:C/C:H/I:H. Defenders should prioritize patching container deployments but can verify exposure by checking whether WITH_API=true is set and whether the file package is installed in their images.

Exploit ScenarioDerived

An authenticated Wekan board member on a container deployment lacking the file binary sets the Content-Type to image/png via the attachment API (WITH_API=true) while uploading an HTML file containing a JavaScript payload such as a session-cookie exfiltration script. Because MIME detection silently returns undefined and the spoofed type passes the deny-list check, the malicious file is stored under the Wekan origin. Any user - including administrators - who subsequently opens the attachment triggers the stored XSS, allowing the attacker to steal session tokens, perform actions on the victim's behalf, and potentially escalate to administrative control of the Wekan instance.

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 – Aug 19, 2026

Stored XSS in Wekan prior to v9.90 allows authenticated board members to upload HTML containing JavaScript disguised as a permitted MIME type, which is then served under the Wekan origin and executes in any user's browser that opens the attachment. The vulnerability is rooted in a silent fallback: when the Unix file binary is absent (typical of minimal Docker/Alpine deployments), MIME detection returns undefined and validation trusts the attacker-supplied content type instead of inspecting actual file bytes. Exploitation is conditional on two deployment-specific factors - the WITH_API=true environment variable and the absence of the file binary - but both are common in container-based Wekan deployments. No public exploit code or CISA KEV listing has been identified at the time of analysis.

RemediationAI

Upgrade Wekan to version 9.90 or later, which is available at https://github.com/wekan/wekan/releases/tag/v9.90 and contains the fix commit f6ba472f6738bcd3763f133d3d9970f216df2263. This release introduces the looksLikeDangerousMarkup() content sniffer as a fail-closed fallback, so the dangerous-content scan is forced regardless of client-supplied MIME type when the file binary is unavailable. As an independent hardening step, install the file package in any container image running Wekan to restore full content-based MIME detection; Wekan's official images already do this. If immediate upgrade is not possible, disabling the attachment API by setting WITH_API=false eliminates the exploitable upload path entirely, at the cost of disabling all REST API file upload functionality. Access controls limiting board membership to trusted users reduce exposure but do not eliminate it, since the vulnerability requires only board member privileges.

Affected VersionsENISA

Wekan < 9.90

Affected Packages

euvd wekan fix: 9.90

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

Wekan's file attachment pipeline in models/fileValidation.js performs two-stage type checking: first, it attempts content-based MIME detection by invoking the Unix file command via detectMimeFromFile(); if that succeeds, the detected MIME is checked against a dangerous-MIME deny-list and, independently, the file bytes are scanned for dangerous markup. The flaw (CWE-434: Unrestricted Upload of File with Dangerous Type) is that detectMimeFromFile() silently returned undefined when the file binary was absent - an ENOENT the code suppressed without warning - causing isFileValid() to substitute the client-supplied fileObj.type from the attachment API (server/routes/attachmentApi.js) as the detected MIME. Because the attacker-controlled type ('image/png') is not on the dangerous-MIME deny-list, the dangerous-content scan was also skipped, and raw HTML+JavaScript was persisted under the Wekan origin. CPE cpe:2.3:a:wekan:wekan:*:*:*:*:*:*:*:* confirms all Wekan releases prior to 9.90 are affected. The fix in v9.90 introduces a dependency-free JS content sniffer (looksLikeDangerousMarkup()) that inspects real file bytes for HTML/SVG/XML/script signatures and forces the dangerous-content scan regardless of the claimed MIME type, eliminating trust in any client-supplied value when the file binary is unavailable.

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

Vendor (GitHub_M) PRIMARY 8.7 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
vuln.today AI 7.7 HIGH

AC:H reflects the two required deployment conditions beyond attacker control (WITH_API=true and absent file binary); all other metrics align with vendor assessment.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Aug 19, 2026 - 20:03 EUVD
CVE Published
Aug 19, 2026 - 19:26 cve.org
HIGH 8.7

DescriptionCVE.org

Wekan is open source kanban built with Meteor. Prior to 9.90, isFileValid() in models/fileValidation.js used the Unix file command for content-based MIME detection, but detectMimeFromFile() silently returned undefined when that binary was unavailable and the validation fell back to the attacker-controlled fileObj.type supplied through server/routes/attachmentApi.js. On deployments with WITH_API=true and no file binary, an authenticated board member could label HTML containing JavaScript as image/png, bypass the dangerous MIME check, and store active content under the Wekan origin for execution when another user opened it. Version 9.90 adds looksLikeDangerousMarkup() to inspect file bytes and force dangerous-content scanning when MIME detection is unavailable. This issue is fixed in version 9.90.

Executive ViewAI

Why It Matters

Wekan collaboration platform versions prior to v9.90 contain a stored cross-site scripting vulnerability allowing authenticated board members to upload malicious files that execute in other team members' browsers, creating risk of credential theft and session hijacking. This risk is concentrated in containerized deployments with specific configurations (WITH_API=true and absent file-type validation binary). A vendor patch is available and should be deployed urgently.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
Medium
popular self-hosted open-source kanban, common in SMB and dev teams
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.

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-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

CVE-2026-55234 HIGH
8.5 Jul 15

Improper access control in Wekan (self-hosted open-source Meteor kanban) before version 9.37 lets any authenticated user

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