CVE-2021-32671
📋 TL;DR
This vulnerability in Flarum forum software allows attackers to inject malicious HTML/JavaScript into user input fields, which executes in victims' browsers. It affects all Flarum communities running versions 1.0.0 or 1.0.1, enabling cross-site scripting attacks that can perform unauthorized actions on behalf of users.
💻 Affected Systems
- Flarum
📦 What is this software?
Flarum by Flarum
Flarum by Flarum
⚠️ Risk & Real-World Impact
Worst Case
Privileged users could have their sessions hijacked to perform administrative actions like deleting forums, modifying user settings, or changing admin panel configurations, potentially leading to complete forum compromise.
Likely Case
Attackers inject malicious scripts to steal user sessions, perform unauthorized actions like deleting discussions or modifying profiles, or redirect users to malicious sites.
If Mitigated
With proper input validation and output encoding, the HTML injection would be neutralized, preventing script execution while maintaining forum functionality.
🎯 Exploit Status
The vulnerability is trivially exploitable via the search box or other user input fields. Example payloads like <script>alert('test')</script> demonstrate the issue.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.0.2
Vendor Advisory: https://github.com/flarum/core/security/advisories/GHSA-5qjq-69w6-fg57
Restart Required: Yes
Instructions:
1. Backup your Flarum installation and database. 2. Update Flarum core to version 1.0.2 via Composer: composer require flarum/core:^1.0.2. 3. Clear cache: php flarum cache:clear. 4. Restart your web server.
🔧 Temporary Workarounds
Input Sanitization
allImplement server-side input validation to strip or escape HTML tags from user inputs before processing.
🧯 If You Can't Patch
- Disable user input fields that accept HTML, particularly the search functionality, if not critical.
- Implement a web application firewall (WAF) with XSS protection rules to block malicious payloads.
🔍 How to Verify
Check if Vulnerable:
Check if your Flarum version is 1.0.0 or 1.0.1 by examining the composer.lock file or running php flarum info.
Check Version:
php flarum info | grep 'Flarum Core'
Verify Fix Applied:
After updating, verify the installed version is 1.0.2 and test input fields with HTML payloads to ensure they are properly escaped.
📡 Detection & Monitoring
Log Indicators:
- Unusual HTML/script tags in user input logs, particularly in search queries or forum posts.
Network Indicators:
- HTTP requests containing script tags or JavaScript payloads in POST/GET parameters.
SIEM Query:
source="web_server_logs" AND ("<script" OR "javascript:" OR "onerror=" OR "onload=")
🔗 References
- https://github.com/flarum/core/commit/440bed81b8019dff00642c8f493b4909d505a28a
- https://github.com/flarum/core/security/advisories/GHSA-5qjq-69w6-fg57
- https://packagist.org/packages/flarum/core
- https://github.com/flarum/core/commit/440bed81b8019dff00642c8f493b4909d505a28a
- https://github.com/flarum/core/security/advisories/GHSA-5qjq-69w6-fg57
- https://packagist.org/packages/flarum/core