CVE-2026-34569
Stored XSS in CI4MS Blog Category Title Allows Remote Attack
Publication date: 2026-04-01
Last updated on: 2026-04-06
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| ci4-cms-erp | ci4ms | to 0.31.0.0 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-79 | The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users. |
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
The vulnerability allows an attacker to inject malicious JavaScript payloads that are stored and later executed in various parts of the application, including public-facing and administrative interfaces. This stored cross-site scripting (XSS) can lead to unauthorized access, data theft, or manipulation of sensitive information.
Such security weaknesses can impact compliance with common standards and regulations like GDPR and HIPAA, which require protection of personal data and secure handling of user information to prevent unauthorized access or disclosure.
Failure to properly sanitize and encode user input, resulting in stored XSS, may lead to breaches of confidentiality, integrity, and availability of data, thereby violating these regulatory requirements.
Can you explain this vulnerability to me?
This vulnerability exists in CI4MS, a CodeIgniter 4-based CMS skeleton, prior to version 0.31.0.0. The application does not properly sanitize user-controlled input when creating or editing blog categories. Specifically, an attacker can inject malicious JavaScript code into the category title field. This malicious code is stored on the server and later rendered unsafely on public-facing blog category pages, administrative interfaces, and blog post views without proper output encoding. This leads to a stored cross-site scripting (XSS) vulnerability.
How can this vulnerability impact me? :
The stored cross-site scripting (XSS) vulnerability can have severe impacts. An attacker can execute arbitrary JavaScript code in the context of users visiting the affected pages, potentially leading to theft of sensitive information such as cookies or session tokens, unauthorized actions performed on behalf of users, defacement of the website, or distribution of malware. Given the high CVSS score of 9.9, the vulnerability can compromise confidentiality, integrity, and availability of the affected system.
What immediate steps should I take to mitigate this vulnerability?
The vulnerability is caused by improper sanitization of user input in the category title field, leading to stored cross-site scripting (XSS). The immediate mitigation step is to upgrade the CI4MS application to version 0.31.0.0 or later, where this issue has been patched.
Additionally, reviewing and applying proper output encoding on all user-controlled inputs in blog category pages, administrative interfaces, and blog post views can help prevent exploitation.
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability can be detected by checking for the presence of malicious JavaScript payloads injected into the blog category title fields, especially in versions of CI4MS prior to 0.31.0.0. Key vulnerable endpoints to inspect include /backend/blogs/categories/ and /blog/{id}.
To detect exploitation attempts or presence of the vulnerability, you can search the database or application logs for suspicious scripts such as <img src=x onerror=alert(document.domain)> or other JavaScript event handlers embedded in category titles.
Suggested commands include:
- Using SQL queries to find suspicious scripts in the category title field, for example: SELECT * FROM blog_categories WHERE title LIKE '%<script%' OR title LIKE '%onerror=%';
- Using grep or similar tools on application logs or exported data: grep -i -r '<script' /path/to/application/logs/
- Manually inspecting the vulnerable endpoints in a browser or using tools like curl or wget to fetch the category pages and checking for unencoded JavaScript payloads in the HTML response.
- Example curl command: curl -s https://yourdomain.com/blog/1 | grep -i '<script'