☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-48480

CVE-2025-48480 Path Traversal in Freescout
📅 PUBLISHED: 2025-05-30 04:34 UTC 🔄 UPDATED: 2026-09-23 20:23 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.32%
👁️
0.32% probability
7.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
7.0
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-48480 is a path traversal vulnerability in FreeScout, a self-hosted help desk and shared mailbox application. An authenticated attacker with administrator privileges (or the User::PERM_EDIT_USERS permission) can exploit this flaw to delete arbitrary files on the server. The vulnerability exists in the user avatar upload functionality, where the application fails to properly sanitize the file path provided during user creation. By specifying a path like ../.htaccess as the avatar location, an attacker can cause the application to delete the .htaccess file in the /storage/app/public directory upon user deletion. This can lead to denial of service, bypass of access controls, or further exploitation. The vulnerability is patched in version 1.8.180.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is not directly related to a package manager (NPM, PyPI, Go, Ruby) but affects the FreeScout application itself, which is typically deployed via Docker, manual installation, or from the official GitHub repository. Users should verify the integrity of their FreeScout installation and ensure they are using a trusted source.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:H/A:H
  • Base Score: 6.6 (Medium)
  • Attack Vector (AV): Network (N) - The vulnerability can be exploited remotely.
  • Attack Complexity (AC): Low (L) - No special conditions are required for exploitation.
  • Privileges Required (PR): High (H) - The attacker must have administrator-level privileges or the specific User::PERM_EDIT_USERS permission.
  • User Interaction (UI): None (N) - No user interaction is required.
  • Scope (S): Unchanged (U) - The vulnerability does not affect resources beyond the vulnerable component.
  • Confidentiality Impact (C): None (N) - The vulnerability does not directly lead to data disclosure.
  • Integrity Impact (I): High (H) - The attacker can delete arbitrary files, potentially corrupting the application or system.
  • Availability Impact (A): High (H) - Deleting critical files can lead to denial of service.

Threat Level: Medium. While the CVSS score is medium, the potential for file deletion and subsequent denial of service or privilege escalation makes this a significant threat for affected installations.

Deep Dive & Mechanics

The vulnerability resides in the user creation and deletion functionality of FreeScout. When an administrator creates a new user, they can specify a path for the user's avatar. The application does not properly validate this path, allowing an attacker to use path traversal sequences (e.g., ../) to point to files outside the intended avatar directory.

The attack flow is as follows:

  1. Authentication: The attacker must be logged in as an administrator or a user with the User::PERM_EDIT_USERS permission.
  2. User Creation: The attacker creates a new user and, during the creation process, sets the avatar path to a malicious value, such as ../.htaccess. This path points to the .htaccess file in the /storage/app/public directory.
  3. User Deletion: The attacker then deletes the newly created user. The application's deletion routine attempts to delete the avatar file associated with the user. Due to the lack of path sanitization, it follows the provided path and deletes the target file (../.htaccess), which resolves to /storage/app/public/.htaccess.

The impact of deleting the .htaccess file can vary. In many web server configurations, .htaccess files are used for access control, URL rewriting, and other security directives. Removing this file could expose sensitive directories, disable security features, or allow for further exploitation.

Vulnerable vs. Patched Code

The core issue is the lack of path sanitization in the avatar file path handling.

Vulnerable Code (Conceptual):

// In UserController or similar
public function store(Request $request) {
    $user = new User();
    $user->avatar_url = $request->input('avatar_url'); // No sanitization
    $user->save();
}

public function destroy($id) {
    $user = User::find($id);
    if ($user->avatar_url) {
        Storage::delete($user->avatar_url); // Directly uses the stored path
    }
    $user->delete();
}

Patched Code (Conceptual):

// In UserController or similar
public function store(Request $request) {
    $user = new User();
    $avatarPath = $request->input('avatar_url');
    // Sanitize the path to prevent traversal
    $avatarPath = basename($avatarPath); // Only allow the filename
    $user->avatar_url = $avatarPath;
    $user->save();
}

