Critical severity · published Apr 21, 2026
CVE-2026-40498
FreeScout has Authentication Bypass and Information Disclosure in SystemController via /system/cron
9.8
CVSS
0.6%
EPSS
No
On KEV
Description
FreeScout is a free self-hosted help desk and shared mailbox. Prior to version 1.8.213, an unauthenticated attacker can access diagnostic and system tools that should be restricted to administrators. The /system/cron endpoint relies on a static MD5 hash derived from the APP_KEY, which is exposed in the response and logs. Accessing these endpoints reveals sensitive server information (Full Path Disclosure), process IDs, and allows for Resource Exhaustion (DoS) by triggering heavy background tasks repeatedly without any rate limiting. The cron hash is generated using md5(APP_KEY . 'web_cron_hash'). Since this hash is often transmitted via GET requests, it is susceptible to exposure in server logs, browser history, and proxy logs. Furthermore, the lack of rate limiting on these endpoints allows for automated resource exhaustion (DoS) and brute-force attempts. Version 1.8.213 fixes the issue.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Confidentiality
High
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.6% · higher than 47% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
FR
freescout · freescout-help-desk
< 1.8.213 · source: vendor, NVD
Affected product
FR
freescout
freescout-help-desk
More from freescout
9.8
CVE-2026-27637
FreeScout's Predictable Authentication Token Enables Account Takeover
9.8
CVE-2025-48481
FreeScout Has Business Logic Errors
9.8
CVE-2025-48471
FreeScout Vulnerable to Arbitrary File Upload
9.4
CVE-2026-53595
FreeScout vulnerable to anonymous account takeover via /user-setup empty invite_hash on MySQL
9.3
CVE-2026-32754
FreeScout: Stored XSS via Unescaped Email Template Rendering ({!! $thread->body !!})