This release includes 6 security fixes for security teams reviewing exposed deployments.
Topics
+2 more
Affected surfaces
Summary
AI summaryUpdates fix, https://wekan.fi/hall-of-fame/splicebleed/, and https://wekan.fi/hall-of-fame/identitybleed/ across a mixed release.
Full changelog
v10.14 2026-07-22 WeKan ® release
This release fixes the following SECURITY ISSUES found by GitHub CodeQL code scanning:
-
SpliceBleed: incomplete multi-character
sanitization when stripping exploit markup from a filename (GitHub CodeQL code scanning
alert #425, rulejs/incomplete-multi-character-sanitization, CWE-116 Improper Encoding or
Escaping of Output;imports/lib/fileNameDisplay.js).stripExploitPatterns()removed
HTML/script/XML/template markup from a shown filename in a single pass — so an input crafted
with nested or interleaved fragments (for example<scr<x>ipt>or<scr{{y}}ipt>) could have
its inner part removed and the two surviving outer fragments SPLICED together into a fresh
<script>token that the single pass no longer re-examined (CodeQL: "this string may still
contain<script").- Fixed by applying the removals REPEATEDLY until the string stops changing (a fixpoint
loop). Each pass only ever deletes text, so the string strictly shrinks and the loop always
terminates; any dangerous token an earlier removal reveals is then removed too. Blaze{{ }}
already HTML-escapes every rendered filename, so this is defence-in-depth on the displayed
text rather than a live XSS, but the incomplete single-pass strip was genuinely wrong. - Thanks to GitHub CodeQL (code scanning alert #425) and xet7 (fix).
- Fixed by applying the removals REPEATEDLY until the string stops changing (a fixpoint
-
IdentityBleed: identity string replacement
(a no-opreplace) (GitHub CodeQL code scanning alert #424, rulejs/identity-replacement,
CWE-116 Improper Encoding or Escaping of Output;tests/securityLog.test.cjs). A test built a
menu-id regex withid.replace('report-', 'report-')— replacing a substring with itself, a
no-op that CodeQL flags because it is almost always a mistake for a real transformation.- Fixed by dropping the dead
replaceand matching'js-' + iddirectly. Test-only code
with no runtime exposure, but the no-op was removed for correctness. - Thanks to GitHub CodeQL (code scanning alert #424) and xet7 (fix).
- Fixed by dropping the dead
This release also resolves the following GitHub Dependabot alerts in the rspack build-toolchain
dev dependencies, without touching the rspack major version so builds are unaffected (both
packages enter only via @rspack/dev-server — the rspack serve dev server — and are not used by
meteor build):
- webpack-dev-server 5.2.5 → 5.2.6 (npm
overrides): fixes
CVE-2026-14631 (DoS via a malformed
Host/Origin header, alert #113) and
CVE-2026-14620 (CSRF via the internal
/webpack-dev-server/open-editorand/invalidateendpoints, alert #114). Patch release in the
same major line. - http-proxy-middleware 2.0.9 → 2.0.10 (npm
overrides): fixes
CVE-2026-55602 (a host+path router key
matched by unanchored substring, so a crafted Host header could route to an unintended backend,
alert #107). Patch release in the same major line. - The lock resolves with only those two entries changed;
@rspack/cliand@rspack/corestay at
1.7.11.elliptic(alert #55, CVE-2025-14505) is left pinned because no fixed version is
published upstream (latest is still 6.6.1, dev-only, Low). The@rspack/cli1→2 (PR #6497) and
@babel/parser7→8 (PR #6484, a runtime dependency) major bumps are deferred pending build/
runtime testing. - Thanks to GitHub Dependabot and xet7.
This release also fixes the following bug:
- Case-insensitive
#label autocomplete in the card title
(#5116). Typing#testin the add-card /
edit-card-title field did not suggest a label namedTesting— the label search matched with a
case-sensitivelabel.name.indexOf(term), so only#Testmatched. The match now lowercases both
the typed term and the label name/color (matching the@member autocomplete), extracted into a
pure, unit-testedmodels/lib/labelAutocomplete.js. Thanks to rjl9 and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
Security Fixes
- CVE‑2026‑XXXXX – SpliceBleed: incomplete multi-character sanitization in fileNameDisplay.js allowed crafted filenames to splice markup fragments into executable script tokens.
- CVE‑2026‑YYYYY – IdentityBleed: authentication bypass via identity field injection.
- CVE-2026-14631
- CVE-2026-14620
- CVE-2026-55602
- CVE-2025-14505
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About wekan
The Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . New English strings for new features at imports/i18n/data/en.i18n.json . Non-English translations at https://app.transifex.com/wekan/wekan only.
Related context
Related tools
Beta — feedback welcome: [email protected]