public function destroy($id) {
    $user = User::find($id);
    if ($user->avatar_url) {
        // Ensure the file is within the allowed directory
        $fullPath = storage_path('app/public/avatars/' . $user->avatar_url);
        if (strpos(realpath($fullPath), storage_path('app/public/avatars')) === 0) {
            Storage::delete($fullPath);
        }
    }
    $user->delete();
}

The patched code uses basename() to strip any directory components from the avatar path, ensuring only the filename is stored. Additionally, it validates that the resolved path is within the intended avatar directory before deletion.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A running instance of FreeScout version < 1.8.180.
  • Administrator credentials or a user with User::PERM_EDIT_USERS permission.

Exploitation Steps:

  1. Login: Log in to FreeScout as an administrator.
  2. Create Malicious User: Navigate to the user creation page. Set the username, email, and password. In the avatar URL field, enter ../.htaccess.
  3. Save User: Save the new user. The user is created with the malicious avatar path.
  4. Delete User: Navigate to the user list, find the newly created user, and delete it.
  5. Verify: Check if the .htaccess file in /storage/app/public/ has been deleted. This can be confirmed by attempting to access a resource that relied on that file.

Example cURL Commands:

# Login and get session cookie (simplified)
curl -c cookies.txt -X POST https://target.freescout.com/login \
  -d "email=admin@example.com&password=adminpass"

# Create user with malicious avatar path
curl -b cookies.txt -X POST https://target.freescout.com/users \
  -d "name=attacker&email=attacker@example.com&password=attackerpass&avatar_url=../.htaccess"

# Delete the user
curl -b cookies.txt -X DELETE https://target.freescout.com/users/123

Blue Team (Detection & Forensics)

Detection:

  • Monitor for unusual user creation events, especially those with avatar paths containing ../ or other path traversal sequences.
  • Monitor for user deletion events immediately following user creation.
  • Alert on any attempts to delete files outside the expected avatar directory.

Forensics:

  • Check application logs for user creation and deletion activities.
  • Examine the users table in the database for any entries with suspicious avatar_url values.
  • Check the file system for missing .htaccess or other critical files in the /storage/app/public/ directory.

Indicators of Compromise (IOCs)

  • File System:
    • Missing .htaccess file in /storage/app/public/.
    • Unexpected files or directories in /storage/app/public/.
  • Database:
    • User records with avatar_url containing ../ or other path traversal patterns.
  • Logs:
    • Application logs showing rapid user creation and deletion from the same IP address.
    • Error logs related to missing files or failed access to /storage/app/public/.

Detection Engineering

YARA Rule

rule Detect_FreeScout_Path_Traversal_Avatar {
    meta:
        description = "Detects attempts to exploit CVE-2025-48480 by looking for path traversal patterns in avatar URLs"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-48480"
        severity = "high"
    strings:
        $path_traversal = /\.\.\/[^\/]/
        $avatar_field = "avatar_url"
    condition:
        $avatar_field and $path_traversal
}

Sigma Rule

title: FreeScout Path Traversal in Avatar URL
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects user creation with path traversal in avatar URL (CVE-2025-48480)
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: freescout
detection:
    selection:
        event: user_created
        avatar_url|contains: '../'
    condition: selection
falsepositives:
    - Legitimate use of relative paths (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"FreeScout Path Traversal in Avatar URL"; flow:to_server,established; content:"POST"; http_method; content:"/users"; http_uri; content:"avatar_url"; nocase; pcre:"/\.\.\//Ri"; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: Upgrade FreeScout to version 1.8.180 or later immediately.
  2. Restrict Permissions: Review and restrict the User::PERM_EDIT_USERS permission to only trusted administrators.
  3. File Integrity Monitoring: Implement file integrity monitoring (FIM) on the /storage/app/public/ directory to detect unauthorized file deletions.

Long-Term Mitigations:

  1. Input Validation: Implement strict input validation for all file paths, especially those provided by users.
  2. Least Privilege: Apply the principle of least privilege to all user roles and permissions.
  3. Web Application Firewall (WAF): Deploy a WAF with rules to detect and block path traversal attempts.
  4. Regular Audits: Conduct regular security audits and code reviews to identify similar vulnerabilities.

Valters IT Signature

This report was generated by Valters IT, an elite DevSecOps and Cyber Threat Intelligence team. For more information, visit Valters IT.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-48480/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.