Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain any board membership (read-only or comment-only)
-
DeliveryCraft Meteor DDP Boards.update with $set {sort, members, permission, title}
-
ExploitcanUpdateBoardSort allow rule fires on presence of sort
-
ExecutionMeteor applies full modifier without field scoping
-
PersistAttacker set as sole board admin via members $set
-
ImpactPrivate board flipped to public, legitimate owner evicted
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must hold any level of Wekan board membership on the target board - read-only viewer and comment-only roles are both sufficient; no elevated board privilege is required. The target instance must be running Wekan prior to version 9.89. Unauthenticated users with no board membership cannot exploit this flaw. The sort-reorder allow rule is enabled by default in all affected Wekan deployments to support drag-to-reorder on the All Boards and Public Boards pages - no non-default configuration is required to be vulnerable. Exploitation is limited to boards the attacker has been explicitly invited to; boards the attacker is not a member of are not reachable via this vector. |
| Impact | CVSS 8.8 High (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) accurately reflects real-world risk. AV:N and AC:L are confirmed - the attack requires only a standard WebSocket/DDP connection and no special preconditions. PR:L is correct and important: any board membership level, including the lowest-privilege read-only or comment-only role, is sufficient. The High impact across all three CIA dimensions is justified: private boards are exposed (C:H), board configuration and membership are rewritten (I:H), and the legitimate owner is evicted with no recovery path short of re-invitation (A:H). No EPSS data was provided in the input, so exploitation probability cannot be quantified. The vulnerability is not listed in CISA KEV at time of analysis, so active exploitation is not confirmed. However, the GHSA advisory and fix commit are fully public, and the attack is trivially reproducible from the description - no specialized knowledge is required beyond the ability to send a crafted DDP call. The recurrence of the same Meteor allow-rule class in prior Wekan CVE-2026-55234 (BoardBleed) suggests this pattern may be actively targeted. Real-world risk is elevated beyond the CVSS score might suggest in isolation because the minimal privilege threshold (any board invitation) dramatically widens the attacker pool. |
| Exploit ScenarioDerived | An attacker invited to a Wekan board in any capacity - even as a read-only viewer - sends a single Meteor DDP |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
Privilege escalation in Wekan open-source kanban (all versions prior to 9.89, dubbed 'SortBleed') allows any board member - including read-only or comment-only invitees - to atomically elevate themselves to sole board administrator, expose private boards to the public, and evict the legitimate owner via a single crafted Meteor DDP update call. The root cause is Meteor's OR-semantics allow-rule evaluation: the canUpdateBoardSort helper checked only that sort was among modified fields, not that it was the sole field, allowing arbitrary board mutations to be smuggled alongside a legitimate sort value. No public exploit identified at time of analysis, though the attack is fully reproducible from the public GHSA advisory and fix commit.
RemediationAI
Vendor-released patch: Wekan 9.89. Upgrade immediately using the official release at https://github.com/wekan/wekan/releases/tag/v9.89. The fix in commit dc135f6e7d59f9f56065cd5df83b1f123ea120bb (https://github.com/wekan/wekan/commit/dc135f6e7d59f9f56065cd5df83b1f123ea120bb) restricts canUpdateBoardSort in server/lib/utils.js to approve updates only when sort is the sole modified field (fields.length = 1 && fields[0] = 'sort'), and extends the last-admin deny rule in server/permissions/boards.js to also reject any $set rewrite of the members array that would remove the last active administrator. If immediate upgrade is not possible, the most effective compensating control is strict board membership hygiene: do not add untrusted users as board members in any role, including read-only or comment-only, as any board membership is sufficient to exploit this flaw. There is no configuration setting to disable the vulnerable sort-reorder allow rule independently; a manual patch to server/lib/utils.js applying the fields.length === 1 check carries the trade-off of operating outside the official release cycle and requiring re-application on each update.
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.js-based kanban application using Meteor's reactive DDP protocol for client-server communication. Meteor's Collection.allow() rules use OR semantics: once any allow callback returns true and no deny callback returns true, Meteor applies the entire database modifier - it does NOT scope approval to only the fields that satisfied the rule. A second Boards.allow({ update }) rule in server/permissions/boards.js invoked canUpdateBoardSort (in server/lib/utils.js), which returned true for any board member when fieldNames.includes('sort'). Because this check was not bounded to fieldNames.length === 1, a malicious member could include sort alongside members, permission, and title in the same $set modifier. The last-admin deny rule in server/permissions/boards.js only inspected $pull operations on the members array, entirely missing a wholesale $set replacement. This is CWE-269 (Improper Privilege Management) and CWE-863 (Incorrect Authorization), the same Meteor collection allow-rule field-conflation class as the prior 'BoardBleed' vulnerability (CVE-2026-55234). CPE: cpe:2.3:a:wekan:wekan:*:*:*:*:*:*:*:*.
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:H/A:H
Any board membership (PR:L) suffices; crafted DDP call over network (AV:N/AC:L) achieves full board takeover with high C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Wekan is open source kanban built with Meteor. Prior to 9.89, the second Boards.allow({ update }) rule in server/permissions/boards.js called canUpdateBoardSort in server/lib/utils.js, which authorized any board member whenever fieldNames included sort. Because Meteor combines allow rules with OR semantics and applies the complete modifier, a comment-only or read-only member could send one Boards.update with $set values for sort, members, permission, and title, make themselves the sole board administrator, expose a private board, and evict the legitimate owner; the last-admin deny rule inspected only $pull and did not block a wholesale $set of members. Version 9.89 requires sort to be the only modified field and rejects $set member arrays that remove the last active administrator. This issue is fixed in version 9.89.
Executive ViewAI
Wekan versions prior to 9.89 contain a critical privilege escalation flaw (CVE-2026-68561) allowing any board member-including read-only guests-to seize administrative control, expose private boards publicly, and evict legitimate administrators. Organizations using Wekan face risk of project management data exposure and loss of service access. Immediate upgrade is required to protect data confidentiality and operational continuity.
Apply vendor patch.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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 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
Improper access control in Wekan (self-hosted open-source Meteor kanban) before version 9.37 lets any authenticated user
EUVD-2026-62703
NVD
CVE.org
EPSS
GitHub
Exploit-DB