highCVSS 7.5Vulnerability

GHSA-75h4-c557-j89r

## Summary `DataDump.add()` constructs the export destination path from user-supplied input without passing the `$fixed_homedir` parameter to `FileDir::makeCorrectDir()`, bypassing the symlink validation that was added to all other customer-facing path operations (likely as the fix for CVE-2023-6069). When the ExportCron runs as root, it executes `chown -R` on the resolved symlink target, allowing a customer to take ownership of arbitrary directories on the system. ## Details The vulnerability is an incomplete patch. After CVE-2023-6069, symlink validation was added to `FileDir::makeCorrectDir()` via a `$fixed_homedir` parameter. When provided, it walks each path component checking for symlinks that escape the customer's home directory (lines 134-157 of `lib/Froxlor/FileDir.php`). Every customer-facing API command that builds a path from user input passes this parameter: ```php // DirProtections.php:87 $path = FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path, $customer['documentroot']); // DirOptions.php:96 $path = FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path, $customer['documentroot']); // Ftps.php:178 $path = FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path, $customer['documentroot']); // SubDomains.php:585 return FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path, $customer['documentroot']); ``` But `DataDump.add()` was missed: ```php // DataDump.php:88 — NO $fixed_homedir parameter $path = FileDir::makeCorrectDir($customer['documentroot'] . '/' . $path); ``` The path flows unvalidated into a cron task (`lib/Froxlor/Api/Commands/DataDump.php:133`): ```php Cronjob::inserttask(TaskId::CREATE_CUSTOMER_DATADUMP, $task_data); ``` When `ExportCron::handle()` runs as root, it executes at `lib/Froxlor/Cron/System/ExportCron.php:232`: ```php FileDir::safe_exec('chown -R ' . (int)$data['uid'] . ':' . (int)$data['gid'] . ' ' . escapeshellarg($data['destdir'])); ``` The `chown -R` command follows sy

Properties

ghsa_id
GHSA-75h4-c557-j89r
summary
Froxlor has Incomplete Symlink Validation in DataDump.add() Allows Arbitrary Directory Ownership Takeover via Cron
severity
high
cvss_score
7.5
cve_id
GHSA-75h4-c557-j89r
cvss_vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
is_ghsa_only
true
ghsa_published
2026-04-16T00:47:18Z
source_url
https://github.com/advisories/GHSA-75h4-c557-j89r
ghsa_updated
2026-04-16T00:47:18Z

Related Entities (4)

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]composer/froxlor/froxlor

AFFECTS (1)

[Software]composer/froxlor/froxlor

HAS_WEAKNESS (1)

[Weakness]Improper Link Resolution Before File Access ('Link Following')

Explore deeper with Ninja Signal's threat intelligence graph

GHSA-75h4-c557-j89r (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal