Summary
CVE-2026-87929 is a critical authentication bypass vulnerability in MaxSite CMS, caused by a hardcoded session encryption key that ships unchanged in every installation. An unauthenticated attacker can forge an administrator session cookie and gain full administrative control of the CMS. The flaw affects MaxSite CMS versions 0.78 through 109.6 and carries a CVSS score of 9.3 (Critical).
Technical details
- Root cause:
application/config/config.phpsets$config['encryption_key']to the literal placeholder value'encryption key', which is never rotated during installation and is therefore identical across all deployments. - The application’s
ci_sessioncookie is validated using HMAC-SHA1 signing with this public key, allowing an attacker to sign a forged, PHP-serialized session array (e.g.,userlogged = "1",users_groups_id = "1") that the server accepts as authentic. - A secondary flaw in
init.phpre-validates session data by passing malformed, attacker-supplied ciphertext (prefixed "MSO-") intomso_de_code(); when decryption fails,openssl_decrypt()returnsfalse, which is cast to0and used in a database query (WHERE users_login = 0 AND users_password = 0), matching the administrator account due to MySQL’s loose string-to-integer comparison. - Attack vector: network, no authentication or user interaction required (AV:N/AC:L/PR:N/UI:N).
- Impact: complete administrative takeover, enabling site defacement, user/account manipulation, configuration changes, and potential arbitrary code execution via administrative template/file features.
Affected software
- MaxSite CMS versions 0.78 through 109.6 (all installations using the default/unchanged encryption key)
Severity
- CVSS v3.1 Base Score: 9.8 (Critical) — Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS v4.0 Score: 9.3 (Critical) — 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 - CWE-321: Use of Hard-coded Cryptographic Key
Mitigation and recommended actions
- Immediate: Upgrade to a MaxSite CMS release beyond 109.6 that generates a unique, randomly-generated
encryption_keyper installation; if no such patched release is available, manually replace the default'encryption key'value inapplication/config/config.phpwith a unique, high-entropy secret and invalidate all existing sessions. - If no patch is available: switch session storage to server-side/database-backed sessions (
sess_use_database = TRUE) instead of cookie-based sessions, and ensure any decrypt/validation routine (e.g.,mso_de_code()) rejects failed decryption results rather than allowing them to flow into database queries. - Restrict administrative panel access at the network layer (e.g., allow-list IPs or require VPN access) as a compensating control until the encryption key is rotated.
- Rotate all administrator credentials and audit for signs of unauthorized administrative access following remediation.
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.
- Named
<meta>tag content (generator):MaxSite CMS

