Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with any Wekan account
-
DeliveryDiscover or enumerate target board ID
-
ExploitSend GET /api/boards/:boardId/exportExcel
-
ExecutionUn-awaited Promise bypasses board.isVisibleBy(user) check
-
ImpactReceive full Excel export of private board data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires a valid, authenticated Wekan session (any user account suffices - no elevated privileges or board membership needed). The attacker must know or enumerate at least one target board ID, which are UUIDs exposed through API responses for boards the attacker legitimately belongs to or potentially predictable. The affected route GET /api/boards/:boardId/exportExcel must be reachable from the attacker's network position. Exploitation is limited to Wekan versions 9.57-9.73 and does not affect the JSON export route (/api/boards/:boardId/export), which correctly awaited the same guard and returned HTTP 403 for non-members. No special configuration, non-default feature flag, or OS-level access is required beyond a valid session. |
| Impact | The CVSS 3.1 score of 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) accurately reflects real-world risk: network-accessible, trivially exploitable with no complexity, but requiring a valid Wekan session (PR:L). The confidentiality impact is high - full board contents including private data - while there is no integrity or availability impact. A read-only PoC was confirmed by the reporting researcher (sec-reex), so exploit construction is not a barrier. The vulnerability is not listed in CISA KEV, and EPSS data was not provided in the input. The risk profile is modest in absolute terms due to Wekan's limited deployment footprint, but for organizations relying on Wekan for sensitive project management, any authenticated internal user (or compromised account) can exfiltrate all private board data without detection beyond normal API logging. The recurring un-awaited async-auth pattern in this codebase (at least four prior instances) suggests the control gap may have been present across different attack surfaces for an extended period. |
| Exploit ScenarioDerived | An attacker with any valid Wekan account - such as a contractor, a low-privilege employee, or an account compromised via credential stuffing - enumerates board IDs (which may be predictable UUIDs or discoverable via other API endpoints) and issues GET /api/boards/<boardId>/exportExcel requests for boards they are not a member of. Because the authorization guard is never evaluated, the server returns a full Excel export containing card titles, descriptions, assignees, swimlanes, and member lists for private boards. A read-only PoC confirming this behavior was provided by the reporter during responsible disclosure. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Broken access control in Wekan's Excel export REST endpoint exposes private board contents to any authenticated user, regardless of board membership. Wekan versions 9.57 through 9.73 failed to await the async authorization guard in models/exportExcel.js, causing the Promise return value to always evaluate as truthy and bypass the board.isVisibleBy(user) check entirely. Any authenticated user can enumerate and download card titles, descriptions, lists, swimlanes, members, and metadata from private boards they are not a member of via GET /api/boards/:boardId/exportExcel. A read-only proof-of-concept was confirmed by the reporter (sec-reex) through responsible disclosure; no KEV listing at time of analysis.
RemediationAI
Upgrade to Wekan v9.74 or later, which fixes the vulnerability by changing the conditional in models/exportExcel.js from if (exporterExcel.canExport(user) || impersonateDone) to if ((await exporterExcel.canExport(user)) || impersonateDone), ensuring the async guard resolves before the export proceeds. The patched release is available at https://github.com/wekan/wekan/releases/tag/v9.74. If immediate upgrade is not possible, disable or restrict network access to the GET /api/boards/:boardId/exportExcel endpoint at the reverse proxy or firewall layer - note this removes Excel export functionality for all users. Restricting the Wekan API surface to authenticated internal networks only reduces exposure but does not eliminate the vulnerability, as any authenticated user remains a potential threat actor under this flaw.
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
Wekan is a Meteor-based open-source kanban application (cpe:2.3:a:wekan:wekan:*:*:*:*:*:*:*:*). The vulnerability is a CWE-639 (Authorization Bypass Through User-Controlled Key) caused by a JavaScript async/await misuse: the authorization method canExport(user) in models/server/ExporterExcel.js is declared async, meaning it always returns a Promise object. In models/exportExcel.js the call site omitted the await keyword, so the conditional if (exporterExcel.canExport(user) || impersonateDone) evaluated a Promise - which is always truthy - rather than the resolved boolean. This caused exporterExcel.build(res) to execute unconditionally. The same un-awaited async-auth bug class previously affected 48 REST endpoints in BFLABleed (v9.22), CloneBleed (allowIsBoardMemberByCard, v9.35), and TokenBleed. The correctly-awaited JSON export route (/export) returned HTTP 403 for the same scenario, confirming the control exists but was wired incorrectly for the Excel route alone.
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
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Network-accessible API route, no complexity, requires authenticated session (PR:L), no user interaction; impact is confidentiality-only as export is read-only.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Wekan is open source kanban built with Meteor. From 9.57 until 9.74, the /api/boards/:boardId/exportExcel route in models/exportExcel.js called the asynchronous exporterExcel.canExport(user) authorization guard from models/server/ExporterExcel.js without awaiting it. The returned Promise was always truthy, so exporterExcel.build(res) ran even when board.isVisibleBy(user) would deny access, allowing any authenticated non-member to download private board card titles, descriptions, lists, swimlanes, members, and metadata. This issue is fixed in version 9.74.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
packages/wekan-ldap/server/ldap.js in Wekan before 4.87 can process connections even though they are not authorized by t
OS command injection in Wekan (the open-source Meteor-based kanban board) before version 9.07 lets an authenticated user
Authentication bypass in Wekan (open-source Meteor kanban) before version 9.46 lets an unauthenticated attacker imperson
A stored cross-site scripting (Stored XSS) vulnerability in file preview in WeKan before 6.75 allows remote authenticate
Wekan, open source kanban board system, between version 3.12 and 4.11, is vulnerable to multiple stored cross-site scrip
Account takeover in Wekan (open-source Meteor kanban) before 9.32 allows an attacker who controls an OIDC provider accou
Privilege escalation in Wekan open-source kanban (all versions prior to 9.89, dubbed 'SortBleed') allows any board membe
Privilege escalation in the self-hosted Wekan kanban board through version 18.15 allows any authenticated user to rewrit
Stored XSS in Wekan prior to v9.90 allows authenticated board members to upload HTML containing JavaScript disguised as
LDAP filter injection in WeKan before 8.19 allows remote unauthenticated attackers to manipulate LDAP search filters and
Privilege escalation in WeKan (versions prior to 8.35) allows authenticated board members with low privileges to perform
Wekan's outgoing webhook URL validator in versions 8.36 through 9.73 allows authenticated board members to bypass SSRF p
EUVD-2026-62700
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB