ZeroHour

CVE-2026-91939

moderate

Unauthenticated PHP Object Injection in Cotonti 1.0.0 Comments Plugin

CVSS 4.0
9.3 critical
EPSS
Published
()
Modified
AI analysis

Cotonti 1.0.0's Comments plugin feeds the unauthenticated 'ci' GET parameter directly into PHP's unserialize() without the allowed_classes restriction, allowing arbitrary PHP objects with attacker-controlled properties to be instantiated. By sending a crafted serialized payload in the URL, an unauthenticated attacker can trigger gadget chains available in the application, resulting in database manipulation or remote code execution. The flaw is rated critical (CVSS 4.0: 9.3) and is classified as CWE-502 (deserialization of untrusted data). Sites running Cotonti 1.0.0 with the Comments plugin enabled are affected. No public proof of concept is known, the issue is not in CISA's KEV catalog, and there is no evidence of exploitation in the wild, but exploitation requires only a simple HTTP request once a viable gadget chain is identified.

What to do: Upgrade Cotonti to the latest release as soon as a fixed version is available, or disable the Comments plugin if it is not needed. In the meantime, use a WAF or reverse proxy rule to block requests to the Comments plugin containing suspicious serialized data in the 'ci' parameter (e.g., strings starting with 'O:' or 'a:'). Audit web server logs for historical requests with a 'ci' parameter carrying serialized payload markers, and verify database integrity and web roots for signs of code injection.

Affected
Cotonti CMF Comments plugin
Estimated exposure
moderate≈1,000–10,000 sites (low thousands), clearly an estimate — Cotonti is a niche open-source PHP CMS with well under 0.1% of the CMS market per public technology surveys, and only the subset running version 1.0.0 with the Comments plugin enabled is actually vulnerable.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Cotonti 1.0.0 Comments plugin passes the ci GET parameter to unserialize() without allowed_classes restriction, allowing unauthenticated attackers to instantiate arbitrary PHP classes with attacker-controlled properties. Attackers can exploit PHP object injection through crafted serialized payloads to trigger gadget chains and achieve database manipulation or code execution.

Weakness
CWE-502
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.