/

CVE-2026-115190

Severity:

HIGH RISK

(8.0)

PHP Object Injection (CWE-502) in Mautic Segment Filters

CVE-2026-115190

Deferred

Vulnerability type

Category:

Insecure Deserialization

CWE:

CWE-502

Impact:

Potential Remote Code Execution and Application Compromise

Severity:

HIGH RISK

(8.0)

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 contains an insecure deserialization vulnerability in segment filter and custom field properties. An attacker who can write a crafted serialized value to affected stored data may cause unsafe PHP objects to be instantiated, potentially enabling code execution and compromise of Mautic data or availability.

Mautic contains an insecure deserialization vulnerability in segment filter and custom field properties. An attacker who can write a crafted serialized value to affected stored data may cause unsafe PHP objects to be instantiated, potentially enabling code execution and compromise of Mautic data or availability.

Affected context

The vulnerability occurs in Mautic deployments where segment filter or custom field property values are stored in the database and later processed through code paths that deserialize them without restricting permitted PHP classes. Risk depends on the deployment's authorization model and whether an attacker has a high-privilege account or another capability that permits writing to the affected data. Deserialization may occur during segment evaluation, contact export, or custom field API processing.

The vulnerability occurs in Mautic deployments where segment filter or custom field property values are stored in the database and later processed through code paths that deserialize them without restricting permitted PHP classes. Risk depends on the deployment's authorization model and whether an attacker has a high-privilege account or another capability that permits writing to the affected data. Deserialization may occur during segment evaluation, contact export, or custom field API processing.

Exploit preconditions

  • Attack surface: Mautic functionality that stores and later reads segment filter or custom field properties
  • Required access: High-privilege access or an existing capability to write crafted values to affected stored data
  • Trigger point: Later processing of the stored value, such as segment evaluation, contact export, or a custom field API request
  • Why exploitation is possible: Vulnerable code paths deserialize stored values without using a safe deserialization helper or restricting instantiable PHP classes; available dependency gadget chains may then enable unintended behavior
  • Attack surface: Mautic functionality that stores and later reads segment filter or custom field properties
  • Required access: High-privilege access or an existing capability to write crafted values to affected stored data
  • Trigger point: Later processing of the stored value, such as segment evaluation, contact export, or a custom field API request
  • Why exploitation is possible: Vulnerable code paths deserialize stored values without using a safe deserialization helper or restricting instantiable PHP classes; available dependency gadget chains may then enable unintended behavior

Why this happens

The underlying flaw is unsafe deserialization of attacker-influenced PHP serialized data. Instead of applying a safe deserialization mechanism with an explicit class allowlist, affected code paths permit arbitrary PHP object instantiation while reading stored properties. This behavior maps to CWE-502: Deserialization of Untrusted Data and can invoke dangerous object behavior supplied by application or dependency gadget chains.

The underlying flaw is unsafe deserialization of attacker-influenced PHP serialized data. Instead of applying a safe deserialization mechanism with an explicit class allowlist, affected code paths permit arbitrary PHP object instantiation while reading stored properties. This behavior maps to CWE-502: Deserialization of Untrusted Data and can invoke dangerous object behavior supplied by application or dependency gadget chains.

Potential impact

  • An attacker could execute arbitrary PHP or operating system code in the Mautic process context
  • Sensitive contact and application data may be read or exfiltrated
  • Stored data could be modified or deleted
  • The Mautic instance may be rendered unavailable
  • The application environment could be used for further compromise or lateral movement
  • An attacker could execute arbitrary PHP or operating system code in the Mautic process context
  • Sensitive contact and application data may be read or exfiltrated
  • Stored data could be modified or deleted
  • The Mautic instance may be rendered unavailable
  • The application environment could be used for further compromise or lateral movement

General mitigation guidance

Mitigation generally focuses on eliminating unrestricted object deserialization and reducing trust in stored serialized values.

Common defensive patterns include:

  • Use Mautic's safe deserialization helper or an equivalent restricted mechanism for every affected code path
  • Permit only explicitly required classes, or prefer structured formats such as JSON with strict schemas
  • Validate type, structure, and acceptable values before processing stored properties
  • Reduce which roles and interfaces can write segment filters and custom field data
  • Run the application with least-privilege database, filesystem, and operating-system permissions
  • Treat existing serialized data as untrusted during migration, repair, export, and background processing

Mitigation generally focuses on eliminating unrestricted object deserialization and reducing trust in stored serialized values.

Common defensive patterns include:

  • Use Mautic's safe deserialization helper or an equivalent restricted mechanism for every affected code path
  • Permit only explicitly required classes, or prefer structured formats such as JSON with strict schemas
  • Validate type, structure, and acceptable values before processing stored properties
  • Reduce which roles and interfaces can write segment filters and custom field data
  • Run the application with least-privilege database, filesystem, and operating-system permissions
  • Treat existing serialized data as untrusted during migration, repair, export, and background processing

How teams detect issues like this

Detection can combine source review, runtime monitoring, and authorization analysis:

  • Use static analysis rules to identify unrestricted PHP deserialization functions and code paths that process database-derived values
  • Review whether all deserialization calls use class restrictions or the application's approved safe helper
  • Search code reviews for newly introduced serialization of user-influenced properties
  • Monitor high-privilege writes to segment filter and custom field data, especially unusual serialized values
  • Apply policy checks that reject unsafe deserialization APIs and require schema validation for persisted user-controlled data
  • Use automated security review tools as a supplementary way to identify unsafe object-instantiation patterns

Detection can combine source review, runtime monitoring, and authorization analysis:

  • Use static analysis rules to identify unrestricted PHP deserialization functions and code paths that process database-derived values
  • Review whether all deserialization calls use class restrictions or the application's approved safe helper
  • Search code reviews for newly introduced serialization of user-influenced properties
  • Monitor high-privilege writes to segment filter and custom field data, especially unusual serialized values
  • Apply policy checks that reject unsafe deserialization APIs and require schema validation for persisted user-controlled data
  • Use automated security review tools as a supplementary way to identify unsafe object-instantiation patterns

Sources

SourceLink
github.comgithub.com/mautic/mautic/security/advisories/GHSA-5r63-8h35-j3mw

Frequently asked

questions

No. Exploitation generally requires high privileges or another ability to write crafted values to the affected segment filter or custom field properties. The exact scope depends on configured roles and exposed interfaces.

Mautic deserializes attacker-influenced stored values without sufficiently restricting which PHP classes may be instantiated. Dependency gadget chains can make those objects perform unintended actions.

Route every affected deserialization path through a safe helper with an explicit class allowlist, and prefer strictly validated structured data formats where serialized PHP objects are not required.

Treat database values influenced by privileged users or integrations as untrusted, enforce least privilege, review serialization boundaries, and use static analysis and policy checks to block unrestricted deserialization.

No. Exploitation generally requires high privileges or another ability to write crafted values to the affected segment filter or custom field properties. The exact scope depends on configured roles and exposed interfaces.

Mautic deserializes attacker-influenced stored values without sufficiently restricting which PHP classes may be instantiated. Dependency gadget chains can make those objects perform unintended actions.

Route every affected deserialization path through a safe helper with an explicit class allowlist, and prefer strictly validated structured data formats where serialized PHP objects are not required.

Treat database values influenced by privileged users or integrations as untrusted, enforce least privilege, review serialization boundaries, and use static analysis and policy checks to block unrestricted deserialization.

Find out what's already
exploitable in your codebase.