Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify FreeScout instance behind Cloudflare
-
DeliverySend failed logins with spoofed CF-Connecting-IP HTML payload
-
ExploitPayload stored unvalidated in activity log
-
ExecutionLogsMonitor emails unescaped value to admin
-
ImpactAdmin opens email, injected HTML/script executes
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the FreeScout APP_CLOUDFLARE_IS_USED setting to be enabled (a non-default, Cloudflare-fronted deployment mode) so that the CF-Connecting-IP header is trusted; the attacker triggers logging via failed login attempts, no authentication needed. Firing the payload additionally requires an administrator to open the LogsMonitor alert email in a client that renders HTML (UI:R) - the attack is blind, with no attacker feedback. Limiting factors: both the Cloudflare configuration and the LogsMonitor email-alert feature must be active, and the admin must open the mail; instances not behind Cloudflare or with CF integration disabled are not exploitable. |
| Impact | This is a stored/blind cross-site scripting issue (CWE-79) with a moderate CVSS 3.1 base score of 6.1 (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N). The network vector and PR:N correctly reflect that the injection point - the CF-Connecting-IP header during a failed login - is reachable by an unauthenticated remote attacker, but UI:R is the dominant limiting factor: the payload only fires when an administrator opens the LogsMonitor alert email in an HTML-rendering client. Two further constraints materially lower real-world risk and are not captured by the headline score: exploitation requires the non-default APP_CLOUDFLARE_IS_USED deployment mode to be enabled, and the attacker gets no feedback (blind delivery via email), so this favors targeted abuse of a known FreeScout+Cloudflare install over opportunistic mass exploitation. No EPSS score, KEV listing, or SSVC decision data was supplied in the input, so automatability and exploitation-maturity signals cannot be cross-referenced - the only corroborating artifact is the vendor fix commit, which is a patch, not an exploit. Net: a legitimately valid but conditional issue that should be patched, not an emergency; treat it as medium priority rather than a high-CVSS critical. Note the AC:L in the supplied vector arguably understates the Cloudflare-mode precondition - see assessed vector below. |
| Exploit ScenarioDerived | An attacker who knows a FreeScout instance sits behind Cloudflare submits failed login attempts with a forged CF-Connecting-IP header containing HTML/JavaScript; FreeScout trusts and logs the spoofed value. When the scheduled LogsMonitor job emails the activity summary to an administrator, the unescaped payload is embedded in the message and executes the moment the admin opens it in an HTML-capable mail client. No public exploit code was identified in the input - only the vendor patch commit is available. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
HTML injection in FreeScout's LogsMonitor administrator alert emails lets an unauthenticated remote attacker plant markup that executes when an administrator opens the notification, because the spoofed client IP recorded during failed logins is written into the email body without escaping. Exploitation requires the non-default APP_CLOUDFLARE_IS_USED setting to be enabled, so that the attacker-controlled CF-Connecting-IP header is trusted and persisted in the activity log; the instance must also have LogsMonitor email alerts active and the admin must view the message in an HTML-capable client (blind attack, no attacker feedback). CVSS 3.1 base score is 6.1 (assessed vector AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N); there is no public exploit identified at time of analysis and the issue is fixed in FreeScout 1.8.235.
RemediationAI
Upgrade to FreeScout 1.8.235, the vendor-released fixed version (https://github.com/freescout-help-desk/freescout/releases/tag/1.8.235); the patch commit 0f41f5cabb581de156ec8eb344ff6c0e6e0cc66a applies htmlspecialchars() to the log title, event description and properties in app/Console/Commands/LogsMonitor.php and adds a Helper::isValidIp($_SERVER['HTTP_CF_CONNECTING_IP']) check in the Symfony Request override, per advisory GHSA-9cm3-qvj2-8hg4. If immediate upgrade is not possible, the highest-value compensating control is to disable APP_CLOUDFLARE_IS_USED so the spoofable CF-Connecting-IP header is no longer trusted - the trade-off is that client IP resolution behind Cloudflare falls back to the proxy address, degrading accurate logging, rate limiting and any IP-based access rules. A lower-impact alternative is to keep Cloudflare mode but lock the origin so it only accepts traffic from Cloudflare's published IP ranges via firewall rules or Cloudflare Tunnel with authenticated origin pulls, which prevents attackers from reaching the application directly to forge the header; this depends on correct network configuration and can break direct/canary access. Reducing exposure of the LogsMonitor email alerts (disabling or narrowing alert recipients) and ensuring administrators read alerts in a client that does not render remote HTML also removes the trigger condition, at the cost of losing monitoring visibility or convenience. Note that no patched-version substitution is valid for the AF/AC dependency: the validation fix is only present from 1.8.235 onward.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Root cause is CWE-79 (improper neutralization of input during web page generation, i.e. cross-site scripting), realized here as a stored/blind variant delivered through email rather than a browser page. FreeScout ships an override of Symfony HttpFoundation's Request class (overrides/symfony/http-foundation/Request.php); its getClientIps() method is meant to resolve the true client address from proxy headers. When the Cloudflare-fronted deployment mode (APP_CLOUDFLARE_IS_USED) is enabled, that code path read $_SERVER['HTTP_CF_CONNECTING_IP'] and trusted whatever value the client supplied, without validating it as an IP address. Failed authentication attempts cause FreeScout to write the resolved client IP into the ActivityLog, so the attacker-controlled string becomes stored data. The LogsMonitor console command (app/Console/Commands/LogsMonitor.php) then assembles an HTML email body from those activity records, concatenating log titles, event descriptions and the properties blob directly into markup without htmlspecialchars(). The net effect is HTML/script injection into an administrator-facing email. The fix commit (0f41f5cabb581de156ec8eb344ff6c0e6e0cc66a) wraps the log title, event description and properties in htmlspecialchars() and gates HTTP_CF_CONNECTING_IP behind Helper::isValidIp(). The CPE cpe:2.3:a:freescout-help-desk:freescout:*:*:*:*:*:*:*:* covers all FreeScout releases, with the affected range being everything before 1.8.235. The CVSS vector confirms remote, unauthenticated reachability (AV:N/PR:N) but requires an administrator to open the alert email (UI:R), and the scope change (S:C) reflects that injected content executes in the administrator's mail client context while compromising only low confidentiality and integrity (C:L/I:L), with no availability impact.
Know when Freescout gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Unauthenticated injection point (PR:N) but AC:H because the non-default Cloudflare mode must be enabled and an admin must open an HTML-rendering client (UI:R); scope changes into the mail client (S:C) with low C/I.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
FreeScout is a self-hosted help desk and shared mailbox. Prior to 1.8.235, when APP_CLOUDFLARE_IS_USED is enabled, FreeScout trusts an unvalidated CF-Connecting-IP header during failed login attempts and stores the spoofed value in the activity log. LogsMonitor inserts the value into an administrator alert email without HTML escaping, allowing injected HTML to execute when an administrator opens the email. This issue is fixed in version 1.8.235.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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
Anonymous account takeover in FreeScout help desk before 1.8.224 lets an unauthenticated attacker seize the lowest-id ac
FreeScout is a self-hosted help desk and shared mailbox. Rated critical severity (CVSS 9.0), this vulnerability is remot
FreeScout is a free help desk and shared inbox built with PHP's Laravel framework. Rated high severity (CVSS 8.6), this
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
EUVD-2026-95211
NVD
CVE.org
EPSS
GitHub
Exploit-DB