CVE-2025-48479
Executive Summary
CVE-2025-48479 is a path traversal vulnerability in the laravel-translation-manager package used by FreeScout, a self-hosted help desk and shared mailbox application. Prior to version 1.8.180, the package fails to properly validate user input, allowing an authenticated attacker with sufficient access rights to delete arbitrary directories on the server. This can lead to denial of service, data loss, or further system compromise. The vulnerability has been patched in FreeScout version 1.8.180.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability originates from the laravel-translation-manager package, a third-party dependency within the FreeScout ecosystem. The package is not directly managed by FreeScout but is integrated into the application. This highlights the risk of supply chain vulnerabilities where a flaw in a dependency can compromise the entire application. Organizations using FreeScout should ensure that all dependencies are regularly updated and monitored for security advisories.
CVSS Breakdown & Threat Level
The CVSS score is currently listed as 0.0, indicating that a full vector has not been assigned. However, based on the vulnerability description, a reasonable assessment would be:
- Attack Vector (AV): Network (N) – The vulnerability is exploitable over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): High (H) – The attacker needs sufficient access rights (e.g., admin or translation manager role).
- User Interaction (UI): None (N) – No user interaction is required.
- Scope (S): Unchanged (U) – The vulnerability affects only the vulnerable component.
- Confidentiality (C): None (N) – No direct data exposure.
- Integrity (I): High (H) – Arbitrary directory deletion can corrupt data.
- Availability (A): High (H) – Deletion of critical directories can cause denial of service.
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H
Estimated Base Score: 6.5 (Medium)
Threat Level: Medium. The vulnerability requires high privileges but can cause significant damage.
Deep Dive & Mechanics
The vulnerability resides in the laravel-translation-manager package, which is used to manage language translations within FreeScout. The package likely provides an interface to delete translation files or directories. Due to insufficient input validation, an attacker can manipulate the path parameter to traverse outside the intended translation directory and delete arbitrary directories on the filesystem.
Root Cause: The application does not sanitize or validate the user-supplied path before passing it to filesystem operations like rmdir() or unlink(). This allows path traversal sequences (e.g., ../) to escape the intended directory.
Attack Flow:
- An attacker with high privileges (e.g., admin or translation manager) logs into FreeScout.
- The attacker accesses the translation management interface.
- The attacker crafts a malicious request to delete a directory, using path traversal to target a sensitive location (e.g.,
/var/www/html/storageor/etc). - The server executes the deletion, causing data loss or service disruption.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// In laravel-translation-manager
public function deleteDirectory($path)
{
// No validation of $path
File::deleteDirectory($path);
}
Patched Code (Conceptual):
// In laravel-translation-manager (patched)
public function deleteDirectory($path)
{
// Validate that the path is within the allowed translation directory
$allowedPath = base_path('resources/lang');
$realPath = realpath($path);
$allowedRealPath = realpath($allowedPath);
if (strpos($realPath, $allowedRealPath) !== 0) {
throw new \Exception('Invalid path');
}
File::deleteDirectory($path);
}
The patched version ensures that the resolved path starts with the allowed base directory, preventing path traversal.
Exploitation & Lab Setup
Red Team
Prerequisites:
- Access to a FreeScout instance (version < 1.8.180) with admin or translation manager credentials.
- Knowledge of the target filesystem structure.
Exploitation Steps:
- Log in to FreeScout as an admin.
- Navigate to the translation management section (e.g.,
/translations). - Intercept the delete request using a proxy like Burp Suite.
- Modify the
pathparameter to traverse to a target directory. For example:- Original:
path=resources/lang/en - Modified:
path=../../storage/logs
- Original:
- Send the request. The server will delete the
storage/logsdirectory.
Example Request (cURL):
curl -X POST 'https://target.freescout.com/translations/delete' \
-H 'Cookie: session=...' \
-d 'path=../../storage/logs'
Impact: Deletion of critical directories can cause application errors, data loss, or complete denial of service.
Blue Team
Detection:
- Monitor for unusual directory deletion requests in web server logs.
- Look for path traversal patterns (e.g.,
../) in POST parameters. - Alert on high-privilege users performing bulk deletions.
Prevention:
- Apply the patch by upgrading to FreeScout version 1.8.180 or later.
- Implement strict input validation and path sanitization.
- Use a Web Application Firewall (WAF) to block path traversal attempts.
- Restrict high-privilege accounts to only necessary actions.
Indicators of Compromise (IOCs)
- File System Changes: Unexpected deletion of directories outside the translation path (e.g.,
/var/www/html/storage,/tmp). - Web Server Logs: POST requests to
/translations/deleteor similar endpoints withpathparameters containing../. - Application Logs: Errors related to missing directories or files after deletion.
- Network Traffic: Unusual requests from admin accounts to translation management endpoints.
Detection Engineering
YARA Rule
rule CVE_2025_48479_Path_Traversal {
meta:
description = "Detects path traversal attempts targeting FreeScout translation manager"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-48479"
strings:
$path_traversal = /path=([^&]*\.\.\/[^&]*)/
$delete_endpoint = /\/translations\/delete/
condition:
$delete_endpoint and $path_traversal
}
Sigma Rule
title: FreeScout Translation Manager Path Traversal
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects path traversal attempts in FreeScout translation manager
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: '/translations/delete'
cs-uri-query|re: 'path=.*\.\.\/'
condition: selection
falsepositives:
- Legitimate use of path traversal in other contexts (unlikely)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-48479 FreeScout Translation Manager Path Traversal";
flow:to_server,established;
content:"POST"; http_method;
content:"/translations/delete"; http_uri;
pcre:"/path=[^&]*\.\.\//Pi";
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Upgrade FreeScout to version 1.8.180 or later, which includes the patch for the
laravel-translation-managerpackage. - Restrict Access: Limit the number of users with admin or translation manager privileges.
- Monitor Logs: Review web server and application logs for signs of exploitation.
Long-Term Measures:
- Implement a Web Application Firewall (WAF) with rules to block path traversal.
- Conduct regular security audits of third-party dependencies.
- Enforce the principle of least privilege for all user roles.
- Use file integrity monitoring (FIM) to detect unauthorized deletions.
Patch Verification:
- After upgrading, verify that the
laravel-translation-managerpackage is updated. - Check that path validation is in place by attempting to delete a directory outside the translation path (in a test environment).
Valters IT
Securing Digital Frontiers