Wekan
Open source kanban board application built with Meteor
Alternative to: trello
About
Versions (218)
v9.89
2026-07-13v9.89 2026-07-13 WeKan ® release
This release fixes the following CRITICAL SECURITY ISSUE of SortBleed:
- SortBleed:
a low-privilege (comment-only / read-only) board member could escalate to board admin and take
over a private board via the board
sortcollection-allow rule (GHSA-xm8x-c8wg-jhmf, CWE-863 Incorrect Authorization, CWE-269 Improper Privilege Management). Same broken-access-control class as BoardBleed (CVE-2026-55234) — a Meteor collection allow-rule field conflation — but on the Board document itself. To support drag-to-reorder on the All Boards / Public Boards pages, a secondBoards.allow({ update })rule returnedtruefor any board member whenever the update touched thesortfield. Meteor evaluates allow rules with OR semantics and does not scope an approving rule to the field that satisfied it: once any allow callback returnstrueand no deny callback returnstrue, the entire modifier is applied. BecausecanUpdateBoardSortonly checked thatsortwas among the modified fields (not that it was the only one), a comment-only / read-only member could smuggle arbitrary board mutations into the same$setassortin a single unprivileged DDPBoards.updatecall:{$set: {sort: 99, members: [...only themselves as admin...], permission: 'public', title: '...'}}. The member could therefore make themselves board admin, flip a private board to public (world-readable in Wekan), rename it, and evict the legitimate owner. The last-admin deny rule did not help because it only inspected$pull, so a wholesale$setof themembersarray bypassed it entirely.- Fixed by restricting
canUpdateBoardSort(server/lib/utils.js) so the sort-reorder rule approves an update only whensortis the sole modified field (fieldNamesis exactly['sort']) — it can no longer approve a modifier that also mutatesmembers,permission,titleor anything else. As defense in depth, the last-admin deny rule (server/permissions/boards.js) now also rejects a$setrewrite of themembersarray that would drop the last active admin, not just a$pull. A regression test covers the multi-field smuggling case (server/lib/tests/boards.security.tests.js). The legitimate All Boards drag-reorder is unaffected: it persists the order per-user inprofile.boardSortIndex(Users.setBoardSortIndex), not in the board document. CVSS:3.1 8.8 High (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). - Affected Wekan v9.85 and earlier through the current release; fixed at the upcoming WeKan release. Reported by 5ud0 / Tarmo Technologies. Thanks to 5ud0 / Tarmo Technologies and xet7.
- Fixed by restricting
and adds the following updates:
Thanks to above GitHub users for their contributions and translators for their translations.