Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft /search link with backslash-quote payload
-
DeliveryDeliver link to authenticated Tautulli user
-
ExploitVictim clicks, breaks out of JS string
-
ExecutionScript executes in Tautulli web origin
-
ImpactSteal session/act as victim
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Reflected XSS reachable via the /search endpoint of Tautulli versions prior to 2.17.2 in default configuration - no special feature toggle or non-default setting is required on the server side. Exploitation is LIMITED by requiring victim interaction (UI:A): an already-authenticated Tautulli user must follow the attacker's crafted link for the script to execute in the web context. The attacker themselves needs no authentication (PR:N) to craft and deliver the link, but the flaw yields nothing without a logged-in victim who clicks it, and its impact is confined to the Tautulli browser origin. |
| Impact | This is a genuine but modest-severity reflected cross-site scripting flaw (CWE-79) in Tautulli's /search endpoint, where the user-controlled query parameter is inserted into a JavaScript string with manual escaping that neutralizes quotes and forward slashes but not backslashes - a backslash-quote sequence breaks out of the string and injects script. Vendor CVSS 4.0 scores it 5.1 (MEDIUM): AV:N/AC:L/AT:N make it network-reachable and easy to trigger, but UI:A means it requires an authenticated user to actively follow the attacker's crafted link, and impact is limited to SC:L/SI:L with no confidentiality/integrity impact on the vulnerable system itself (VC:N/VI:N/VA:N). No EPSS score, no CISA KEV listing, and no public exploit code are present in the input - this is 'no public exploit identified at time of analysis.' The exploit-vs-active-exploitation distinction matters: nothing here indicates in-the-wild use. The signals are internally consistent (a phishing-style reflected XSS requiring victim interaction against a niche self-hosted product), so this is a moderate-priority patch rather than an emergency - driven by the low deployment footprint and the mandatory authenticated-victim click, not by any exploitation evidence. |
| Exploit ScenarioDerived | An attacker crafts a malicious Tautulli /search URL whose query parameter contains a backslash-quote sequence that terminates the JavaScript string and appends attacker script. The attacker sends this link to an authenticated Tautulli user (e.g. via phishing); when the victim clicks it, the script executes in the Tautulli web origin, allowing session/CSRF-token theft or actions in the victim's authenticated context. No public exploit code is identified, though the escaping bypass is straightforward to reproduce from the patch diff. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Reflected cross-site scripting (CWE-79) in Tautulli, the Python-based monitoring and tracking tool for Plex Media Server, affects all releases prior to 2.17.2 through the /search endpoint, which weaves the user-supplied query parameter into a JavaScript string. An unauthenticated attacker can craft a link that, once followed by an already-authenticated Tautulli user, executes arbitrary script inside that user's browser session on the Tautulli origin (CVSS 3.1: AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N). The flaw requires victim interaction and is confined to the Tautulli web context; no public exploit code has been identified at time of analysis, and the issue is fixed in 2.17.2.
RemediationAI
Vendor-released patch: upgrade Tautulli to 2.17.2, the release that replaces the flawed manual escaping in data/interfaces/default/search.html with json.dumps() (commit 3bee54087370fc275b13565a9e58235341bb4cf7). Confirm the new version is running and re-check the /search endpoint afterward. Where immediate upgrade is not possible, treat the exposure as a client-side trust problem: restrict Tautulli's web UI to a trusted network or VPN rather than exposing it to the internet, since any public exposure gives the unauthenticated attacker the delivery vector for the crafted link - the trade-off is loss of remote convenience for legitimate users. Deploying a WAF rule that rejects backslash characters or script-like payloads in the query parameter of /search provides partial, signature-dependent mitigation and can cause false positives on legitimate search strings. Requiring strong, unique authentication and short session lifetimes limits what a successful XSS can reach in the victim's session, but does not prevent the injection itself. There is no server-side configuration toggle documented for the search feature, so patching remains the primary and most reliable fix; no public exploit code has been identified at time of analysis, so the urgency is driven by the low-complexity, no-authentication-to-deliver nature of the flaw rather than by observed exploitation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Tautulli is a Python/Flask web application whose interface is rendered through Jinja2 templates under data/interfaces/default/. The vulnerable template, search.html, built a client-side JavaScript variable by interpolating the query string with manual escaping: query.replace('"','\\"').replace('/','\\/'). This pipeline neutralizes double quotes and forward slashes but never accounts for the backslash itself, so a crafted \" (backslash-quote) sequence causes the backslash to escape the following escape character and leaves the quote free to terminate the JavaScript string literal - allowing attacker-controlled markup and script to be injected into the page. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), a context-mismatch error: ad-hoc string replacement was used instead of a JavaScript-aware encoder. The upstream fix in commit 3bee54087370fc275b13565a9e58235341bb4cf7 replaces the manual escaping with json.dumps(query), which produces a correctly escaped JavaScript string literal for any input. Per the CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:A/SC:L/SI:L), the attack is network-reachable, low complexity, and needs no privileges to deliver, but requires the victim to interact and the subsequent scope is changed to the browser (C/I impact limited, no availability impact). The CPE entry cpe:2.3:a:tautulli:tautulli:*:*:*:*:*:*:*:* indicates every version before the fix is in scope.
Know when Tautulli gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Unauthenticated attacker crafts a link (PR:N, AV:N, AC:L) but needs a victim to click (UI:R); script runs in a different security context (S:C) with limited confidentiality/integrity impact and no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Tautulli is a Python based monitoring and tracking tool for Plex Media Server. Prior to 2.17.2, the /search endpoint inserts its user-controlled query parameter into a JavaScript string in data/interfaces/default/search.html using manual escaping that handles quotes and slashes but not backslashes. A backslash-quote sequence can terminate the string, so an unauthenticated attacker can send a crafted link that executes script in the Tautulli web context when an authenticated user follows it. This issue is fixed in version 2.17.2.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Path traversal in Tautulli's /newsletter/image/images API endpoint allows unauthenticated remote attackers to read arbit
Unauthenticated path traversal in Tautulli 2.15.3 and earlier allows remote attackers to read arbitrary files from the s
Path traversal in Tautulli 2.15.3 and earlier allows unauthenticated remote attackers to read arbitrary files through th
Remote code execution in Tautulli through 2.15.3 requires pre-existing administrative access: an attacker who can repoin
Command injection in Tautulli 2.15.3 and earlier lets an authenticated administrator achieve remote code execution on th
In Tautulli 2.1.9, CSRF in the /shutdown URI allows an attacker to shut down the remote media server. Rated medium sever
data/interfaces/default/history.html in Tautulli 2.1.26 has XSS via a crafted Plex username that is mishandled when cons
Unauthenticated server-side request forgery in Tautulli versions prior to 2.17.1 allows remote attackers to coerce the T
Remote code execution in Tautulli versions prior to 2.17.1 allows attackers to achieve unauthenticated RCE on fresh inst
Stored cross-site scripting in Tautulli before 2.17.1 allows low-privilege authenticated users (including guests when gu
Cross-site request forgery in Tautulli versions prior to 2.17.1 allows remote attackers to hijack administrator accounts
Remote code execution in Tautulli (Python-based Plex Media Server monitoring tool) versions prior to 2.17.0 allows authe
EUVD-2026-84070
NVD
CVE.org
EPSS
GitHub
Exploit-DB