Today we are releasing a security update for the bundled Flarum Sticky extension. It addresses a cross-site scripting (XSS) vulnerability present in versions beta 14 and beta 15 of the extension.
How to update
If you are using Flarum beta 15:
In your Flarum folder (containing
composer update flarum/sticky --prefer-dist --no-dev -a
You can then confirm the update worked by checking Composer output (should say "updating to v0.1.0-beta.15.1"), or by checking the version number in the admin panel on the extension page.
If you are using Flarum beta 14, disable the Sticky extension until you can update to Flarum beta 15.
If you are using Flarum beta 13, you are not impacted by this particular issue. You should still update to Flarum beta 15 as soon as possible because the version is no longer under support and will not receive any security fix.
A change in release beta 14 of the Sticky extension caused the plain text content of the first post of a pinned discussion to be injected as HTML on the discussion list. The issue was discovered following an internal audit.
Any HTML would be injected through Mithril's
m.trust() helper. This resulted in an HTML injection where
Since the exploit only happens with the first post of a pinned discussion, an attacker would need the ability to pin their own discussion, or be able to edit a discussion that was previously pinned.
On forums where all pinned posts are authored by your staff, you can be relatively certain the vulnerability has not been exploited.
Forums where some user-created discussions were pinned can look at the first post edit date to find whether the vulnerability might have been exploited. Because Flarum doesn't store the post content history, you cannot be certain if a malicious edit was reverted.
The fix will be available in version v0.1.0-beta.16 with Flarum beta 16. The fix has already been back-ported to Flarum beta 15 as version v0.1.0-beta.15.1 of the Sticky extension.
Forum administrators can disable the Sticky extension until they are able to apply the update. The vulnerability cannot be exploited while the extension is disabled.