Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious serialized PHP object
-
DeliveryBase64-encode into ci GET parameter
-
ExploitSend request to Comments widget page
-
Executionunserialize() instantiates arbitrary class
-
PersistPOP gadget chain fires via magic methods
-
ImpactAchieve code execution or DB manipulation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the target Cotonti 1.0.0 installation has the Comments plugin enabled and rendering the Comments widget, which reads the |
| Impact | The CVSS 4.0 base score of 9.3 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H) reflects a genuinely severe pre-authentication vulnerability: PHP object injection (CWE-502) reachable over the network with no privileges or user interaction, driven by the Comments plugin passing the base64-decoded |
| Exploit ScenarioDerived | An unauthenticated attacker crafts a malicious serialized PHP object, base64-encodes it, and supplies it as the |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 16, 2026
PHP object injection in the Cotonti 1.0.0 Comments plugin allows unauthenticated, network-reachable attackers to instantiate arbitrary PHP classes with attacker-controlled properties by feeding a crafted base64-encoded payload through the ci GET parameter, which is passed to unserialize() without an allowed_classes restriction. Any default Cotonti 1.0.0 deployment with the Comments plugin enabled and its widget rendering is exposed; no credentials or user interaction are required, and successful gadget-chain abuse can lead to database manipulation or remote code execution. No public exploit code was identified at time of analysis, and there is no confirmed active exploitation (CISA KEV), though the vendor has published an upstream fix via pull request #1889 that hardens the deserialization call.
RemediationAI
The primary fix is the upstream change delivered in Cotonti pull request #1889 (https://github.com/Cotonti/Cotonti/pull/1889): the @unserialize(base64_decode($ci)) call in plugins/comments/inc/CommentsWidget.php must be replaced with @unserialize(base64_decode($ci), ['allowed_classes' => false]) plus the added validation that the decoded value is an array with a string at index 0 and an array at index 1. Because the PR/commit is the confirmed fix artifact and a tagged patched release was not independently confirmed, treat this as "Upstream fix available (PR/commit); released patched version not independently confirmed" - verify whether a tagged Cotonti release containing it exists and deploy it, or apply the one-line hardening manually. Where patching must be deferred, the most reliable compensating control is to disable the Comments plugin entirely, which removes the reachable sink at the cost of losing comment functionality on the site. A narrower alternative is to block or filter requests carrying the ci GET parameter at the WAF/reverse-proxy layer (for example, reject requests to comments endpoints where ci decodes to a serialized object string, i.e. base64 output beginning with Tz/Qz/YT patterns or containing O: class markers); this preserves comments but is bypass-prone and depends on complete coverage of every route that reaches the widget. Disabling the widget rendering specifically is a middle ground but must be validated against plugins/comments/controllers/actions/DisplayAction.php to ensure no alternate path still reaches the unserialize() sink.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
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-502 (Deserialization of Untrusted Data): the Comments widget in plugins/comments/inc/CommentsWidget.php takes the ci GET parameter, base64-decodes it, and passes the result directly into PHP's unserialize(). Because no allowed_classes option is supplied, PHP will reconstruct objects of any class available in the autoloadable codebase, letting an attacker set arbitrary properties on those objects. This is classic PHP object injection (POI); the immediate primitive is controlled object instantiation, which becomes code execution, file manipulation, or database tampering only when a usable POP gadget chain exists in Cotonti's core code or its bundled third-party libraries - that gadget availability is the practical limiting factor on full RCE, though the vulnerable sink itself is unconditionally reachable. The upstream patch in PR #1889 confirms the mechanism by changing the call to @unserialize(base64_decode($ci), ['allowed_classes' => false]) and adding strict post-decode validation requiring an array whose element 0 is a string and element 1 is an array, which both blocks class instantiation and constrains the accepted data shape. The disclosure is tracked under ENISA EUVD-2026-80000.
Know when Cotonti 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
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
Unauthenticated network-reachable unserialize() sink with no user interaction (AV:N/AC:L/PR:N/UI:N); object injection to gadget-chain RCE yields full C/I/A impact on the application host.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
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.
Executive ViewAI
Cotonti 1.0.0 deployments with the Comments plugin enabled and widget rendering active are exposed to a critical vulnerability that could allow attackers to take control of the application or alter its data. This affects default installations and the attack surface is broad because the vulnerability is network-reachable; no public exploit identified at time of analysis. Leadership should prioritize remediation because there is no vendor-released patch identified at time of analysis and successful exploitation could compromise application data and systems.
Disable the Comments plugin or its widget rendering; block or sanitize the ci GET parameter to reject base64-encoded serialized data; restrict network access to Cotonti 1.0.0 instances; deploy WAF rules; monitor logs for object injection attempts; apply upstream PR #1889 hardening if validated.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
SQL injection vulnerability in modules/rss/rss.php in Cotonti before 0.9.14 allows remote attackers to execute arbitrary
Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) lets a remote attacker escalate privileges to administrato
A vulnerability has been found in Cotonti Siena v0.9.25. Affected by this vulnerability is the file /admin.php?m=config&
Cotonti Siena 0.9.19 contains a stored cross-site scripting vulnerability in the admin configuration panel's site title
A stored cross-site scripting (XSS) vulnerability in the Edit Page function of Cotonti CMS v0.9.24 allows authenticated
Unauthenticated attackers can reset the password of any Cotonti account, including administrator accounts, because passw
Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a direct message (DM). Rated medium severity (CVSS
Cotonti Siena 0.9.20 allows admins to conduct stored XSS attacks via a forum post. Rated medium severity (CVSS 4.8), thi
Cross-site request forgery in Cotonti 1.0.0 (commit f43f1fc3) administration configuration handler allows a remote attac
Cross-Site Request Forgery in the Personal File Storage (PFS) module of Cotonti 1.0.0 (commit f43f1fc3) allows remote at
PHP object injection in Cotonti 1.0.0 allows authenticated users with comment-write permissions to pass attacker-control
PHP Object Injection in Cotonti CMS's Comments plugin grants any authenticated member a deserialization primitive reacha
EUVD-2026-80000
GHSA-xv9c-9hwm-jp8g
NVD
CVE.org
EPSS
Exploit-DB