{"id":"CVE-2026-100714","summary":"Froxlor before 2.3.12 Command Injection via letsencryptchallengepath","details":"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 ; | & \u003e \u003c \\ $ ~ ?, 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.","aliases":["GHSA-3w4g-cmpj-rj42"],"modified":"2026-09-28T03:48:30.887793274Z","published":"2026-09-26T13:24:06.446Z","database_specific":{"cna_assigner":"VulnCheck","cwe_ids":["CWE-88"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/100xxx/CVE-2026-100714.json"},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/100xxx/CVE-2026-100714.json"},{"type":"ADVISORY","url":"https://github.com/froxlor/froxlor/security/advisories/GHSA-3w4g-cmpj-rj42"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-100714"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/froxlor-before-2.3.12-command-injection-via-letsencryptchallengepath"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/froxlor/froxlor","events":[{"introduced":"0"},{"fixed":"143b6ee634a4b9c237437b4b1206c7b733b86d95"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"2.3.12"}],"source":["AFFECTED_FIELD","DESCRIPTION"]}}],"versions":["2.3.11","2.3.10","2.3.9","2.3.8","2.3.7","2.3.6","2.3.5","2.3.4","2.3.3","2.3.2","2.3.1","2.3.0","2.3.0-rc1","2.2.0-rc1","2.1.4","2.1.3","2.1.2","2.1.1","2.1.0","2.1.0-rc3","2.1.0-rc2","2.1.0-rc1","2.1.0-beta2","2.1.0-beta1","2.0.24","2.0.23","2.0.22","2.0.21","2.0.20","2.0.19","2.0.18","2.0.17","2.0.16","2.0.15","2.0.14","2.0.13","2.0.12","2.0.11","2.0.10","2.0.9","2.0.8","2.0.7","2.0.6","2.0.5","2.0.4","2.0.3","2.0.2","2.0.1","0.10.33","0.10.32","0.10.31","0.10.30","0.10.29.1","0.10.29","0.10.28","0.10.27","0.10.26","0.10.25","0.10.24","0.10.23.1","0.10.23","0.10.22","0.10.21","0.10.20","0.10.19","0.10.18","0.10.17","0.10.16","0.10.15","0.10.14","0.10.13","0.10.12","0.10.11","0.10.10","0.10.9","0.10.8","0.10.7","0.10.6","0.10.5","0.10.4","0.10.3","0.10.2","0.10.1","0.10.0","0.10.0-rc2","0.10.0-rc1","0.9.39.5","0.9.39.4","0.9.39.3","0.9.39.2","0.9.39.1","0.9.39","0.9.38.8","0.9.38.7","0.9.38.6","0.9.38.5","0.9.38.4","0.9.38.3","0.9.38.2","0.9.38.1","0.9.38","0.9.38-rc2","0.9.38-rc1","0.9.37","0.9.37-rc1","0.9.36","0.9.35.1","0.9.35","0.9.35-rc1","0.9.34.2","0.9.34.1","0.9.33-rc3","0.9.33-rc2","0.9.33-rc1","0.9.32","0.9.32-rc2","0.9.32-rc1","0.9.31-rc1","0.9.30","0.9.30-rc1","0.9.29","0.9.29-rc1","0.9.28.1","0.9.28","0.9.28-rc1","0.9.27","0.9.27-rc1","0.9.26","0.9.26-rc1","0.9.25","0.9.25-rc1","0.9.24","0.9.24-rc1","0.9.23","0.9.23-rc1","0.9.22","0.9.22-rc1","0.9.21","0.9.20.1","0.9.20","0.9.19","0.9.18.1","0.9.18"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-100714.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"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"}]}