{"id":"CVE-2026-100714","aliases":["GHSA-3w4g-cmpj-rj42"],"url":"https://o3.security/vulnerability/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 ; | & > < \\ $ ~ ?, 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-26T13:24:06.446Z","modified":"2026-09-27T11:30:13.599361012Z","cvss":null,"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[],"fix":null,"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"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-09-27T11:30:13.599361012Z"}}