Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
Public endpoint reachable over network with no auth or interaction and deterministic technique gives AV:N/AC:L/PR:N/UI:N; full account control yields C:H/I:H, and lockout of one account gives A:L.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
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.
AnalysisAI
Anonymous account takeover in FreeScout help desk before 1.8.224 lets an unauthenticated attacker seize the lowest-id activated agent or administrator account by abusing the public POST /user-setup/{hash}/{invite_sent_at} endpoint. By supplying a single URL-encoded space as the invite hash and a plaintext numeric timestamp, the attacker overwrites the target's email and password and is logged in as that user. No public exploit is identified at time of analysis, but the mechanics are fully disclosed in the GitHub advisory and CVSS is 9.4.
Technical ContextAI
FreeScout is an open-source PHP/Laravel shared-inbox and help-desk application (cpe:2.3:a:freescout-help-desk:freescout). The invite-activation flow in OpenController@userSetupSave locates the account to activate purely by its invite_hash column and then rewrites that row's credentials. The flaw class is CWE-178 (improper handling of case/canonicalization): on MySQL and MariaDB, CHAR/VARCHAR equality comparisons pad and ignore trailing spaces, so the stored empty-string invite_hash (set once a user has activated) equals a value of %20 (one trailing space). A second defect compounds it: the expiry check calls Helper::decrypt on invite_sent_at using the target's password hash, but Helper::decrypt returns its raw input unchanged on decryption failure, so a plaintext value like 9999999999 satisfies the time-to-live guard without any secret. Together these turn a one-time invitation endpoint into an unauthenticated credential-reset primitive against an already-activated account.
RemediationAI
Vendor-released patch: 1.8.224 - upgrade all FreeScout instances to 1.8.224 or later, which fixes the invite_hash matching and expiry-decryption logic, per advisory GHSA-jqj5-r72v-v29g (https://github.com/freescout-help-desk/freescout/security/advisories/GHSA-jqj5-r72v-v29g). If an immediate upgrade is not possible, block or restrict access to the /user-setup/ route at the reverse proxy or WAF (allowing it only from trusted networks during genuine onboarding windows), which prevents exploitation at the cost of breaking invitation self-activation until re-enabled. As a database-level hardening measure, ensure no activated account retains a non-empty predictable invite_hash and consider auditing for accounts whose email was recently changed. After patching, treat any pre-patch takeover as possible: rotate credentials and review admin/agent account changes and login history for the lowest-id activated user.
File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.
Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that
Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers
FreeScout is a self-hosted help desk and shared mailbox. Rated critical severity (CVSS 9.0), this vulnerability is remot
FreeScout is a self-hosted help desk and shared mailbox. Rated high severity (CVSS 8.0), this vulnerability is remotely
FreeScout is an open source help desk and shared inbox built with PHP. Rated high severity (CVSS 7.1), this vulnerabilit
FreeScout is a free, self-hosted help desk and shared mailbox. Rated medium severity (CVSS 6.3), this vulnerability is r
FreeScout is a free, self-hosted help desk and shared mailbox. Rated medium severity (CVSS 6.1), this vulnerability is r
A stored cross-site scripting (XSS) vulnerability exists in FreeScout help desk software versions 1.8.208 and below, whe
Arbitrary file write in FreeScout (prior to 1.8.215) allows authenticated administrators to achieve remote code executio
Unauthenticated account takeover in FreeScout versions prior to 1.8.217 allows remote attackers to gain permanent access
Unauthenticated remote attackers can access administrative diagnostic endpoints in FreeScout versions prior to 1.8.213,
Same weakness CWE-178 – Improper Handling of Case Sensitivity
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-46094