{"id":"CVE-2026-100714","revision":"0dc556cab3f241248d0ecceb57bccc55","records":[{"revision":"0dc556cab3f241248d0ecceb57bccc55","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-100714","aliases":[],"title":"Froxlor before 2.3.12 Command Injection via letsencryptchallengepath","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.","state":0,"publishedAt":"2026-09-26T13:24:06.446+00:00","modifiedAt":"2026-09-26T23:07:30.927+00:00","affected":[{"ecosystem":"Vendor product","name":"froxlor","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"froxlor\",\n                    \"product\": \"froxlor\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"versions\": [\n                        {\n                            \"version\": \"0\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"semver\",\n                            \"lessThan\": \"2.3.12\"\n                        },\n                        {\n                            \"version\": \"2.3.12\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","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","score":9.4,"severity":"CRITICAL"},{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H","score":9.1,"severity":"CRITICAL"}],"references":["https://github.com/froxlor/froxlor/security/advisories/GHSA-3w4g-cmpj-rj42","https://www.vulncheck.com/advisories/froxlor-before-2.3.12-command-injection-via-letsencryptchallengepath"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-100714","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-100714","identifiers":["CVE-2026-100714"]},"retained":false,"historicalAffected":[]}],"coverage":[]}