Skip to main content

Froxlor CVE-2026-100714

| EUVDEUVD-2026-87687 CRITICAL
Improper Neutralization of Argument Delimiters in a Command ('Argument Injection') (CWE-88)
2026-09-26 VulnCheck GHSA-fh3h-q9pj-x5qp
9.4
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as admin or reach settings-import API
  2. Delivery
    Inject acme.sh options into letsencryptchallengepath
  3. Exploit
    Value word-split past safe_exec blacklist
  4. Execution
    Root Let's Encrypt cron runs --pre/post/renew-hook
  5. Impact
    Arbitrary command execution as root

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Argument sanitization
Exploitation Conditions

Requires the ability to write the system.letsencryptchallengepath setting - i.e. an authenticated Froxlor administrator, or any actor able to reach the settings-import API - AND the Let's Encrypt / acme.sh cron path must be active (letsencrypt configured) so the root cron executes the poisoned command line. Unlike sibling settings hardened in GHSA-33mp, this field has no string_regexp or required_otp guard. Exploitation is limited by: the PR:H authentication requirement (panel admin / settings-write), the delay until the next Let's Encrypt cron run, and the need for acme.sh-based certificate issuance to be in use. The safe_exec metacharacter blacklist (; | & > < \ $ ~ ?) does NOT block spaces or quotes, which is what makes argument injection possible.

Impact

The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H with subsequent-system SC:H/SI:H/SA:H, 9.4) is well-justified for the technical impact: successful exploitation yields arbitrary command execution as root at the next Let's Encrypt cron run. The PR:H metric is the key limiter - the primary actor is an authenticated Froxlor administrator, or any principal able to write settings (e.g. via the settings-import API), so this is not a remote-unauthenticated flaw despite AV:N. The most significant real-world signal is the privilege-boundary crossing: a panel administrator (who is NOT necessarily a root shell operator) escalates to full root code execution on the host, which justifies treating the subsequent-system impacts (and a scope change in 3.1 terms) as High. Exploitation status: no public exploit identified at time of analysis - there is no EPSS score, no CISA KEV listing, and no POC referenced; the only sources are the vendor GHSA advisory and VulnCheck. This is therefore a genuinely high-technical-impact issue (root RCE) but its real-world urgency is tempered by the administrative/settings-write precondition and the absence of any exploitation evidence. It is a real priority for Froxlor operators to patch, but not an actively-exploited emergency.

Exploit ScenarioDerived

An authenticated Froxlor administrator (or an actor who can reach the settings-import API) sets system.letsencryptchallengepath to a value containing space-separated acme.sh options such as '--pre-hook "id>/tmp/x"' or '--post-hook'. Because safe_exec only blacklists metacharacters like ; | & $ and not spaces or quotes, the value is word-split into extra acme.sh arguments and executed by the root cron at the next Let's Encrypt run, giving arbitrary command execution as root; --config-home/--cert-home can alternatively be injected for arbitrary root file writes. No public exploit code is currently identified.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 26, 2026

Argument injection in the Froxlor hosting control panel (versions before 2.3.12) allows an authenticated administrator - or any actor able to write settings, such as through the settings-import API - to inject arbitrary acme.sh command-line options via the unescaped system.letsencryptchallengepath setting, resulting in arbitrary command execution as root the next time the Let's Encrypt cron job runs. The vendor CVSS 4.0 score of 9.4 (and the independently assessed CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H) reflects complete compromise of the host, but exploitation is gated behind a high-privilege settings-write primitive (PR:H) and requires that acme.sh-based Let's Encrypt certificate issuance be configured so the root cron actually executes the poisoned command line. No public exploit code was identified at time of analysis and the issue is not reported as confirmed actively exploited (CISA KEV); the vendor-released fix is Froxlor 2.3.12.

RemediationAI

