CVE-2026-71209

audiobookshelf - %2F Encoding Discrepancy Bypasses Cover/Image Auth Exemption Regex, Enabling Unauthenticated Path Traversal

Published Aug 5, 2026 CVSS 3.1 · 7.5 High EPSS 2.2% KEV · Not listed
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.

Analysis

AI-generated

Technical 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.

Remediation

No solution or workaround provided in the CVE record.

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 available
History
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.
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
Type Values Removed Values Added
Metrics ssvc

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

Type Values Removed Values Added
First Time appeared Advplyr
Advplyr audiobookshelf
Vendors & Products Advplyr
Advplyr audiobookshelf
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'}

Weaknesses
  • CWE-22

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

Sources

Status
PUBLISHED
Assigner
TuranSec
Published
Updated
Aug 10, 2026, 11:45 AM
Reserved
Aug 5, 2026, 6:56 AM
Status
Deferred
Published
Aug 5, 2026, 8:16 AM
Modified
Oct 24, 2026, 3:10 PM