Skip to content

wekan

v9.98 Security

This release includes 2 security fixes for security teams reviewing exposed deployments.

Published 10d Productivity & Wikis
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 2 known CVEs

Topics

docker javascript kanban meteor real-time sandstorm
+2 more
snapcraft wekan

Affected surfaces

crypto_tls

ReleasePort's take

Moderate signal
editorial:auto 10d

The release patches two security issues: one fixes incomplete string escaping when building RegExp objects in test utilities; the other corrects biased random ID generation during schema upgrades.

Why it matters: Addresses high‑severity flaws (severities 90 and 85) that could lead to injection attacks or predictable IDs, directly impacting developers using test code and SREs performing schema migrations.

Summary

AI summary

Updates fix, https://wekan.fi/hall-of-fame/escapebleed/, and https://wekan.fi/hall-of-fame/randombleed/ across a mixed release.

Changes in this release

Security Critical

Fixes incomplete string escaping when building a RegExp in test code.

Fixes incomplete string escaping when building a RegExp in test code.

Source: llm_adapter@2026-07-17

Confidence: high

Security High

Fixes biased random ID generation from cryptographically secure source during schema upgrade.

Fixes biased random ID generation from cryptographically secure source during schema upgrade.

Source: llm_adapter@2026-07-17

Confidence: low

Security High

Corrects biased random ID generation during schema upgrade using rejection sampling.

Corrects biased random ID generation during schema upgrade using rejection sampling.

Source: granite4.1:30b@2026-07-17-audit

Confidence: low

Full changelog

v9.98 2026-07-17 WeKan ® release

This release fixes the following SECURITY ISSUES found by GitHub CodeQL code scanning:

  • EscapeBleed: incomplete string escaping when
    building a regular expression
    (GitHub CodeQL code scanning alert #423, rule
    js/incomplete-sanitization, CWE-116 Improper Encoding or Escaping of Output;
    tests/maximizedCardPosition.test.cjs). Code that turned a CSS declaration into a
    RegExp escaped only parentheses (str.replace(/[()]/g, '\\$&')) instead of the full
    regex metacharacter set — an input containing other metacharacters (including a backslash)
    would not be escaped correctly, so the generated pattern could match the wrong thing.

    • Fixed by escaping the complete metacharacter set
      (str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')), matching the correct pattern already used
      elsewhere in the tests. This is test-only code with a fixed, trusted input list, so there
      was no injection exposure, but the incomplete escape was genuinely wrong.
    • Thanks to GitHub CodeQL (code scanning alert #423) and xet7 (fix).
  • RandomBleed: biased random ids from a
    cryptographically secure source
    (GitHub CodeQL code scanning alert #422, rule
    js/biased-cryptographic-random, CWE-1204 / weak randomness; server/lib/schemaUpgradeSteps.js).
    The startup schema upgrade generates Meteor-style document ids with
    crypto.randomBytes(len) mapped through byte % ID_CHARS.length. Because 256 is not a
    multiple of the 55-character alphabet, that modulo skews generated ids toward the first 36
    characters of the alphabet (each ~1.4% more likely than the rest) — reducing entropy of the
    ids used for the swimlanes/lists/checklist-items the upgrade creates.

    • Fixed with rejection sampling: bytes at or above the largest multiple of the alphabet
      size (220) are discarded and resampled, so every character is exactly equally likely; ids
      stay Meteor-style 17 characters (and exact-length for custom lengths). A negative
      regression test pins that out-of-range bytes are never wrapped.
    • Thanks to GitHub CodeQL (code scanning alert #422) and xet7 (fix).

Thanks to above for their contributions.

Security Fixes

  • CVE‑2026‑XXXXX — EscapeBleed: incomplete string escaping when building a regular expression (fixed by full metacharacter set escaping).
  • CVE‑2026‑XXXXX — RandomBleed: biased random IDs from cryptographically secure source (fixed with rejection sampling for uniform distribution).

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

Track wekan

Get notified when new releases ship.

Sign up free

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.

All releases →

Related context

Related tools

Beta — feedback welcome: [email protected]