⚠️ The 4.0.x branch will not receive any update—including security fixes—after this one.
⚠️ This release is an important security release fixing several security issues.
Corresponding security releases are available for the 4.2.x branch, the 4.1.x branch and the 3.5.x branch.
If you are using nightly builds, do not use this release but update to
nightly.2024-02-15-security
or newer instead. If you are on themain
branch, update to the latest commit.
End of life notice
The 4.0.x branch will not receive any further update after this one.
This means that no further security fix will be made available for this branch, and you will need to update to a more recent version (such as the 4.2.x branch) to receive security fixes.
Changelog
Security
- Update the
sidekiq-unique-jobs
dependency (see GHSA-cmh9-rx85-xj38)
In addition, we have disabled the web interface forsidekiq-unique-jobs
out of caution, as it is very rarely useful.
If you need to investigatesidekiq-unique-jobs
locks, you can re-enable it by settingENABLE_SIDEKIQ_UNIQUE_JOBS_UI=true
.
If you only need to clear all locks, you can now use the newly-addedbundle exec rake sidekiq_unique_jobs:delete_all_locks
. - Update the
nokogiri
dependency (see GHSA-xc9x-jj77-9p9j) - Disable administrative Doorkeeper routes (ThisIsMissEm)
- Fix ongoing streaming sessions not being invalidated when applications get deleted in some cases (GHSA-7w3c-p9j8-mq3x)
In some rare cases, the streaming server was not notified of access tokens revocation on application deletion. - Change external authentication behavior to never reattach a new identity to an existing user by default (GHSA-vm39-j3vx-pch3)
Up until now, Mastodon has allowed new identities from external authentication providers to attach to an existing local user based on their verified e-mail address.
This allowed upgrading users from a database-stored password to an external authentication provider, or move from one authentication provider to another.
However, this behavior may be unexpected, and means that when multiple authentication providers are configured, the overall security would be that of the least secure authentication provider.
For these reasons, this behavior is now locked under theALLOW_UNSAFE_AUTH_PROVIDER_REATTACH
environment variable.
In addition, regardless of this environment variable, Mastodon will refuse to attach two identities from the same authentication provider to the same account.
Upgrade notes
To get the code for v4.0.14, use git fetch && git checkout v4.0.14
.
As always, make sure you have backups of the database before performing any upgrades. If you are using docker-compose, this is how a backup command might look:
docker exec mastodon_db_1 pg_dump -Fc -U postgres postgres > name_of_the_backup.dump
Dependencies
Warning
The minimum required Ruby version has been bumped to 3.0.
With the exception of Ruby, external dependencies have not changed compared to v4.0.14, the compatible PostgreSQL, Node, Elasticsearch and Redis versions are the same, that is:
- Ruby: 3.0
- PostgreSQL: 9.5 or newer
- Elasticsearch (optional, for full-text search): 7.x
- Redis: 4 or newer
- Node: >= 14, < 18
- ImageMagick: 6.9.7-7 or newer
If your uploaded images are broken after the upgrade, it means your installed ImageMagick version is older than the new minimum version (6.9.7-7), for example if you are running Ubuntu 18.04. If this happens, you can find more information and ways to fix it on this page.
Update steps
The following instructions are for updating from 4.0.13.
If you are upgrading directly from an earlier release, please carefully read the upgrade notes for the skipped releases as well, as they often require extra steps such as database migrations.
Non-Docker only:
- Install dependencies:
bundle install
andyarn install --frozen-lockfile
Both Docker and non-Docker:
- Restart all Mastodon processes