CVE-2026-41228
Froxlor ≤ 2.3.6
Raw vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HSummary
CVE-2026-41228 is a critical-severity PHP Remote File Inclusion (CWE-98) vulnerability in Froxlor Froxlor. Its CVSS base score is 9.9 (Critical).
Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 42th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.
The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.
Deeper analysis AI-assisted summary
Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.
CVE-2026-41228 is a high-severity vulnerability (CVSS 9.9) in Froxlor, an open-source server administration software. Prior to version 2.3.6, the API endpoints `Customers.update` and `Admins.update` fail to validate the `def_language` parameter against available language files, enabling path traversal. A malicious input like `../../../../../var/customers/webs/customer1/evil` is stored in the database without sanitization. Subsequent requests trigger `Language::loadLanguage()` to construct a file path from this value and execute it via `require`, resulting in arbitrary PHP code execution as the web server user. The issue is classified under CWE-98 (Improper Control of Filename for Include/Require Statement in PHP Program).
An authenticated customer with low privileges (PR:L) can exploit this remotely (AV:N) with low complexity (AC:L) and no user interaction (UI:N), achieving scope change (S:C) for high confidentiality, integrity, and availability impact (C:I:A:H). By updating their `def_language` via the API, the attacker stores a traversal payload pointing to a malicious PHP file they control. When the language file is loaded on future requests—potentially by any user, including admins—the web server executes the attacker's code, allowing full server compromise under the web server's context.
Froxlor version 2.3.6 addresses the vulnerability by validating the `def_language` parameter against available language files. Security practitioners should upgrade immediately, as detailed in the GitHub security advisory (GHSA-w59f-67xm-rxx7), release notes for 2.3.6, and the fixing commit (bc5e6dbaa90e6f3573129da640595e8c770e1d0c). No workarounds are specified in the provided references.
OWASP Top 10 for Web (2025)
EU & UK References
- 🇪🇺 ENISA EUVD: EUVD-2026-25176
Vulnerability Data
Froxlor is open source server administration software. Prior to version 2.3.6, the Froxlor API endpoint `Customers.update` (and `Admins.update`) does not validate the `def_language` parameter against the list of available language files. An authenticated customer can set `def_language` to a path…
more
traversal payload (e.g., `../../../../../var/customers/webs/customer1/evil`), which is stored in the database. On subsequent requests, `Language::loadLanguage()` constructs a file path using this value and executes it via `require`, achieving arbitrary PHP code execution as the web server user. Version 2.3.6 fixes the issue.
- CWE(s)
Related Threats
MITRE ATT&CK Enterprise Techniques
CVEs Like This One
Affected Assets
Mitigating Controls
Mitigating Controls (NIST 800-53 r5) AI
Developer testing and static analysis can discover missing filename restrictions before deployment.
Validating all inputs before they reach include/require statements directly stops untrusted filenames from being used.
Enforcing access authorizations on resources limits what an included file can reach even if a bad name is supplied.
Information-flow rules can block the loading of external or unauthorized files into the PHP process.
Mitigating Controls (NIST CSF 2.0) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.
Secure SDLC practices such as input validation and allow-listing of include paths directly prevent the weakness.
Hardened runtime configuration (e.g., allow_url_include=off) directly blocks RFI even if code is flawed.
Execution restrictions can prevent the remote payload from running, while eliminating the weakness reduces the need for such controls.
Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI
Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.
Security testing can detect RFI but does not prevent the weakness by itself.
Secure development lifecycle mandates input validation and safe include/require patterns that directly prevent remote file inclusion.
Application security requirements explicitly call for controls against injection and unsafe file operations.
Secure architecture principles reduce attack surface but do not specifically address dynamic file inclusion.
Secure coding standards directly require whitelisting and sanitization of filenames used in include/require statements.
Information access restriction limits what files can be read but does not address dynamic inclusion logic.