Wekan
CVE-2026-55234
HIGH
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:L
Authenticated user with write access to one board gives PR:L; network DDP endpoint and simple modifier give AV:N/AC:L; crossing into an unauthorized board is a scope change (S:C) with integrity injection (I:H) and no read (C:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Wekan is open source kanban built with Meteor. Prior to 9.37, Wekan DDP update allow rules in server/permissions/cards.js, server/permissions/lists.js, and server/permissions/swimlanes.js authorize against the stored source boardId and do not validate a new boardId in the update modifier. Any authenticated user with write access to their own board can call /cards/update, /lists/update, or /swimlanes/update to move cards, lists, or swimlanes into a private board they are not a member of. This issue is fixed in version 9.37.
AnalysisAI
Improper access control in Wekan (self-hosted open-source Meteor kanban) before version 9.37 lets any authenticated user with write access to their own board relocate cards, lists, or swimlanes into a private board they do not belong to. The DDP update allow rules only authorize against the document's stored (source) boardId and never validate the attacker-supplied destination boardId in the update modifier, so /cards/update, /lists/update, and /swimlanes/update can be abused to inject content across a trust boundary. No public exploit identified at time of analysis, but the fixing commit and advisory publicly document the exact bypass, lowering the barrier to reproduction.
Technical ContextAI
Wekan is built on Meteor, which exposes collections to clients over DDP and gates writes through Meteor's allow/deny callback model. The affected code is the server-side allow rules in server/permissions/cards.js, lists.js, and swimlanes.js, which call allowIsBoardMemberWithWriteAccess against the document's current boardId. The root cause is CWE-284 (Improper Access Control): the authorization check binds to the source board the caller already controls, while the MongoDB-style update modifier ($set.boardId) can carry a different destination boardId that is never re-validated. Because Meteor allow rules approve if any rule allows and the modifier is applied after the check, the caller's ownership of the source board is sufficient to satisfy the guard, allowing a cross-board move. The fix (commit d369a36) adds a denyCrossBoardMove deny rule that inspects modifier.$set.boardId and denies the write unless the caller has write access to the destination board via allowIsBoardMemberWithWriteAccess.
RemediationAI
Vendor-released patch: upgrade Wekan to version 9.37 or later (https://github.com/wekan/wekan/releases/tag/v9.37), which introduces the denyCrossBoardMove deny rule enforcing write access on the destination board for Cards, Lists, and Swimlanes updates; this is the primary and complete fix per advisory GHSA-gm7v-pc38-53jr. If an immediate upgrade is not possible, reduce exposure by limiting account provisioning to trusted users and disabling or restricting self-service registration so that arbitrary authenticated users cannot obtain write-capable boards, and monitor board membership and card/list/swimlane audit activity for unexpected cross-board relocations; note these are only partial compensating controls because any legitimate writer remains capable of the move until patched. Operators can also cherry-pick commit d369a3614a4737c29d48a6345a790edf2506ddae onto an earlier build if they cannot take the full 9.37 release.
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
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
Wekan versions 8.31.0 through 8.33 expose webhook URLs and authentication tokens to all board members through unfiltered
Same weakness CWE-284 – Improper Access Control
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today