Skip to main content

Froxlor CVE-2026-121434

| EUVDEUVD-2026-115856 MEDIUM
Missing Authorization (CWE-862)
2026-11-03 VulnCheck GHSA-hxjh-8h5v-fp7m
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with own customer API key
  2. Exploit
    Target own letsencrypt=1 domain
  3. Execution
    Call Certificates.update with attacker cert/key
  4. Impact
    REBUILD_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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Froxlor 2.3.0 <2.3.15

Affected Packages

euvd froxlor fix: 2.3.15

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

Vendor (VulnCheck) PRIMARY 5.3 MEDIUM
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
vuln.today AI 5.4 MEDIUM

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Nov 03, 2026 - 16:17 EUVD

DescriptionCVE.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

Prevalence
Low
niche open-source hosting control panel, limited enterprise footprint
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2023-0315 HIGH POC
8.8 Jan 16

Command Injection in GitHub repository froxlor/froxlor prior to 2.0.8. Rated high severity (CVSS 8.8), this vulnerabilit

CVE-2023-3173 CRITICAL POC
9.8 Jun 09

Improper Restriction of Excessive Authentication Attempts in GitHub repository froxlor/froxlor prior to 2.0.20. Rated cr

CVE-2023-1307 CRITICAL POC
9.8 Mar 10

Authentication Bypass by Primary Weakness in GitHub repository froxlor/froxlor prior to 2.0.13. Rated critical severity

CVE-2021-42325 CRITICAL POC
9.8 Oct 12

Froxlor through 0.10.29.1 allows SQL injection in Database/Manager/DbManagerMySQL.php via a custom DB name. Rated critic

CVE-2026-26279 CRITICAL POC
9.1 Mar 03

Command injection in Froxlor server admin before 2.3.4 due to typo (== instead of =) disabling input validation entirely

CVE-2023-6069 HIGH POC
8.8 Nov 10

Improper Link Resolution Before File Access in GitHub repository froxlor/froxlor prior to 2.1.0. Rated high severity (CV

CVE-2023-2034 HIGH POC
8.8 Apr 14

Unrestricted Upload of File with Dangerous Type in GitHub repository froxlor/froxlor prior to 2.0.14. Rated high severit

CVE-2023-1033 HIGH POC
8.8 Feb 25

Cross-Site Request Forgery (CSRF) in GitHub repository froxlor/froxlor prior to 2.0.11. Rated high severity (CVSS 8.8),

CVE-2023-0877 HIGH POC
8.8 Feb 17

Code Injection in GitHub repository froxlor/froxlor prior to 2.0.11. Rated high severity (CVSS 8.8), this vulnerability

CVE-2023-0671 HIGH POC
8.8 Feb 04

Code Injection in GitHub repository froxlor/froxlor prior to 2.0.10. Rated high severity (CVSS 8.8), this vulnerability

CVE-2020-10235 HIGH POC
8.8 Mar 09

An issue was discovered in Froxlor before 0.10.14. Rated high severity (CVSS 8.8), this vulnerability is remotely exploi

CVE-2023-50256 HIGH POC
7.5 Jan 03

Froxlor is open source server administration software. Rated high severity (CVSS 7.5), this vulnerability is remotely ex

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy