Skip to main content

LibreDesk EUVDEUVD-2026-102295

| CVE-2026-111168 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-15 VulnCheck
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain authenticated agent account
  2. Delivery
    Upload SVG with Content-Type 'image/svg+xml; x' via /api/v1/media
  3. Exploit
    Malformed param bypasses exact-match SVG sandbox
  4. Execution
    Admin/agent opens /uploads/{uuid} inline
  5. Persist
    Script executes in victim session
  6. Impact
    Hijack administrator session/account

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

Exploitation requires (1) an authenticated LibreDesk agent account able to upload media via /api/v1/media, and (2) a crafted SVG whose Content-Type carries a trailing parameter (e.g. 'image/svg+xml; x') so the vulnerable code's exact string comparison against 'image/svg+xml' fails and the file is served inline instead of sandboxed; and (3) a victim agent or administrator who subsequently opens GET /uploads/{uuid} in their browser. Limiting factors that reduce real-world risk: it cannot be triggered by an unauthenticated outsider (requires a valid agent session, PR:L), it depends on victim user interaction (viewing the file, UI:P), and it only affects versions before 2.9.0-rc.8 - patched instances normalize the content type and apply a sandbox CSP to attachments.

Impact

This is a medium-severity stored XSS (CVSS 4.0 base 5.1) that realistically ranks as a moderate, not top, priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N with subsequent-system SC:L/SI:L) is internally consistent with the description: network-reachable upload endpoint, low complexity, but requiring an authenticated agent (PR:L) to plant the payload and a victim to view it (UI:P). Impact is capped at Low across confidentiality and integrity because execution is confined to the browser session context rather than the server. No EPSS score, KEV entry, or public PoC was provided in the input; per the available signals this is 'no public exploit identified at time of analysis.' There is no signal conflict here - all sources point to a privilege- and interaction-gated web vulnerability. The main residual risk is privilege escalation within the application: an attacker with a low-privilege agent account can execute script in an administrator's session, which is why this still merits timely patching despite the medium score. Note the PR:L requirement means an external unauthenticated attacker cannot exploit this directly; it presumes a malicious or compromised agent account.

Exploit ScenarioDerived

A malicious or compromised low-privilege LibreDesk agent uploads an SVG containing a <script> payload via /api/v1/media, deliberately setting the Content-Type to 'image/svg+xml; x' so it evades the exact-string SVG sandbox check. When another agent or an administrator later opens that media via GET /uploads/{uuid}, the server serves it inline without the sandbox CSP and the script runs in the victim's authenticated session. No public exploit code was provided in the input, but the technique is fully described in the VulnCheck advisory and the fix commit.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Stored cross-site scripting in LibreDesk versions before 2.9.0-rc.8 allows an authenticated agent to upload a crafted SVG whose Content-Type is supplied with a trailing parameter (for example 'image/svg+xml; x'), causing the application's exact-match check against 'image/svg+xml' to fail so the file is served inline without a sandboxing Content-Security-Policy instead of as an attachment. When a victim agent or administrator subsequently requests GET /uploads/{uuid}, the embedded script executes in their browser session, giving the attacker the ability to act with the victim's privileges in the helpdesk UI. Exploitation requires a valid agent session (CVSS vector PR:L) and victim interaction (UI:P), and only pre-2.9.0-rc.8 instances are affected; no public exploit code has been identified at time of analysis and the issue is not listed as confirmed actively exploited (CISA KEV), so it ranks as a medium-priority, patched vulnerability.

RemediationAI