Upgrade Froxlor to 2.3.12 or later, which is the exact vendor-released patch version and resolves CVE-2026-100714 by properly restricting and escaping system.letsencryptchallengepath; the vendor advisory is available at https://github.com/froxlor/froxlor/security/advisories/GHSA-3w4g-cmpj-rj42. If immediate upgrade is not possible, apply compensating controls in order of effectiveness: (1) remove or tightly restrict write access to the settings subsystem, including locking down the settings-import API endpoint so that only fully trusted operators can reach it, since that path is the alternate injection vector - this does not remove the flaw but shrinks the attacker population; (2) if Let's Encrypt / acme.sh issuance is not in active use, disable the Let's Encrypt cron entry in the Froxlor root cron so the poisoned command line is never executed, at the cost of losing automated certificate renewal; (3) temporarily set system.letsencryptchallengepath to a fixed, known-safe path value and re-verify it before each maintenance window, keeping in mind that any actor who retains settings-write can simply alter it again; (4) audit existing installations for unexpected values in that setting and for suspicious roots of trust such as injected --pre-hook/--renew-hook/--post-hook arguments or altered acme.sh home and certificate directories, and review root cron logs for acme.sh invocations carrying unfamiliar flags or writes to the 2.3.12-fixed code path. Note that a patched release is available, so blacklisting shell metacharacters through WAF rules is not a reliable substitute for upgrading, because spaces and quotes are the exact characters the flaw relies on and are legitimate in many request payloads.

Affected VersionsENISA

Froxlor 0 <2.3.12

Affected Packages

euvd froxlor fix: 2.3.12

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 OS command argument injection (CWE-88) in Froxlor's Let's Encrypt integration, implemented in lib/Froxlor/Cron/Http/LetsEncrypt/AcmeSh.php. The system.letsencryptchallengepath setting is concatenated unescaped into the acme.sh command line that is later executed by the root-owned Froxlor cron through FileDir::safe_exec. Unlike sibling settings that were hardened in the earlier GHSA-33mp advisory, this field carries neither a string_regexp validation constraint nor a required_otp guard, so its raw value reaches the shell wrapper. safe_exec only applies a blacklist of shell metacharacters (; | & > < \ $ ~ ?) rather than proper argument escaping; because spaces and quotes are not filtered, the setting value is word-split by the shell into additional arguments to acme.sh. The injection therefore rides legitimate acme.sh options: --renew-hook, --pre-hook and --post-hook execute attacker-supplied commands when acme.sh runs, while --config-home and --cert-home permit arbitrary file writes with root privileges. The affected product is Froxlor as captured by CPE cpe:2.3:a:froxlor:froxlor:*:*:*:*:*:*:*:*, a PHP application, and the vendor advisory is GHSA-3w4g-cmpj-rj42 (mirrored by VulnCheck under CVE-2026-100714).

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 9.4 CRITICAL
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
vuln.today AI 9.1 CRITICAL

PR:H because a settings-write/admin actor is required; S:C because a panel admin escalates to root code execution beyond the application's authority; C/I/A:H from full root RCE.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

2
Patch available
Sep 26, 2026 - 14:02 EUVD
CVE Published
Sep 26, 2026 - 13:24 cve.org
CRITICAL 9.4

DescriptionCVE.org

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.

Technical POC Analysis

CWE-88: Improper Neutralization of Argument Delimiters in a Command.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A command-execution flaw in the Froxlor hosting control panel (versions before 2.3.12) lets an authenticated administrator - or anyone who can write panel settings via the settings-import API - run arbitrary commands as root on the hosting server the next time the Let's Encrypt certificate cron job fires. Because Froxlor typically manages shared hosting infrastructure, a successful exploitation would put every customer website, mailbox, and credential hosted on the affected server at risk. Leadership should care because this is a full root compromise of a centralised control plane, and the fix is already available for a straightforward upgrade.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 56% exploitable
Prevalence
Low
Open-source web-hosting control panel, niche self-hosted footprint
Social Media
2
Sightings
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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 CRITICAL
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

48
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +47
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

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