CVE-2026-71294: Cotonti CMS Comments Plugin PHP Object Injection via Unrestricted unserialize() in Create/Edit Actions

Published Aug 5, 2026
·
Updated

Cotonti CMS's Comments plugin deserializes user-supplied data without restricting the classes that may be instantiated. In plugins/comments/controllers/actions/CreateAction.php, a ci POST parameter obtained via cotimport('ci', 'P', 'TXT') (trim-only sanitization) is passed to unserialize(base64decode($ci)) with no allowedclasses restriction, reachable by any member with write access to comments (the default Authmembers => 'RW' setting in plugins/comments/comments.setup.php). In plugins/comments/controllers/actions/EditAction.php, a cb parameter is similarly deserialized via unserialize(base64decode($this->comeback)) in prepareComeBack(), reachable by any member editing their own comment. Because unserialize() is called without allowedclasses, an attacker can construct a serialized PHP object of any class loaded by Cotonti (a PHP Object Injection primitive). This was demonstrated in practice using Cotonti's own MySQLcache class: a crafted serialized MySQLcache object, once deserialized and later garbage-collected, triggers its destruct()->flush() chain, causing an attacker-controlled INSERT INTO cotcache with attacker-chosen row values — confirming genuine POP-chain exploitation, with further impact (including potential RCE) contingent on other gadget chains available in a given Cotonti installation's loaded classes. A third sink in DeleteAction.php contains the identical unserialize() pattern but is gated behind an admin-only authorization check and is not reachable by ordinary members.

Affected Software

1 affected component
Cotonti Comments Plugin

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    In CreateAction.php, change the deserialization of the `ci` POST parameter so `unserialize()` does not instantiate arbitrary classes (e.g., use `unserialize(..., ['allowed_classes' => ...])` or avoid `unserialize` entirely).

    Cotonti CMS Comments Plugin (plugins/comments/controllers/actions/CreateAction.php) unserialize(base64_decode($ci)) = Add `allowed_classes` (whitelist) or replace with a safe deserialization method
  2. Configuration

    In EditAction.php, change prepareComeBack() so the `cb`/`$this->comeback` value is not deserialized into arbitrary classes (e.g., use `unserialize(..., ['allowed_classes' => ...])` or avoid `unserialize` entirely).

    Cotonti CMS Comments Plugin (plugins/comments/controllers/actions/EditAction.php) prepareComeBack() unserialize(base64_decode($this->comeback)) = Add `allowed_classes` (whitelist) or replace with a safe deserialization method
  3. Compensating control

    Temporarily restrict comment-writing/editing capabilities in plugins/comments to reduce exposure to the CreateAction/EditAction deserialization endpoints (the material notes default `Auth_members => 'RW'` enables member write access).

Event History

Aug 5, 2026
CVE Published
via MITRE·12:38 PM
Data Sourced
via MITRE·12:38 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·01:24 PM
DescriptionSeverityWeakness
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-71294?

CVE-2026-71294 has a severity rating of high, with a score of 7.7.

2

How do I fix CVE-2026-71294?

To fix CVE-2026-71294, restrict the classes allowed in the unserialize() function within the Comments plugin.

3

What kind of attack can be executed due to CVE-2026-71294?

CVE-2026-71294 can lead to PHP object injection attacks due to unrestricted deserialization of user input.

4

Which software is affected by CVE-2026-71294?

CVE-2026-71294 affects the Cotonti Comments Plugin for Cotonti CMS.

5

What is the potential impact of CVE-2026-71294?

The potential impact of CVE-2026-71294 includes code execution and data manipulation due to the vulnerability in deserialization.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203