Summary
CVE-2026-87930 is a PHP object injection (deserialization of untrusted data) vulnerability in MaxSite CMS through version 109.6. The application passes the ci_session cookie directly to PHP’s unserialize() without restricting allowed classes, letting an unauthenticated attacker who can forge a valid session cookie inject arbitrary PHP objects. Depending on gadget classes present in the codebase, this can lead to application state corruption or remote code execution, and the flaw is rated critical.
Technical details
- Root cause:
unserialize()is called on the contents of theci_sessioncookie without theallowed_classesrestriction, permitting arbitrary object instantiation. - Trigger condition: successful exploitation depends on the attacker being able to produce a validly signed session cookie; MaxSite CMS ships with a hardcoded session encryption key that is never changed at install time, which allows an attacker to compute a valid HMAC and forge such a cookie without any credentials.
- Attack vector: network, no authentication or user interaction required — a crafted
ci_sessioncookie is sent in an HTTP request. - Impact: injected objects can trigger PHP magic methods (
__destruct,__wakeup,__toString) during deserialization; if a usable gadget chain exists in the application’s dependencies, this can result in remote code execution. Even without a gadget chain, attackers can corrupt cached options, permission rules, and other session-backed application state.
Affected software
- MaxSite CMS versions 0.78 through 109.6 (inclusive).
Severity
- CVSS v3.1 Base Score: 8.1 (High) —
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS v4.0 Base Score: 9.2 (Critical) —
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: Upgrade to a MaxSite CMS release that patches the
unserialize()call to enforceallowed_classes => false(or equivalent restriction) and that replaces the hardcoded session encryption key with a unique, randomly generated key. Check the vendor repository for the fixed release and apply it. - If no patch is available: Rotate/replace the session encryption key defined in
application/config/config.phpwith a unique, secret, randomly generated value on every installation; review and restrict server-side deserialization logic; consider disabling or reissuing all existing sessions after remediation. - Network mitigations: Block or filter unexpected/malformed
ci_sessioncookie values at a WAF or reverse proxy, and monitor for anomalous session cookie content as an interim compensating control until patched.
How IONIX identifies potentially affected assets
IONIX matches the following signals against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- A named meta tag’s content (
generator):MaxSite CMS