Upgrade LibreDesk to 2.9.0-rc.8 or later, which is the vendor-released patch for this issue; the fix (mime normalization via NormalizeContentType, disposition selection via ContentDisposition, and a sandboxing CSP on attachments) is available in pull request https://github.com/abhinavxd/libredesk/pull/641 and commit https://github.com/abhinavxd/libredesk/commit/ab3a5ca682fcc1caec0950fc607b66caea49bec3, with release notes at https://github.com/abhinavxd/libredesk/releases/tag/v2.9.0-rc.8 and a third-party write-up at https://www.vulncheck.com/advisories/libredesk-before-2.9.0-rc.8-stored-xss-via-svg-upload-content-type-parameter. Because the affected code only trusts the stored content type, patching also requires that pre-existing media rows with non-normalized values be re-evaluated, so operators should purge or re-import legacy SVG uploads after upgrading. Where an immediate upgrade is not possible, the most effective compensating control is to block or filter SVG uploads at the reverse proxy before they reach /api/v1/media (for example rejecting multipart parts whose Content-Type begins with image/svg+xml, including parameterized variants) and to strip any trailing parameters from Content-Type headers on upload; the trade-off is that legitimate non-SVG SVG usage and any clients that rely on unusual MIME parameters will be rejected. A second option is to terminate GET /uploads/* requests through a proxy that forces Content-Disposition: attachment and injects 'Content-Security-Policy: sandbox' on every response, which stops inline rendering at the cost of breaking inline preview of images, video and PDF. Restricting who can reach the uploads endpoint (for example to trusted networks) reduces exposure but does not eliminate the stored payload, since a single upload persists for all later viewers; note that patching to 2.9.0-rc.8 is a release candidate, so validate it in staging before production rollout.

Affected VersionsENISA

libredesk 0 <2.9.0-rc.8

Affected Packages

euvd libredesk fix: 2.9.0-rc.8

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

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a MIME/content-type parsing and normalization failure in LibreDesk's media pipeline. Two code paths are involved: the upload/storage layer (internal/media/media.go) and the serving handler (cmd/media.go). On upload, the client-supplied Content-Type was stored essentially verbatim, and only a mime.ParseMediaType call performed late normalization. On retrieval, the vulnerable logic decided between Content-Disposition: inline and Content-Disposition: attachment by comparing media.ContentType to the literal string 'image/svg+xml'. Because the stored value was not normalized before comparison, a value such as 'image/svg+xml; x' (or 'text/plain,image/svg+xml') slipped past the equality test, was classified as a generic image/... prefix, and was therefore served with Content-Disposition: inline and no 'Content-Security-Policy: sandbox' header. SVG is an active, XML-based content type that can embed <script>, so rendering it inline from the application's own origin yields same-origin script execution (a stored XSS against every agent or administrator who opens the /uploads/{uuid} URL). The fix introduces mmodels.NormalizeContentType and mmodels.ContentDisposition helpers: content types are parsed and canonicalized before any decision, unrecognized or unparseable types fall back to application/octet-stream, only a safe allowlist (images other than SVG, video, application/pdf) is ever served inline, and any file served as an attachment receives 'Content-Security-Policy: sandbox'. The accompanying test file enumerates the intended behavior, including that 'image/svg+xml', 'image/svg+xml; x', 'image/x+xml', 'text/plain,image/svg+xml' and 'text/html' all resolve to attachment plus sandbox, while png, mp4 and pdf remain inline unless forced to download. The affected component is the FastGlue/fasthttp-based media service backed by a filesystem or object-store upload provider, and the CPE cpe:2.3:a:abhinavxd:libredesk:*:*:*:*:*:*:*:* covers all LibreDesk releases prior to the 2.9.0-rc.8 fix.

Know when Libredesk 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

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Remote upload endpoint (AV:N/AC:L) but needs an agent account (PR:L) and a victim viewing the file (UI:R); stored XSS runs in another user's browser context, giving scope change (S:C) with limited C/I and no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

LibreDesk before 2.9.0-rc.8 contains a stored cross-site scripting vulnerability that allows authenticated agents to execute script by uploading SVGs with malformed Content-Type parameters. Attackers can upload an SVG typed 'image/svg+xml; x' via /api/v1/media so GET /uploads/{uuid} serves it inline without sandbox, running script in any viewing agent's or administrator's session.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
niche self-hosted open-source helpdesk, limited enterprise deployment footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy