Description
audiobookshelf's authentication-exemption check (server/routers/Auth.js) matches unauthenticated-allowed GET routes against req.path via a regex requiring a literal /items/:id/cover or /authors/:id/image shape, where req.path retains %2F sequences URL-encoded. CacheManager.handleCoverCache then joins this decoded value into a cache file path and streams the result before any database-backed ownership check.
Published: 2026-08-05
Score: 7.5 High
EPSS: 2.0% Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

AudiobookShelf’s authentication‑exemption logic matches GET routes against req.path using a regex that requires the literal segments "/items/:id/cover" or "/authors/:id/image". The regex is applied before Express decodes the :id parameter, so a request containing URL‑encoded forward‑slash (%2F) sequences bypasses the check. The application then decodes the id, incorporates it directly into a cache file path, and streams that file to the client without performing any ownership or permission validation. Consequently, an unauthenticated user can craft a request such as "/items/..%2F..%2Fsecret.txt/cover" to read any file accessible to the service process, satisfying the CWE‑22 path‑traversal category.

Affected Systems

The vulnerability affects the AudiobookShelf product from advplyr. No specific version information is provided in the available data; therefore, all released versions of AudiobookShelf that still use the affected authentication‑exemption implementation are potentially impacted.

Risk and Exploitability

The CVSS score of 7.5 indicates a high‑severity issue. The EPSS score is 2%, indicating a very low probability of exploitation, and the vulnerability is not listed in CISA’s KEV catalog, suggesting limited known exploitation activity to date. However, the attack vector is straightforward: an unauthenticated HTTP GET request to a cover or author image route containing encoded path‑traversal segments bypasses authentication checks and retrieves arbitrary files. Because no database ownership check precedes the file read, the full impact is the uncontrolled exposure of sensitive files under cover image naming conventions. This makes the vulnerability a prime target for attackers seeking data exfiltration from the service.

Generated by OpenCVE AI on August 13, 2026 at 10:14 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest AudiobookShelf patch that addresses CVE‑2026‑71209 as released by advplyr.
  • Configure the web server or reverse proxy to deny unauthenticated access to the "/items/*/cover" and "/authors/*/image" endpoints, allowing only authenticated sessions.
  • Modify or enforce stricter input validation on the :id parameter to reject encoded "/" ("%2F") sequences before routing or file handling logic.

Generated by OpenCVE AI on August 13, 2026 at 10:14 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 12:00:00 +0000

Type Values Removed Values Added
Description audiobookshelf's authentication-exemption check (server/routers/Auth.js) matches unauthenticated-allowed GET routes against req.path via a regex requiring a literal /items/:id/cover or /authors/:id/image shape, where req.path retains %2F sequences URL-encoded. Express's router decodes the :id route parameter before handler code runs, so a %2F-encoded '../' sequence in :id (e.g. ..%2f..%2f..%2ftmp%2fpwned) passes the literal-path auth-exemption check while resolving to a real path-traversal payload once decoded. CacheManager.handleCoverCache then joins this decoded value into a cache file path and streams the result before any database-backed ownership check. This bypasses the fix applied for CVE-2025-25205 (which anchored the exemption regex and switched it to req.path) and results in unauthenticated arbitrary file read of any file matching the pattern *_<width>[x<height>].<ext> that the service account can read. audiobookshelf's authentication-exemption check (server/routers/Auth.js) matches unauthenticated-allowed GET routes against req.path via a regex requiring a literal /items/:id/cover or /authors/:id/image shape, where req.path retains %2F sequences URL-encoded. CacheManager.handleCoverCache then joins this decoded value into a cache file path and streams the result before any database-backed ownership check.

Mon, 10 Aug 2026 11:30:00 +0000

Type Values Removed Values Added
Title audiobookshelf: %2F Encoding Discrepancy Bypasses Cover/Image Auth Exemption Regex, Enabling Unauthenticated Path Traversal audiobookshelf - %2F Encoding Discrepancy Bypasses Cover/Image Auth Exemption Regex, Enabling Unauthenticated Path Traversal

Wed, 05 Aug 2026 14:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 05 Aug 2026 09:00:00 +0000

Type Values Removed Values Added
First Time appeared Advplyr
Advplyr audiobookshelf
Vendors & Products Advplyr
Advplyr audiobookshelf

Wed, 05 Aug 2026 07:30:00 +0000

Type Values Removed Values Added
Description audiobookshelf's authentication-exemption check (server/routers/Auth.js) matches unauthenticated-allowed GET routes against req.path via a regex requiring a literal /items/:id/cover or /authors/:id/image shape, where req.path retains %2F sequences URL-encoded. Express's router decodes the :id route parameter before handler code runs, so a %2F-encoded '../' sequence in :id (e.g. ..%2f..%2f..%2ftmp%2fpwned) passes the literal-path auth-exemption check while resolving to a real path-traversal payload once decoded. CacheManager.handleCoverCache then joins this decoded value into a cache file path and streams the result before any database-backed ownership check. This bypasses the fix applied for CVE-2025-25205 (which anchored the exemption regex and switched it to req.path) and results in unauthenticated arbitrary file read of any file matching the pattern *_<width>[x<height>].<ext> that the service account can read.
Title audiobookshelf: %2F Encoding Discrepancy Bypasses Cover/Image Auth Exemption Regex, Enabling Unauthenticated Path Traversal
Weaknesses CWE-22
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N'}


Subscriptions

Advplyr Audiobookshelf
cve-icon MITRE

Status: PUBLISHED

Assigner: TuranSec

Published:

Updated: 2026-08-10T11:45:13.437Z

Reserved: 2026-08-05T06:56:15.799Z

Link: CVE-2026-71209

cve-icon Vulnrichment

Updated: 2026-08-05T13:21:25.095Z

cve-icon NVD

Status : Received

Published: 2026-08-05T08:16:43.110

Modified: 2026-08-10T12:17:24.697

Link: CVE-2026-71209

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-13T10:15:07Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')