| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| wekan_10.23_arm64.snap | 2026-07-22 | 304.3 MB | |
| wekan-10.23-riscv64.zip | 2026-07-22 | 310.9 MB | |
| wekan-10.23-ppc64le.zip | 2026-07-22 | 312.2 MB | |
| wekan-10.23-s390x.zip | 2026-07-22 | 313.1 MB | |
| wekan-10.23-sandstorm.spk | 2026-07-22 | 168.6 MB | |
| wekan-10.23-win64.zip | 2026-07-22 | 295.2 MB | |
| wekan-10.23-mac-arm64.zip | 2026-07-22 | 305.8 MB | |
| wekan-10.23-amd64.zip | 2026-07-22 | 307.1 MB | |
| wekan-10.23-arm64.zip | 2026-07-22 | 309.8 MB | |
| README.md | 2026-07-22 | 2.7 kB | |
| v10.23 source code.tar.gz | 2026-07-22 | 32.7 MB | |
| v10.23 source code.zip | 2026-07-22 | 33.8 MB | |
| Totals: 12 Items | 2.7 GB | 0 | |
v10.23 2026-07-22 WeKan ® release
This release fixes the following CRITICAL VULNERABILITIES:
- ExportBleed: stored XSS in HTML board exports
through a card-title second parse (CWE-79 Cross-site Scripting; GitHub Security Advisory
GHSA-8r5p-4q9j-f5jx, severity High;
client/lib/exportHTML.js). A board member could store entity-encoded markup in a card title (e.g.<img src=x onerror=...>). It stays inert on the live board — Blaze escapes it and the+viewersanitizer neutralizes handlers, keeping the entity payload as text — but the exportedindex.htmlembedded a card-click handler that read the card title/body via.textContent(which DECODES HTML entities) and then concatenated those values intocontent.innerHTML. That SECOND parse revived the tag and ran it when a recipient clicked the card in the export, disclosing all data in that document (including cards added AFTER the attacker's board membership was removed). - Fixed by building the modal with DOM nodes and assigning the card title/body through
textContent, neverinnerHTML, so they are inserted as inert text (commit). -
Thanks to koyokr (report) and xet7 (fix).
-
SpliceBleed follow-up: incomplete multi-character sanitization re-flagged in the filename markup strip (GitHub CodeQL code scanning alert [#426], rule
js/incomplete-multi-character-sanitization, CWE-116 Improper Encoding or Escaping of Output;imports/lib/fileNameDisplay.js). The SpliceBleed fix (#425) looped a CHAIN of six replaces to a fixpoint — runtime-safe, but CodeQL (a local check) could not attribute the fixpoint to the individual<[^>]*>?tag replace, so it kept flagging it ("this string may still contain<script"). - Fixed by restructuring to the proven-complete pattern used by
client/lib/importDependencies.jsstripHtml()(which cleared the sibling alert #421): remove template/PI/CDATA tokens (looped), then strip HTML/XML tags with a SINGLEreplace(/<[^>]*>/g, '')looped to a fixed point, then drop any stray angle bracket so even an unclosed tag (a trailing<script) cannot survive. Behaviour is unchanged, and Blaze{{ }}still HTML-escapes every rendered filename, so this stays defence-in-depth (commit). - Thanks to GitHub CodeQL (code scanning alert [#426]) and xet7 (fix).
Thanks to above GitHub users for their contributions and translators for their translations.