Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate as low-privileged customer
-
DeliveryUpload SSL cert with script in issuer['O'] field
-
ExploitPayload stored verbatim via openssl_x509_parse()
-
InstallAdmin opens SSL certificates page, Twig raw renders payload
-
C2Script executes in admin session
-
ExecuteAdmin account takeover
-
ImpactEscalate to root via config cron
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 | Requires an authenticated Froxlor customer account (the lowest-privileged role) with the ability to upload an SSL certificate for a domain they own - the injection point is the certificate's issuer organization (issuer['O']) field parsed by openssl_x509_parse() in the Certificates API add()/update() methods. Execution is gated on a privileged victim: an administrator or reseller must open the Domains > SSL certificates listing page, where Twig's |
| Impact | This is a genuine priority within its deployment niche, though not a mass-exploitation emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N, score 9.3) reflects a low-complexity network-reachable stored XSS that crosses a privilege boundary (SC:H/SI:H = subsequent-system high impact), and the CVSS 3.1 equivalent would carry Scope:Changed with C:H/I:H. Two signals temper the raw score: exploitation requires an authenticated customer account (PR:L) to inject the payload AND requires a privileged admin/reseller to open the SSL certificates page (UI:P), so it is not fire-and-forget. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active or automated exploitation - this reads as a targeted, victim-interaction-gated flaw rather than a widespread wormable one. The patch (2.3.12) and a coordinated GitHub Security Advisory from the vendor plus VulnCheck are confirmed, which is the strongest positive signal that the technical root cause is real and fixed. Net: real risk for anyone running multi-tenant Froxlor (the customer→admin→root escalation chain is severe), but the requirement for both a foothold account and admin interaction keeps real-world likelihood moderate rather than critical. |
| Exploit ScenarioDerived | A low-privileged Froxlor customer uploads a crafted SSL certificate for one of their own domains whose issuer organization field (issuer['O']) contains an HTML/JavaScript payload; openssl_x509_parse() extracts it and the API stores it verbatim. When an administrator or reseller later opens Domains > SSL certificates, the Twig |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 26, 2026
Stored cross-site scripting in Froxlor 2.0.0 through 2.3.10 lets an authenticated customer - the lowest-privileged account role - inject JavaScript through the issuer organization field of an SSL certificate they upload for their own domain, which is parsed by openssl_x509_parse() and stored verbatim without sanitization. The payload executes only when a reseller or administrator opens Domains > SSL certificates, because the table-listing renderer passes scalar cells through Twig's raw filter and disables HTML auto-escaping, so the script runs in the privileged user's session and can result in full administrator account takeover. Because a Froxlor admin controls webserver, DNS and PHP configuration applied by a root cron job, that takeover can be escalated to command execution as root on the managed server. No public exploit identified at time of analysis; exploitation requires a valid tenant account plus privileged-user page interaction (UI:P), which makes this a genuine priority within its deployment niche rather than a mass-exploitation emergency.
RemediationAI
Vendor-released patch: upgrade to Froxlor 2.3.12, which fixes the issue per the GitHub security advisory GHSA-89vj-gqqr-73p8 and the VulnCheck advisory. If an immediate upgrade is not feasible, the most effective compensating control is to remove or suspend the customer role's ability to upload SSL certificates (for example by requiring administrator-mediated certificate import or by revoking the certificate-related permissions of untrusted tenant accounts), with the trade-off that self-service TLS provisioning stops working. As a secondary measure, sanitize or entity-encode any issuer['O'] values already stored in the certificates table and audit other raw-filtered list columns for the same escaping gap, recognizing that manual database edits are temporary and may be overwritten. Reducing the number of administrator and reseller accounts that browse Domains > SSL certificates lowers the chance of triggering the payload but does not remove it. After patching, review certificate records and administrator/reseller session activity for injected script, and treat any suspected admin compromise as a potential root compromise on the managed server, since the standard Froxlor configuration-apply cron runs as root.
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
Froxlor is a PHP-based web hosting control panel that manages webserver, DNS, mail and PHP configuration on behalf of resellers, customers and administrators. The vulnerable flow involves customer-uploaded TLS certificates: openssl_x509_parse() decodes the certificate and exposes its X.509 Distinguished Name fields, including issuer['O'] (the issuer organization). A customer can generate a self-signed certificate with an arbitrary O value, and Froxlor's Certificates API add()/update() methods persist that string without sanitization. The flaw is CWE-79 (improper neutralization of input during web page generation): Froxlor's table-listing renderer emits scalar cells through Twig's raw filter, which disables the template engine's automatic HTML escaping, so the stored string is interpreted as markup and script when Domains > SSL certificates is rendered. This crosses a privilege boundary from the customer role to reseller/administrator sessions, which is why the scope is changed and confidentiality and integrity impacts are high while availability is not affected. The CVSS 4.0 score of 9.3 reflects that scope change plus high C/I impact; the independent assessment maps the same behavior to CVSS 3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N. The CPE cpe:2.3:a:froxlor:froxlor:*:*:*:*:*:*:*:* covers the affected Froxlor releases.
Know when Froxlor 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Authenticated customer injects (PR:L), payload fires only when a privileged admin views the page (UI:R), and it crosses from customer to admin authority (S:C) yielding high confidentiality and integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Froxlor 2.0.0 through 2.3.10 is vulnerable to stored cross-site scripting. When a customer (the lowest-privileged authenticated role) uploads an SSL certificate for one of their own domains, the Certificates API add()/update() methods parse it with openssl_x509_parse() and store the issuer organization (issuer['O']) value verbatim without sanitization. Froxlor's table-listing renderer then emits scalar cells through Twig's raw filter, disabling HTML auto-escaping, so when an administrator or reseller opens Domains > SSL certificates the attacker-supplied issuer value executes as script in the privileged user's session. This crosses a privilege boundary from customer to admin and can result in full administrator account takeover; because a Froxlor admin controls webserver, DNS, and PHP configuration applied by a cron job running as root, the issue can be further escalated to command execution as root on the managed server. The issue is fixed in Froxlor 2.3.12.
Technical POC Analysis
CWE-79 stored cross-site scripting.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical stored cross-site scripting flaw in Froxlor, the control panel that hosting providers use to manage web, DNS and PHP services on their servers, allows an attacker holding a low-privilege hosting account to plant malicious code that later executes in a reseller's or administrator's browser when they open the SSL certificate listing. Successful exploitation can yield full control of the Froxlor administrative account and, because that account drives root-level configuration on the managed server, escalate to complete server compromise. Since one Froxlor instance typically serves many hosted customers, leadership should treat this as a multi-tenant infrastructure risk rather than an isolated application defect.
Apply vendor patch.
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.
Command Injection in GitHub repository froxlor/froxlor prior to 2.0.8. Rated high severity (CVSS 8.8), this vulnerabilit
Improper Restriction of Excessive Authentication Attempts in GitHub repository froxlor/froxlor prior to 2.0.20. Rated cr
Authentication Bypass by Primary Weakness in GitHub repository froxlor/froxlor prior to 2.0.13. Rated critical severity
Froxlor through 0.10.29.1 allows SQL injection in Database/Manager/DbManagerMySQL.php via a custom DB name. Rated critic
Command injection in Froxlor server admin before 2.3.4 due to typo (== instead of =) disabling input validation entirely
Improper Link Resolution Before File Access in GitHub repository froxlor/froxlor prior to 2.1.0. Rated high severity (CV
Unrestricted Upload of File with Dangerous Type in GitHub repository froxlor/froxlor prior to 2.0.14. Rated high severit
Cross-Site Request Forgery (CSRF) in GitHub repository froxlor/froxlor prior to 2.0.11. Rated high severity (CVSS 8.8),
Code Injection in GitHub repository froxlor/froxlor prior to 2.0.11. Rated high severity (CVSS 8.8), this vulnerability
Code Injection in GitHub repository froxlor/froxlor prior to 2.0.10. Rated high severity (CVSS 8.8), this vulnerability
An issue was discovered in Froxlor before 0.10.14. Rated high severity (CVSS 8.8), this vulnerability is remotely exploi
Froxlor is open source server administration software. Rated high severity (CVSS 7.5), this vulnerability is remotely ex
EUVD-2026-87693
GHSA-mmqp-fgp4-5q7j
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB