Skip to main content

LibreDesk CVE-2025-68927

HIGH
Cross-site Scripting (XSS) (CWE-79)
2025-12-27 security-advisories@github.com
7.3
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as agent
  2. Delivery
    Intercept POST to contacts/{id}/notes
  3. Exploit
    Strip <p> wrapper, inject HTML form
  4. Execution
    Store unsanitized note
  5. Persist
    Victim agent views contact
  6. Impact
    Rendered form harvests credentials

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

Requires an authenticated LibreDesk account with permission to add contact notes, plus the ability to intercept and modify the POST /api/v1/contacts/{id}/notes request body to remove the client-added <p> wrapper (the backend trusts the client-supplied HTML and performs no server-side sanitization or allowlisting before persisting). Exploitation is further gated by victim interaction: a second user - impact increases if a privileged/admin user - must subsequently view the affected contact's notes for the injected HTML to render. The flaw is limited to HTML injection (forms, inputs, images) for phishing/CSRF/UI-redress; arbitrary JavaScript execution is not established in the advisory. Affects all versions prior to 0.8.6-beta.

Impact

This is a moderate, not top-tier, priority. The input CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:P, VC:H/VI:H) scores 7.3 and implies an unauthenticated network attacker, but this conflicts directly with the vendor PoC, which begins 'Log in to LibreDesk' - adding a contact note via POST /api/v1/contacts/{id}/notes requires an authenticated agent account, so PR:N appears incorrect and PR:L is more defensible. The VC:H/VI:H (high confidentiality/integrity) rating also looks inflated: the advisory describes stored HTML injection (forms, <img>, UI redress) enabling phishing/CSRF-style actions, not confirmed arbitrary JavaScript execution or direct data theft, so impact is better characterized as low-to-moderate. Exploitation requires victim interaction (a user, ideally a privileged one, must view the poisoned note), which the UI:P metric correctly reflects. Publicly available exploit code exists (vendor GHSA with full PoC), raising practical risk, but there is no EPSS score and no KEV listing provided, and no evidence of active exploitation. Net: a genuine, patch-worthy stored injection flaw gated behind authentication and victim interaction - real but not an emergency, especially given the product's limited deployment footprint.

Exploit ScenarioDerived

An authenticated agent (or a compromised/malicious low-privilege staff account) adds a contact note, intercepts the request with a proxy, and strips the client-supplied <p> wrapper to submit raw HTML such as a credential-harvesting <form> pointing at an attacker webhook. When another agent - ideally an administrator - opens that contact, the injected form renders inside the trusted LibreDesk UI, enabling phishing or CSRF-style forced actions. A full working PoC is published in the vendor GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 05, 2026

Stored HTML injection in the LibreDesk customer support desk allows an authenticated user who can add contact notes to persist arbitrary HTML - including forms, inputs, and images - that renders in the application when another user later views the affected contact. Affected are all self-hosted LibreDesk deployments prior to 0.8.6-beta; exploitation requires an authenticated account with note-creation permission, the ability to intercept the POST /api/v1/contacts/{id}/notes request and strip the client-added <p> wrapper (the backend trusts client-supplied markup and performs no server-side sanitization), and a second user - impact rises if that user is privileged - to open the notes for the payload to render. The advisory establishes phishing, HTML-only CSRF-style forced actions, and UI-redress impact; arbitrary JavaScript execution is not established, publicly available exploit code exists, and the issue is rated a moderate priority in independent assessment. The vendor has patched in version 0.8.6-beta.

RemediationAI

