Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-40590

CVE-2026-40590: FreeScout Auth Bypass Vulnerability

CVE-2026-40590 is an authentication bypass flaw in FreeScout that allows attackers to manipulate hidden customer profiles through the Create Customer modal. This article covers technical details, affected versions, and patches.

Published:

CVE-2026-40590 Overview

FreeScout is a free self-hosted help desk and shared mailbox solution. A vulnerability exists in versions prior to 1.8.214 where the Change Customer modal exposes a "Create a new customer" flow via POST /customers/ajax with action=create. When operating under limited visibility conditions, the endpoint fails to properly enforce unique-email validation. If the supplied email already belongs to a hidden customer, the Customer::create() function reuses that hidden customer object and populates empty profile fields from attacker-controlled input, enabling unauthorized modification of customer records.

Critical Impact

Authenticated attackers with low privileges can manipulate hidden customer profile data through an authorization bypass, potentially compromising customer data integrity within the help desk system.

Affected Products

  • FreeScout versions prior to 1.8.214
  • FreeScout self-hosted help desk installations with customer visibility restrictions enabled
  • Environments utilizing the Change Customer modal functionality

Discovery Timeline

  • 2026-04-21 - CVE-2026-40590 published to NVD
  • 2026-04-22 - Last updated in NVD database

Technical Details for CVE-2026-40590

Vulnerability Analysis

This vulnerability is classified as CWE-639: Authorization Bypass Through User-Controlled Key, a type of Insecure Direct Object Reference (IDOR) flaw. The core issue stems from insufficient validation in the customer creation workflow when visibility restrictions are in place.

The vulnerable endpoint /customers/ajax with the action=create parameter is designed to allow authenticated users to create new customer entries. However, when the application operates under limited visibility mode, a logic flaw causes the unique email validation to be bypassed. This creates a condition where an attacker can submit a request with an email address belonging to an existing hidden customer.

When this occurs, rather than rejecting the duplicate email or creating a new customer record, the Customer::create() function retrieves the existing hidden customer object and proceeds to populate any empty profile fields with the attacker-supplied values. This allows an authenticated user with minimal privileges to modify profile data for customers they should not have access to view or edit.

Root Cause

The root cause is improper authorization enforcement in the customer creation endpoint when limited visibility is enabled. The application fails to maintain consistent unique-email validation across different visibility contexts, and the Customer::create() method inappropriately reuses existing hidden customer objects instead of treating them as separate, inaccessible entities. This violates the principle of least privilege by allowing users to indirectly access and modify records that should be hidden from them.

Attack Vector

The attack is network-based and requires low-privilege authenticated access to the FreeScout application. An attacker must:

  1. Obtain valid authentication credentials for the FreeScout instance
  2. Identify or guess email addresses of hidden customers
  3. Submit a crafted POST request to /customers/ajax with action=create and the target email
  4. Include malicious values for profile fields they wish to populate on the hidden customer record

The vulnerability exploits the race condition between visibility checks and email uniqueness validation, allowing the attacker to "hijack" empty fields on hidden customer profiles. No user interaction is required beyond the attacker's own authenticated session.

The attack flow involves sending a malicious POST request to the /customers/ajax endpoint with the action=create parameter. When the supplied email matches a hidden customer, the system reuses that customer object and updates empty profile fields with attacker-controlled data. For complete technical details, refer to the GitHub Security Advisory.

Detection Methods for CVE-2026-40590

Indicators of Compromise

  • Unusual POST requests to /customers/ajax endpoint with action=create parameter from users who typically don't create customers
  • Customer profile modifications without corresponding audit trail entries for legitimate user actions
  • Multiple customer creation attempts using the same email address within short timeframes
  • Evidence of profile field changes on hidden customer records

Detection Strategies

  • Monitor application logs for repeated POST /customers/ajax requests with action=create from the same session
  • Implement alerting for customer record modifications that bypass standard edit workflows
  • Review web server access logs for patterns indicating enumeration of customer email addresses
  • Configure SIEM rules to correlate customer creation events with visibility-restricted accounts

Monitoring Recommendations

  • Enable detailed audit logging for all customer creation and modification operations
  • Implement rate limiting on the /customers/ajax endpoint to prevent enumeration attacks
  • Configure alerts for any modifications to hidden customer records
  • Regularly review customer profile change history for anomalous updates

How to Mitigate CVE-2026-40590

Immediate Actions Required

  • Upgrade FreeScout to version 1.8.214 or later immediately
  • Review customer records for unauthorized modifications, particularly hidden customer profiles
  • Audit user access logs for suspicious activity targeting the /customers/ajax endpoint
  • Consider temporarily disabling the "Create a new customer" functionality in the Change Customer modal until patched

Patch Information

The vulnerability has been addressed in FreeScout version 1.8.214. The fix ensures proper unique-email validation is enforced regardless of visibility settings and prevents the Customer::create() function from reusing hidden customer objects.

Patch resources:

Workarounds

  • Restrict access to customer creation functionality to trusted administrator accounts only
  • Implement additional authentication requirements for the /customers/ajax endpoint
  • Use web application firewall (WAF) rules to monitor and potentially block suspicious requests to the vulnerable endpoint
  • Temporarily disable limited visibility features until the patch can be applied
bash
# Configuration example
# Upgrade FreeScout to patched version
cd /path/to/freescout
git fetch --tags
git checkout 1.8.214
php artisan freescout:after-app-update

# Verify installation version
php artisan freescout:version

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.