Medium severity · published Apr 21, 2026
CVE-2026-40565
FreeScout has Stored XSS / CSS Injection via linkify() — Unescaped URL in Anchor href
6.1
CVSS
0.2%
EPSS
No
On KEV
Description
FreeScout is a free self-hosted help desk and shared mailbox. Prior to version 1.8.213, FreeScout's linkify() function in app/Misc/Helper.php converts plain-text URLs in email bodies into HTML anchor tags without escaping double-quote characters (") in the URL. HTMLPurifier (called first via getCleanBody()) preserves literal " characters in text nodes. linkify() then wraps URLs including those " chars inside an unescaped href="..." attribute, breaking out of the href and injecting arbitrary HTML attributes. Version 1.8.213 fixes the issue.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
Required
Confidentiality
Low
Integrity
Low
Availability
None
Scope
Changed
Exploitation
Is it being used?
Exploit prediction (EPSS)0.2% · higher than 10% 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
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-40565
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-40565
Patch
https://github.com/freescout-help-desk/freescout/commit/265379b3ae343f06846adc0aa8510643d1eac2df
Release Notes
https://github.com/freescout-help-desk/freescout/releases/tag/1.8.213
Vendor Advisory
https://github.com/freescout-help-desk/freescout/security/advisories/GHSA-49pm-xwqj-vwjp
More from freescout
9.8
CVE-2026-40498
FreeScout has Authentication Bypass and Information Disclosure in SystemController via /system/cron
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
