{"id":"CVE-2026-45138","summary":"CI4MS: Stored XSS in Blog Content via Broken `html_purify` Validation Rule","details":"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.","aliases":["GHSA-2m69-jmvh-6chr"],"modified":"2026-07-23T03:56:23.190585678Z","published":"2026-07-19T23:18:51.312Z","database_specific":{"cwe_ids":["CWE-79"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45138.json","cna_assigner":"GitHub_M"},"references":[{"type":"WEB","url":"https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.9.0"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/45xxx/CVE-2026-45138.json"},{"type":"ADVISORY","url":"https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-2m69-jmvh-6chr"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-45138"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/ci4-cms-erp/ci4ms","events":[{"introduced":"0"},{"fixed":"e1aad282cf9ae5395bdce7c7f75f8a9803cee75b"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"0.31.9.0"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["0.31.8.0","0.31.7.0","0.31.6.0","0.31.5.0","0.31.4.0","0.31.3.0","0.31.2.0","0.31.1.0","0.31.0.0","0.28.6.0","0.28.5.0","0.28.4.0","0.28.3.0","0.28.0.0","0.27.0.0","0.26.3.4","0.26.3.3","0.26.3.2","0.26.3.1","0.26.3.0","0.26.2.0","0.26.1.0","0.26.0.0","0.25.3.0","0.25.2.0","0.25.1.0","0.25.0.43","0.25.0.39","0.25.0.30","0.25.0.2","0.25.0.1","0.25.0.0","0.24.0.60","0.24.0.45","0.24.0.42","0.24.0.27","0.24.0.20","0.24.0.19","0.24.0.18","0.24.0.16","0.24.0.0","0.23.1.0","0.23.0.0","0.21.3.7","0.21.3.6","0.21.3.5","0.21.3.4","0.21.3.3","0.21.3.2","0.21.3.1","0.21.3","0.21.2","0.21.1","0.21.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-45138.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N"}]}