Version 0.17.3

Our latest patch version contains several critical security fixes, including one for an authentication bypass that let unauthenticated attackers use the API as another user. It also fixes several other issues around federation, private blogs, and access control. We recommend all admins update to this version as soon as possible.

This release also updates our Web Monetization support to the latest version of the standard, and includes a handful of bug fixes and improvements for users and admins.

Security

User-Facing Changes

Admin-Facing Changes

Developer-Facing Changes

Dependencies and minor fixes

Upgrading from v0.17.x or earlier

  1. Download the latest release for your operating system and architecture
  2. Stop running your writefreely server
  3. Replace all files in your installation (except for the keys directory) with the ones in the archive
  4. (Only when upgrading from < v0.17.0) Update your database by running: writefreely db migrate
  5. Start your writefreely server again
  6. (Recommended) Revoke existing API access tokens, as described below

If you're upgrading from a much earlier version, follow the instructions in each previous release.

Upgrading closes the authentication bypass (GHSA-7jv7-gf23-wcqq), but doesn't invalidate API access tokens that already exist. As an extra precaution, in case any were exposed before you upgraded, we recommend revoking all existing tokens once your upgraded instance is running.

Doing this will sign all users out of apps and tools that use WriteFreely's API, such as mobile apps, command-line clients, and other integrations. They'll need to log in to those again. People signed in to WriteFreely on the web stay signed in.

There's no writefreely command for this, so you'll need to clear the accesstokens table directly. Use the database details from your config.ini:

SQLite

sqlite3 /path/to/writefreely.db "DELETE FROM accesstokens;"

MySQL / MariaDB

mysql -u <username> -p <database> -e "DELETE FROM accesstokens;"

Optionally, to invalidate web sessions, you can also regenerate your session keys using the steps below. This will require all users to log in again, and for readers to re-enter passwords for any password-protected blogs.

  1. Stop WriteFreely
  2. Back up your keys folder temporarily
  3. Delete keys/cookies_auth.aes256 and keys/cookies_enc.aes256 (do not delete keys/email.aes256)
  4. Run writefreely keys generate as the same user as your server
  5. Start WriteFreely again

Full Changelog: https://github.com/writefreely/writefreely/compare/v0.17.2...v0.17.3

#WriteFreely #release