Description
Froxlor before 2.3.12 does not restrict or escape the system.letsencryptchallengepath setting: unlike sibling settings hardened in GHSA-33mp, the field has no string_regexp or required_otp guard, and its value is concatenated unescaped into the acme.sh command line built in lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php and executed by the root cron via FileDir::safe_exec. Because safe_exec only blacklists shell metacharacters such as ; | & > < \ $ ~ ?, spaces and quotes survive and the value is word-split into additional acme.sh arguments. An administrator, or any actor able to write settings (for example through the settings-import API), can therefore inject acme.sh options such as --renew-hook, --pre-hook or --post-hook to obtain arbitrary command execution as root at the next Let's Encrypt cron run, or use --config-home/--cert-home for arbitrary file writes. Versions up to and including 2.3.10 are affected; the issue is fixed in 2.3.12.
Published: 2026-09-26
Score: 9.4 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Command injection leading to arbitrary root command execution via the LetsEncrypt cron job
Action: Immediate Patch
AI Analysis

Impact

Froxlor versions prior to 2.3.12 allow an attacker who can write configuration settings to inject arbitrary arguments into the acme.sh command that runs under root via the LetsEncrypt cron job. Because the letsencryptchallengepath value is concatenated without escaping, malicious input can include additional acme.sh options such as --renew-hook, --pre-hook, or --post-hook. When the cron job executes, these options trigger arbitrary command execution or file writes as the root user, compromising confidentiality, integrity, and availability of the system.

Affected Systems

Affected vendor is Froxlor, a web hosting management panel. Versions from the release series 2.3.0 up through 2.3.10, inclusive, are vulnerable because they lack validation on the letsencryptchallengepath setting. The vulnerability was corrected in version 2.3.12, which no longer concatenates the setting without sanitization.

Risk and Exploitability

The CVSS score of 9.4 indicates critical severity. While the EPSS score is not available, the feature is exploitable in environments where the attacker can modify settings, such as through the settings-import API. Because the injected options are executed by a root cron job, successful exploitation results in arbitrary root command execution. The vulnerability is not listed in CISA's KEV catalog, but its high CVSS score warrants immediate attention.

Generated by OpenCVE AI on September 26, 2026 at 16:02 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to Froxlor version 2.3.12 or newer to eliminate the vulnerable handling of letsencryptchallengepath.
  • If an upgrade cannot be performed immediately, restrict access to the settings-import API to trusted administrators only or temporarily disable the API to prevent configuration changes.
  • Sanitize the letsencryptchallengepath configuration by ensuring it contains only a safe, predefined directory or by removing the setting entirely from the configuration before the cron job runs.

Generated by OpenCVE AI on September 26, 2026 at 16:02 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 27 Sep 2026 00:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description Froxlor before 2.3.12 does not restrict or escape the system.letsencryptchallengepath setting: unlike sibling settings hardened in GHSA-33mp, the field has no string_regexp or required_otp guard, and its value is concatenated unescaped into the acme.sh command line built in lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php and executed by the root cron via FileDir::safe_exec. Because safe_exec only blacklists shell metacharacters such as ; | & > < \ $ ~ ?, spaces and quotes survive and the value is word-split into additional acme.sh arguments. An administrator, or any actor able to write settings (for example through the settings-import API), can therefore inject acme.sh options such as --renew-hook, --pre-hook or --post-hook to obtain arbitrary command execution as root at the next Let's Encrypt cron run, or use --config-home/--cert-home for arbitrary file writes. Versions up to and including 2.3.10 are affected; the issue is fixed in 2.3.12.
Title Froxlor before 2.3.12 Command Injection via letsencryptchallengepath
First Time appeared Froxlor
Froxlor froxlor
Weaknesses CWE-88
CPEs cpe:2.3:a:froxlor:froxlor:*:*:*:*:*:*:*:*
Vendors & Products Froxlor
Froxlor froxlor
References
Metrics cvssV3_1

{'score': 9.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H'}

cvssV4_0

{'score': 9.4, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T23:07:30.927Z

Reserved: 2026-09-26T02:40:23.373Z

Link: CVE-2026-100714

cve-icon Vulnrichment

Updated: 2026-09-26T23:07:28.028Z

cve-icon NVD

Status : Deferred

Published: 2026-09-26T14:16:57.240

Modified: 2026-09-26T23:16:33.297

Link: CVE-2026-100714

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T16:30:07Z

Weaknesses
  • CWE-88

    Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')