CVE-2025-54366

8.8 HIGH

📋 TL;DR

CVE-2025-54366 is a critical deserialization vulnerability in FreeScout help desk software that allows authenticated attackers with knowledge of the APP_KEY to achieve remote code execution. The vulnerability affects versions 1.8.185 and below, enabling complete compromise of the web application through manipulation of attachment parameters. Organizations running vulnerable FreeScout instances are at risk of data theft, system takeover, and lateral movement.

💻 Affected Systems

Products:
  • FreeScout Help Desk
Versions: 1.8.185 and below
Operating Systems: Any OS running PHP/Laravel
Default Config Vulnerable: ⚠️ Yes
Notes: Requires attacker to have knowledge of APP_KEY and authenticated access to the /conversation/ajax endpoint

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise leading to data exfiltration, installation of persistent backdoors, lateral movement to other systems, and potential ransomware deployment.

🟠

Likely Case

Attacker gains shell access to the web server, steals sensitive customer support data and credentials, and uses the compromised system as a foothold for further attacks.

🟢

If Mitigated

Limited impact due to network segmentation, strong authentication controls, and monitoring that detects exploitation attempts early.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires authenticated access and APP_KEY knowledge, but the vulnerability is in a core function with clear attack vectors

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.8.186

Vendor Advisory: https://github.com/freescout-help-desk/freescout/security/advisories/GHSA-vcc2-6r66-gvvj

Restart Required: Yes

Instructions:

1. Backup your FreeScout installation and database. 2. Download version 1.8.186 from the official repository. 3. Replace the vulnerable files with patched versions. 4. Clear Laravel cache (php artisan cache:clear). 5. Restart your web server (e.g., systemctl restart apache2).

🔧 Temporary Workarounds

Block Vulnerable Endpoint

linux

Temporarily block access to the vulnerable /conversation/ajax endpoint via web server configuration

# For Apache: add to .htaccess
RewriteRule ^conversation/ajax.*$ - [F,L]
# For Nginx: add to server block
location ~ ^/conversation/ajax { deny all; }

Rotate APP_KEY

all

Change the APP_KEY to invalidate attacker knowledge of this required component

php artisan key:generate

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate FreeScout from critical systems
  • Deploy a WAF with rules to detect and block deserialization attacks on the vulnerable endpoint

🔍 How to Verify

Check if Vulnerable:

Check FreeScout version in admin panel or examine composer.json for version <=1.8.185

Check Version:

grep -r "version" composer.json | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+'

Verify Fix Applied:

Confirm version is 1.8.186 or higher in admin panel or composer.json

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /conversation/ajax with large or malformed attachment parameters
  • PHP errors related to unserialize() or Helper::decrypt() functions
  • Unexpected process execution from web server user

Network Indicators:

  • HTTP requests with serialized data in POST parameters
  • Outbound connections from web server to unfamiliar IPs

SIEM Query:

source="web_server_logs" AND (uri="/conversation/ajax" AND method="POST" AND (attachment* OR Helper::decrypt))

🔗 References

📤 Share & Export