| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| wekan_9.89_arm64.snap | 2026-07-13 | 296.9 MB | |
| wekan_9.89_amd64.snap | 2026-07-13 | 389.0 MB | |
| wekan-sandstorm-2026_07_13-16_54_56.spk | 2026-07-13 | 161.8 MB | |
| wekan-9.89-riscv64.zip | 2026-07-13 | 303.4 MB | |
| wekan-9.89-s390x.zip | 2026-07-13 | 305.6 MB | |
| wekan-9.89-ppc64le.zip | 2026-07-13 | 304.7 MB | |
| wekan-9.89-win64.zip | 2026-07-13 | 288.0 MB | |
| wekan-9.89-mac-arm64.zip | 2026-07-13 | 298.3 MB | |
| wekan-9.89-amd64.zip | 2026-07-13 | 298.1 MB | |
| wekan-9.89-arm64.zip | 2026-07-13 | 300.2 MB | |
| README.md | 2026-07-13 | 3.4 kB | |
| v9.89 source code.tar.gz | 2026-07-13 | 31.4 MB | |
| v9.89 source code.zip | 2026-07-13 | 32.3 MB | |
| Totals: 13 Items | 3.0 GB | 0 | |
v9.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.
and adds the following updates:
Thanks to above GitHub users for their contributions and translators for their translations.