Read the docs
TI-2026-32971 Aliases CVE-2026-45138GHSA-2m69-jmvh-6chr

CI4MS: Stored XSS in Blog Content via Broken `html_purify` Validation Rule

Priority MEDIUM 58CWE-79Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
Required
Attack complexity
Low
Impact type
Cross-site scripting
Confidentiality · integrity · availability
Low · Low · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.

Summary

CI4MS is a CodeIgniter 4-based content management system skeleton. Prior to version 0.31.9.0, the custom `html_purify` validation rule used to sanitize blog post bodies relies on by-reference mutation (`?string &$str`), but CodeIgniter 4's validator passes a local copy of the value, so the sanitized text is silently discarded. The Blog controller writes `$lanData['content']` directly into `blog_langs.content`, and the public template echoes it without escaping — yielding stored XSS executable in any visitor's browser, including the superadmin when previewing or editing posts. Version 0.31.9.0 patches the issue.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00175 7th percentileScored 2026-11-07
Fix Fixed ci4ms (ci4-cms-erp): 0.31.9.0ci4-cms-erp/ci4ms (Packagist): 0.31.9.0

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
ci4-cms-erpci4msbefore 0.31.9.00.31.9.0Patch availableCNA
—ci4-cms-erp/ci4ms (Packagist)before 0.31.9.00.31.9.0Patch availableGHSA-2m69-jmvh-6chr
  • ci4ms Vendorci4-cms-erp Affected before 0.31.9.0 Fixed in 0.31.9.0 Patch available CNA
  • ci4-cms-erp/ci4ms (Packagist) Vendor— Affected before 0.31.9.0 Fixed in 0.31.9.0 Patch available GHSA-2m69-jmvh-6chr

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:ci4-cms-erp:ci4ms:*:*:*:*:*:*:*:*——ci4-cms-erp
  • cpe:2.3:a:ci4-cms-erp:ci4ms:*:*:*:*:*:*:*:* Versions — — ·ci4-cms-erp

Remediation

  • Fix · CNA ci4ms (ci4-cms-erp) Fixed in 0.31.9.0
  • Fix · GHSA-2m69-jmvh-6chr ci4-cms-erp/ci4ms (Packagist) Fixed in 0.31.9.0 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-45138
  2. 2026-10-03 Alias added: GHSA-2m69-jmvh-6chr

References

  • TI-2026-26819 Improper access control in ci4-cms-erp ci4ms CVSS 3.1HIGH 8.8
  • TI-2026-30140 CI4MS: Unrestricted PHP File Upload via Theme Installation Leads to Authenticated Remote Code Execution CVSS 4.0HIGH 8.6
  • TI-2026-29823 ci4ms Theme::upload is vulnerable to Zip Slip leading to RCE CVSS 4.0CRITICAL 9.4
  • TI-2026-29822 ci4ms Backup::restore is vulnerable to Zip Slip leading to RCE CVSS 4.0CRITICAL 9.4
  • TI-2026-28379 CI4MS has an .env CRLF Injection via Unvalidated `host` Parameter in Install Controller CVSS 3.1CRITICAL 9.8
  • TI-2026-27211 Cross-site scripting in ci4-cms-erp ci4ms CVSS 4.0CRITICAL 9.4
See all 35 →

Sources