/

CVE-2026-115193

Severity:

HIGH RISK

(8.2)

Stored XSS (CWE-79) in Mautic Contact Detail View UI

CVE-2026-115193

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Administrative action forgery, session-context abuse, and unauthorized data access

Severity:

HIGH RISK

(8.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Mautic 7 contains a stored Cross-Site Scripting vulnerability in the contact detail view because HTML-type custom contact field values are rendered without sufficient output sanitization. An attacker who can write a value to an affected field may cause script to execute when another user, including an administrator, views the contact.

Mautic 7 contains a stored Cross-Site Scripting vulnerability in the contact detail view because HTML-type custom contact field values are rendered without sufficient output sanitization. An attacker who can write a value to an affected field may cause script to execute when another user, including an administrator, views the contact.

Affected context

The issue occurs in Mautic contact detail pages when HTML-type custom contact fields contain attacker-controlled content and that content is rendered in a user's browser without appropriate context-aware sanitization. The value may enter through contact editing, an API integration, or a form submission mapped to the custom field. Risk depends on whether an attacker can write to the field and whether another privileged user views the affected contact.

The issue occurs in Mautic contact detail pages when HTML-type custom contact fields contain attacker-controlled content and that content is rendered in a user's browser without appropriate context-aware sanitization. The value may enter through contact editing, an API integration, or a form submission mapped to the custom field. Risk depends on whether an attacker can write to the field and whether another privileged user views the affected contact.

Exploit preconditions

  • Attack surface: Contact detail view in the Mautic web interface
  • Required access: Permission or integration capability to write a value to an HTML-type custom contact field
  • Trigger point: A user opens the affected contact's detail page
  • Why exploitation is possible: Stored field content is rendered without adequate output sanitization, allowing browser-executable markup or script to reach the victim's session context
  • Attack surface: Contact detail view in the Mautic web interface
  • Required access: Permission or integration capability to write a value to an HTML-type custom contact field
  • Trigger point: A user opens the affected contact's detail page
  • Why exploitation is possible: Stored field content is rendered without adequate output sanitization, allowing browser-executable markup or script to reach the victim's session context

Why this happens

The vulnerability results from treating user-controlled HTML field values as trusted display content. When output is rendered without context-appropriate sanitization or a tightly restricted allowlist, an attacker can store content that the browser interprets as active script.

This maps to CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'), specifically a stored XSS pattern in which malicious input persists in application data and executes when later displayed.

The vulnerability results from treating user-controlled HTML field values as trusted display content. When output is rendered without context-appropriate sanitization or a tightly restricted allowlist, an attacker can store content that the browser interprets as active script.

This maps to CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'), specifically a stored XSS pattern in which malicious input persists in application data and executes when later displayed.

Potential impact

  • An attacker may perform actions available to the victim's active session
  • Administrative users could have accounts or system settings modified
  • Contact and campaign data could be accessed or altered
  • The application session or browser context could be abused
  • Malicious content could execute for multiple users who view the affected contact
  • An attacker may perform actions available to the victim's active session
  • Administrative users could have accounts or system settings modified
  • Contact and campaign data could be accessed or altered
  • The application session or browser context could be abused
  • Malicious content could execute for multiple users who view the affected contact

General mitigation guidance

Mitigation generally focuses on reducing trust in custom field values and applying output controls at the point where content is rendered.

Common defensive patterns include:

  • Applying context-aware output encoding or sanitization before rendering field values
  • Using a strict HTML allowlist when limited formatting is required
  • Treating API, form, and user-entered field values as untrusted regardless of their declared field type
  • Enforcing consistent sanitization across contact views, exports, previews, and administrative interfaces
  • Restricting permissions for writing HTML-type custom fields
  • Applying effective Content Security Policy controls as a defense-in-depth measure
  • Limiting administrative privileges and separating contact-editing permissions from system administration

Mitigation generally focuses on reducing trust in custom field values and applying output controls at the point where content is rendered.

Common defensive patterns include:

  • Applying context-aware output encoding or sanitization before rendering field values
  • Using a strict HTML allowlist when limited formatting is required
  • Treating API, form, and user-entered field values as untrusted regardless of their declared field type
  • Enforcing consistent sanitization across contact views, exports, previews, and administrative interfaces
  • Restricting permissions for writing HTML-type custom fields
  • Applying effective Content Security Policy controls as a defense-in-depth measure
  • Limiting administrative privileges and separating contact-editing permissions from system administration

How teams detect issues like this

Detection can include static analysis for direct insertion of custom field values into HTML, templates, or client-side DOM sinks without contextual encoding or sanitization. Code review should examine every rendering path for HTML-type fields, including contact detail pages, previews, API-backed interfaces, and administrative views.

Dynamic testing can store harmless marker content in affected fields and verify that it is rendered as text or approved markup rather than executable content. Policy enforcement may require approved sanitization helpers, template auto-escaping, restricted HTML allowlists, and automated security checks in pull requests. Automated review tools can help identify common unsafe output and DOM manipulation patterns.

Detection can include static analysis for direct insertion of custom field values into HTML, templates, or client-side DOM sinks without contextual encoding or sanitization. Code review should examine every rendering path for HTML-type fields, including contact detail pages, previews, API-backed interfaces, and administrative views.

Dynamic testing can store harmless marker content in affected fields and verify that it is rendered as text or approved markup rather than executable content. Policy enforcement may require approved sanitization helpers, template auto-escaping, restricted HTML allowlists, and automated security checks in pull requests. Automated review tools can help identify common unsafe output and DOM manipulation patterns.

Sources

SourceLink
github.comgithub.com/mautic/mautic/security/advisories/GHSA-3295-vq3p-93rw

Frequently asked

questions

An attacker generally needs a permitted path to write content to an HTML-type custom contact field, such as contact editing, an integration, an API operation, or a mapped form submission.

Not necessarily. Because the payload is stored with the contact, execution may occur when a user opens the affected contact detail page.

Treat custom field values as untrusted and apply context-aware output encoding or strict HTML sanitization at every rendering path.

Use template auto-escaping, tightly constrained HTML allowlists, least-privilege field permissions, and automated tests that verify stored user input cannot execute in privileged interfaces.

An attacker generally needs a permitted path to write content to an HTML-type custom contact field, such as contact editing, an integration, an API operation, or a mapped form submission.

Not necessarily. Because the payload is stored with the contact, execution may occur when a user opens the affected contact detail page.

Treat custom field values as untrusted and apply context-aware output encoding or strict HTML sanitization at every rendering path.

Use template auto-escaping, tightly constrained HTML allowlists, least-privilege field permissions, and automated tests that verify stored user input cannot execute in privileged interfaces.

Find out what's already
exploitable in your codebase.