Description
FreeScout is a free help desk and shared inbox built with PHP's Laravel framework. Prior to version 1.8.224, the public endpoint `POST /user-setup/{hash}/{invite_sent_at}` (`OpenController@userSetupSave`) selects the target account solely by its `invite_hash` column, then overwrites that account's email and password and logs in as it. No authentication, cookie, or prior session is required. After a user activates, FreeScout sets `invite_hash` to the empty string. On MySQL and MariaDB, `VARCHAR` equality ignores trailing spaces, so a single URL-encoded space (`%20`) matches the stored empty string and selects the lowest-id activated user. The expiry guard decrypts `invite_sent_at` with the target's password hash, but `Helper::decrypt` returns its raw input unchanged when decryption fails. A plaintext numeric value such as `9999999999` therefore passes the time-to-live check without any secret. The result is that an anonymous attacker sets the email and password of the lowest-id activated FreeScout account (a support agent, or an administrator if one was added by invitation) and authenticates as that account. Version 1.8.224 contains a fix.
Published: 2026-07-20
Score: 9.4 Critical
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

FreeScout is a free help‑desk and shared‑inbox solution built with PHP’s Laravel framework. Before version 1.8.224, its public POST endpoint `/user‑setup/{hash}/{invite_sent_at}` (`OpenController@userSetupSave`) locates a target account solely by the value of its `invite_hash` column, overwrites that account’s email and password, and logs in as it. No authentication cookie or prior session is required. After a user activates, FreeScout sets the `invite_hash` field to an empty string. In MySQL and MariaDB the equality comparison for `VARCHAR` ignores trailing spaces, so a single URL‑encoded space (`%20`) matches the stored empty string and selects the lowest‑ID activated user. The route’s expiry guard decrypts `invite_sent_at` using the target’s password hash, but `Helper::decrypt` returns the raw input unchanged when decryption fails; a plaintext numeric value such as `9999999999` therefore bypasses the time‑to‑live check. The result is that an anonymous attacker can set a new email and password for the lowest‑ID activated FreeScout account (a support agent or an administrator added by invitation) and authenticate as that account, effectively gaining account‑takeover privileges.

Affected Systems

The vulnerability affects the FreeScout help desk application published by freescout-help-desk. All releases prior to 1.8.224 are affected; upgrading to version 1.8.224 or newer removes the open /user-setup route that allowed the exploit.

Risk and Exploitability

The CVSS score of 9.4 indicates a critical severity, and the lack of authentication or session requirements means that the exploit can be performed over an open internet connection solely by sending a crafted POST request to /user-setup with a space in the hash and a timestamp value such as 9999999999. The exploit path is straightforward, the required conditions are minimal, and although the EPSS score of < 1% indicates a low probability of exploitation, the simplicity of the attack and the lack of mitigation make it a high‑risk scenario. The vulnerability is not listed in the CISA KEV catalog.

Generated by OpenCVE AI on July 30, 2026 at 18:31 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade FreeScout to version 1.8.224 or later, which removes the vulnerable route and fixes the invite_hash handling.
  • If an upgrade is delayed, block or disable the /user-setup/{hash}/{invite_sent_at} endpoint via a web‑application firewall or server configuration to prevent unauthenticated access.
  • Ensure that any active accounts have strong, unique passwords and that the invite_hash field is not left empty or is set to NULL after activation to mitigate future similar issues.

Generated by OpenCVE AI on July 30, 2026 at 18:31 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 21 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Mon, 20 Jul 2026 22:30:00 +0000

Type Values Removed Values Added
First Time appeared Freescout Helpdesk
Freescout Helpdesk freescout
Vendors & Products Freescout Helpdesk
Freescout Helpdesk freescout

Mon, 20 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
Description FreeScout is a free help desk and shared inbox built with PHP's Laravel framework. Prior to version 1.8.224, the public endpoint `POST /user-setup/{hash}/{invite_sent_at}` (`OpenController@userSetupSave`) selects the target account solely by its `invite_hash` column, then overwrites that account's email and password and logs in as it. No authentication, cookie, or prior session is required. After a user activates, FreeScout sets `invite_hash` to the empty string. On MySQL and MariaDB, `VARCHAR` equality ignores trailing spaces, so a single URL-encoded space (`%20`) matches the stored empty string and selects the lowest-id activated user. The expiry guard decrypts `invite_sent_at` with the target's password hash, but `Helper::decrypt` returns its raw input unchanged when decryption fails. A plaintext numeric value such as `9999999999` therefore passes the time-to-live check without any secret. The result is that an anonymous attacker sets the email and password of the lowest-id activated FreeScout account (a support agent, or an administrator if one was added by invitation) and authenticates as that account. Version 1.8.224 contains a fix.
Title FreeScout vulnerable to anonymous account takeover via /user-setup empty invite_hash on MySQL
Weaknesses CWE-178
CWE-287
CWE-640
References
Metrics cvssV3_1

{'score': 9.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L'}


Subscriptions

Freescout Helpdesk Freescout
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-21T14:56:21.784Z

Reserved: 2026-06-09T19:39:52.403Z

Link: CVE-2026-53595

cve-icon Vulnrichment

Updated: 2026-07-21T13:20:46.783Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T18:45:06Z

Weaknesses
  • CWE-178

    Improper Handling of Case Sensitivity

  • CWE-287

    Improper Authentication

  • CWE-640

    Weak Password Recovery Mechanism for Forgotten Password