CVE-2026-27963 Overview
A stored cross-site scripting (XSS) vulnerability exists in Audiobookshelf, a self-hosted audiobook and podcast server. Versions prior to 2.32.0 of the Audiobookshelf web application allow arbitrary JavaScript execution through malicious library metadata. Attackers with library modification privileges can execute code in victim users' browsers, potentially leading to session hijacking and data exfiltration.
Critical Impact
Attackers with library modification privileges can inject malicious JavaScript that executes in the browsers of other users viewing the compromised library content, enabling session hijacking, credential theft, and data exfiltration.
Affected Products
- Audiobookshelf versions prior to 2.32.0
- Audiobookshelf web application with library modification features
- Self-hosted Audiobookshelf deployments with multiple users
Discovery Timeline
- 2026-02-26 - CVE CVE-2026-27963 published to NVD
- 2026-02-26 - Last updated in NVD database
Technical Details for CVE-2026-27963
Vulnerability Analysis
This stored XSS vulnerability (CWE-79) stems from improper sanitization of library metadata displayed through tooltip components in the Audiobookshelf web interface. The vulnerability allows authenticated users with library modification privileges to inject malicious JavaScript payloads into metadata fields that are later rendered to other users without proper encoding.
The attack requires the attacker to have authenticated access with library modification privileges, and a victim user must interact with the poisoned content. The scope is changed, meaning the vulnerable component (library metadata) impacts resources beyond its security scope (victim browsers), enabling cross-user attacks including session token theft and unauthorized actions on behalf of victims.
Root Cause
The root cause of this vulnerability lies in the ui-tooltip component rendering user-controlled metadata content as HTML rather than plaintext. Multiple Vue.js components in the Audiobookshelf client failed to specify the plaintext prop when rendering tooltip content, allowing HTML and JavaScript injection through metadata fields. Components including LazyBookCard.vue and DailyListeningChart.vue passed unsanitized data directly to tooltip rendering without proper encoding.
Attack Vector
The attack vector is network-based and requires an authenticated attacker with library modification privileges. The attacker crafts malicious library metadata containing JavaScript payloads. When other authenticated users view content containing the poisoned metadata and trigger tooltips, the malicious script executes in their browser context with full access to their session.
The attack flow involves: (1) attacker modifies library item metadata to include XSS payload, (2) victim user browses the library and hovers over or interacts with the compromised item, (3) tooltip component renders the malicious payload as executable HTML/JavaScript, (4) attacker's script executes with victim's session privileges.
</div>
<!-- Error widget -->
- <ui-tooltip cy-id="ErrorTooltip" v-if="showError" :text="errorText" class="absolute bottom-4e left-0 z-10">
+ <ui-tooltip cy-id="ErrorTooltip" v-if="showError" :text="errorText" plaintext class="absolute bottom-4e left-0 z-10">
<div :style="{ height: 1.5 + 'em', width: 2.5 + 'em' }" class="bg-error rounded-r-full shadow-md flex items-center justify-end border-r border-b border-red-300">
<span class="material-symbols text-red-100 pr-1e" :style="{ fontSize: 0.875 + 'em' }">priority_high</span>
</div>
Source: GitHub Commit Update
Detection Methods for CVE-2026-27963
Indicators of Compromise
- Unusual JavaScript or HTML tags present in library metadata fields (title, author, description)
- Library items containing encoded script payloads such as <script>, onerror=, or javascript: patterns
- Unexplained session activity or actions performed by users who recently viewed specific library content
Detection Strategies
- Implement Content Security Policy (CSP) headers to detect and block inline script execution attempts
- Monitor application logs for unusual metadata modifications containing HTML or script-like content
- Deploy web application firewall (WAF) rules to detect XSS payloads in form submissions and API requests
Monitoring Recommendations
- Enable verbose logging for library metadata modification operations
- Set up alerts for metadata containing suspicious patterns like <script>, onclick, onerror, or javascript: URIs
- Monitor for unusual session activity patterns that may indicate session hijacking following XSS exploitation
How to Mitigate CVE-2026-27963
Immediate Actions Required
- Upgrade Audiobookshelf to version 2.32.0 or later immediately
- Audit existing library metadata for any suspicious HTML or JavaScript content
- Review user accounts with library modification privileges and remove access from untrusted users
- Implement Content Security Policy headers to mitigate potential exploitation
Patch Information
The vulnerability is fixed in Audiobookshelf version 2.32.0. The patch adds the plaintext prop to ui-tooltip components throughout the application, ensuring that user-controlled content is rendered as text rather than HTML. Administrators should update to version 2.32.0 or later. Detailed patch information is available in the GitHub Commit and the GitHub Security Advisory.
Workarounds
- Restrict library modification privileges to only trusted administrator accounts until the patch is applied
- Implement a reverse proxy with WAF capabilities to filter potential XSS payloads in requests
- Manually audit and sanitize existing library metadata to remove any potentially malicious content
# Check current Audiobookshelf version
docker exec audiobookshelf cat /app/package.json | grep version
# Update to patched version using Docker
docker pull ghcr.io/advplyr/audiobookshelf:2.32.0
docker-compose down && docker-compose up -d
# Alternative: Update via npm for manual installations
npm update audiobookshelf@2.32.0
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