Vendor-released patch: upgrade to LibreDesk 0.8.6-beta, which contains the fix in commit 270347849943ac6a43e9fd6ebdc99c71841900eb and replaces the DOMPurify-based rendering with the vue-letter Letter component restricted to cid, https, http, and mailto schemas; full details are in the vendor advisory at https://github.com/abhinavxd/libredesk/security/advisories/GHSA-wh6m-h6f4-rjf4. If immediate upgrade is not possible, treat every stored note as untrusted: add server-side sanitization/allowlisting or HTML-encode note content before persistence so only explicitly permitted tags survive (trade-off - legitimate rich-text formatting may render as plain text until the frontend is aligned), and restrict who can create contact notes to the minimum set of trusted agents, since the vulnerability is only reachable by an authenticated account with note-creation rights (trade-off - reduces workflow flexibility for shared inboxes). Consider restricting or fronting the POST /api/v1/contacts/{id}/notes endpoint so request bodies cannot be tampered with outside the web client, and warn agents that injected notes may present fake re-authentication forms, reinforcing that credentials should never be entered into in-app forms whose origin cannot be verified. Detection is difficult because injected payloads are indistinguishable from normal stored notes; review existing note records for unexpected <form>, <input>, or <img> elements as a compensating audit step rather than a preventive control.

Affected Packages

go github.com/abhinavxd/libredesk fix: 0.8.6-beta

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in go

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 the stored HTML-injection variant rather than script execution. LibreDesk's note-creation flow expects the client to submit note content already wrapped in <p> tags, and the backend stores that HTML verbatim without an allowlist or sanitization step - an example of the application trusting client-side formatting assumptions. By proxying the request to POST /api/v1/contacts/{id}/notes and removing the <p> wrapper, an attacker submits raw elements such as <form>, <input>, and <img> that persist in the note record and are rendered back to any viewer of that contact. On the frontend, notes were rendered with the vue-dompurify-html directive backed by DOMPurify 3.2.4, and the upstream fix commit (270347849943ac6a43e9fd6ebdc99c71841900eb) removes the vue-dompurify-html/DOMPurify dependencies and replaces them with a vue-letter Letter component configured with a restricted allowedSchemas list of ['cid', 'https', 'http', 'mailto'], constraining what markup and URL schemes can be rendered - including in ContactNotes.vue and CommandBox.vue - while also deleting the legacy AgentMessageBubble.vue. The CPE cpe:2.3:a:libredesk:libredesk:*:*:*:*:*:*:*:* and the Go module path go/github.com/abhinavxd/libredesk identify the affected component. The independent assessment scores this CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N - network reachable but requiring authenticated privileges (PR:L) and victim interaction (UI:R), with scope change and low confidentiality/integrity impact and no availability impact, which is materially lower than the supplied CVSS 4.0 score of 7.3.

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 (github) PRIMARY 7.3 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 5.4 MEDIUM

Adding notes requires an authenticated agent (PR:L) and a victim must view the note (UI:R); stored injection crosses into another user's context (S:C) with limited phishing-level impact (C:L/I:L).

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 (github).

CVSS VectorVendor: github

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

DescriptionCVE.org

Libredesk is a self-hosted customer support desk. Prior to version 0.8.6-beta, LibreDesk is vulnerable to stored HTML injection in the contact notes feature. When adding notes via POST /api/v1/contacts/{id}/notes, the backend automatically wraps user input in <p> tags. However, by intercepting the request and removing the <p> tag, an attacker can inject arbitrary HTML elements such as forms and images, which are then stored and rendered without proper sanitization. This can lead to phishing, CSRF-style forced actions, and UI redress attacks. This issue has been patched in version 0.8.6-beta.

Executive ViewAI

Why It Matters

Self-hosted LibreDesk customer support desks running versions prior to 0.8.6-beta are exposed to a stored HTML injection issue that can present deceptive forms, images, or interface elements to staff viewing contact notes, enabling phishing and UI-redress attacks. Leadership should care because support teams often hold sensitive customer data and elevated access, and a successful lure could lead to credential theft or unintended actions, even though arbitrary JavaScript execution has not been established. Publicly available exploit code exists, so rapid upgrade to 0.8.6-beta is warranted.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche self-hosted open-source support desk, limited enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
Medium

Priority Score

56
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: +20
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.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

Affected Products (CPE)CVE.org

cpe:2.3:a:libredesk:libredesk:*:*:*:*:*:*:*:*

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