github craigk5n/webcalendar v1.9.26
WebCalendar v1.9.26

5 hours ago

WebCalendar v1.9.26

A security release resolving the findings of a comprehensive security audit —
55 confirmed vulnerabilities (2 critical, 12 high, 25 medium, 16 low) plus 6
validated leads. All users are strongly encouraged to upgrade. There are no
database schema changes.

Security

  • Access control — enforced per-object ownership and authorization across
    event create/edit/delete, AJAX endpoints, export, reports, preferences,
    remote (nonuser) calendars, custom templates, document/blob delegation, the
    wizard POST API, and MCP write tools; fixed privilege escalation and
    cross-account (IDOR) access. (#801, #802)
  • Authentication & session — replaced the pass-the-hash remember-me cookie
    with a random token stored only as a server-side hash, across the DB, LDAP,
    IMAP and NIS backends; added session-id rotation on login, SameSite and
    strict-mode session/cookie hardening, a login brute-force throttle, and
    account-lifecycle, registration and open-redirect hardening. (#801, #803)
  • Cross-site scripting — escaped reflected and stored output in ajax.php,
    task names, include-src, iCal JS, HTML mail, upcoming.php and report.php;
    fixed an rss.php CDATA breakout. (#801, #802)
  • SQL escaping — DB2/ODBC parameter escaping now uses ANSI quote-doubling
    instead of addslashes, which previously left a live string terminator. (#803)
  • SSRF — closed an IPv4-mapped IPv6 bypass in the remote-URL guard. (#801)
  • Local file inclusion / path traversal — fixed unauthenticated LFI via
    js_cacher.php, confined category-icon copying to wc-icons/, and locked down
    the custom-template subsystem. (#801)
  • Information disclosure — fixed private/confidential event leaks in
    view_entry.php, upcoming.php and report.php. (#801)
  • Configuration integrity — stopped request-derived SERVER_URL from being
    persisted and blocked non-admin override of system settings. (#801)
  • Email — enforce STARTTLS for SMTP notification mail. (#801)
  • iCalendar import — require active participation before matching an event
    by UID. (#801)
  • Supply chain — pinned the release-signing GitHub Action to a commit SHA.
    (#802)

Upgrading

No database schema changes. After deploying, run wizard/index.php once to
advance the stored version (the wizard is triggered for every version bump,
even when no SQL runs).

Verifying this release

WebCalendar releases ship a signed manifest. See docs/release-signing.md for
verification instructions.

Don't miss a new webcalendar release

NewReleases is sending notifications on new releases.