Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with own customer API key
-
ExploitTarget own letsencrypt=1 domain
-
ExecutionCall Certificates.update with attacker cert/key
-
ImpactREBUILD_VHOST deploys pair, HTTPS degraded
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation 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 with API access enabled (panel_customers.api_allowed=1; default api.customer_default=1) and a valid API key/secret for that customer. The targeted domain must belong to the attacker and be flagged letsencrypt=1 with a server-managed certificate. No user interaction or admin privileges are needed, but exploitation is limited to the attacker's own domains - it cannot touch other tenants' certificates - and only lowers that domain into an attacker-favored HTTPS state (self-signed/expired/weak cert) plus ACME desync; the original LE private key remains non-readable. Fully fixed only by updating to 2.3.15, which applies the letsencrypt gate to Certificates.add and Certificates.update. |
| Impact | This is a genuine but bounded integrity/availability issue, not a critical emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the CWE-862 classification agree with the evidence: a network-reachable API, low attack complexity, no user interaction, but low privileges required (PR:L) because the actor must be an authenticated Froxlor customer holding a valid API key, acting only on a domain they already own. Impact is correctly scored VC:N/VI:L/VA:L - the original Let's Encrypt private key stays unreadable (the 2.3.13 read-path fix is confirmed intact at runtime), so there is no confidentiality loss; the damage is overwriting the managed cert/key with an attacker-chosen pair that REBUILD_VHOST deploys, degrading HTTPS and desynchronizing ACME automation for that one domain. The vuln.today Decision label is 'this_month' (not act_now/emergency), consistent with the medium 5.3 score. No CISA KEV entry and no EPSS score are present in the input, so widespread-exploitation probability cannot be quantified here - their absence is not evidence of low risk, but there is no signal of active exploitation either. A full working PoC with captured runtime output is published in the vendor GHSA advisory, which raises practical exploitability above a purely theoretical finding. Net: a legitimate same-month patch priority driven by a confirmed authorization gap and a public PoC, tempered by the self-scoped blast radius (an attacker can only degrade HTTPS on their own domains, not others'). |
| Exploit ScenarioDerived | A hosting customer with API access enabled (default api.customer_default=1) calls Certificates.update (or Certificates.add) against their own domain that is flagged letsencrypt=1, supplying an attacker-chosen certificate and private key. Because neither API command performs the letsencrypt check that the UI editor and read paths enforce, the server-managed pair is overwritten and a REBUILD_VHOST task deploys the self-signed/expired/weak certificate into the webserver, breaking HTTPS for that domain's visitors. A working PoC script with deterministic captured output is included in the GHSA advisory and was reproduced at runtime on 2.3.14, confirming HTTP 200 and the stored issuer changing from LE-Sim to Attacker. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Froxlor 2.3.0 through 2.3.14 lets an authenticated customer who holds a valid API key overwrite the Let's Encrypt-managed certificate and private key of a domain they own, because the Certificates.add and Certificates.update API commands never check the letsencrypt flag that the UI and read paths enforce. The attacker-supplied key pair is stored in domain_ssl_settings and pushed into the webserver configuration by a REBUILD_VHOST task, degrading or breaking HTTPS for that domain's visitors until the next ACME renewal and desynchronizing the panel from acme.sh; the original LE private key stays unreadable, so the exposure is an integrity/availability gap on the write path. Exploitation is bounded to the attacker's own domains and requires API access to be enabled for the customer account; a proof-of-concept with reproduction steps is documented in the published advisory, and no CISA KEV entry or EPSS score accompanies this CVE.
RemediationAI
Vendor-released patch: upgrade to Froxlor 2.3.15, which applies the same letsencrypt gate used by ssl_editor.php and the read paths to Certificates.add and Certificates.update, rejecting or ignoring ssl_cert_file/ssl_key_file for domains with letsencrypt=1 and keeping the server-managed pair (advisory: https://github.com/froxlor/froxlor/security/advisories/GHSA-ch7m-649m-x7xg). A regression test issuing Certificates.update against an LE-managed domain and expecting a rejection would pin the boundary. Where 2.3.15 cannot be deployed immediately, the exposure is gated entirely by customer API access, so disabling it is the direct compensating control: set api.customer_default=0 and clear api_allowed on customer accounts that do not need the API (unattended installs already ship with the API disabled), or revoke/reissue API keys for customers who do - the trade-off is that any legitimate scripted provisioning or certificate management using those keys stops working until the upgrade. Note that patching is the only complete fix; reverting or re-issuing certificates on affected domains after upgrading restores the deployed state and re-synchronizes ACME automation.
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
The root cause is CWE-862 (Missing Authorization): Froxlor's Let's Encrypt integration treats the server-managed certificate and private key as non-editable and non-viewable for tenants, and the 2.3.13 fix for GHSA-6q2v-jjq5-m2c8 (commit ee23382b) enforced that boundary only on the read surfaces - Certificates.get and Certificates.listing unset ssl_key_file for domains with letsencrypt '1', the ssl_editor.php UI page blocks editing, and the canEditSSL() callbacks in the Domain and SSLCertificate UI classes are gated on letsencrypt 0. In lib/Froxlor/Api/Commands/Certificates.php the write handlers add() (lines 63-107) and update() (lines 230-256) only check panel.customer_hide_options and domain ownership via SubDomains.get, then call addOrUpdateCertificate() (lines 123-210), which stores the caller-supplied ssl_cert_file and ssl_key_file into TABLE_PANEL_DOMAIN_SSL_SETTINGS (lines 186-206) and inserts a REBUILD_VHOST task (line 208) that deploys the pair into the vhost. Deletion followed by re-add works identically since neither entry point is gated. The 2.3.13 read-path fix is not bypassed; this is the unwritten write-path sibling of GHSA-6q2v-jjq5-m2c8 and is distinct from GHSA-89vj-gqqr-73p8 (certificate issuer stored XSS, fixed in 2.3.12), where the issuer field is whitelist-validated at addOrUpdateCertificate line 176.
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:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
Authenticated customer with an API key means PR:L; API is network-reachable with no interaction (AV:N/AC:L/UI:N); overwriting the cert/key harms integrity and availability (I:L/A:L) but exposes no data (C:N).
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Froxlor 2.3.0 before 2.3.15 contains a missing authorization check in the Certificates.add and Certificates.update API commands, which do not verify whether a domain's certificate is Let's Encrypt-managed. Customers with API access can overwrite the managed certificate and private key with an attacker-chosen pair, which a REBUILD_VHOST task deploys to the webserver, breaking HTTPS and desynchronizing ACME automation.
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
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-115856
GHSA-hxjh-8h5v-fp7m
NVD
CVE.org
Exploit-DB