← Back to CVE Explorer

CVE-2026-45138

Full vulnerability record from the local CVENow database.

Description

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.

Severity
MEDIUM
CVSS score
5.4 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-20 00:16:58.363000
Last modified
2026-10-24 20:10:00.137000
View original CVE JSON
{
  "id": "CVE-2026-45138",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-20T00:16:58.363",
  "lastModified": "2026-10-24T20:10:00.137",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "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."
    },
    {
      "lang": "es",
      "value": "CI4MS es un esqueleto de sistema de gestión de contenidos basado en CodeIgniter 4. Antes de la versión 0.31.9.0, la regla de validación personalizada ’html_purify’ utilizada para sanear los cuerpos de las publicaciones de blog se basaba en la mutación por referencia (’?string &$str’), pero el validador de CodeIgniter 4 pasa una copia local del valor, por lo que el texto saneado se descarta silenciosamente. El controlador Blog escribe ’$lanData[’content’]’ directamente en ’blog_langs.content’, y la plantilla pública lo imprime sin escapar - lo que resulta en XSS almacenado ejecutable en el navegador de cualquier visitante, incluyendo al superadministrador al previsualizar o editar publicaciones. La versión 0.31.9.0 corrige el problema."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "ci4-cms-erp",
          "product": "ci4ms",
          "versions": [
            {
              "version": "< 0.31.9.0",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N",
          "baseScore": 5.4,
          "baseSeverity": "MEDIUM",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "REQUIRED",
          "scope": "CHANGED",
          "confidentialityImpact": "LOW",
          "integrityImpact": "LOW",
          "availabilityImpact": "NONE"
        },
        "exploitabilityScore": 2.3,
        "impactScore": 2.7
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-20T13:18:37.167276Z",
          "id": "CVE-2026-45138",
          "options": [
            {
              "exploitation": "poc"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-79"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/ci4-cms-erp/ci4ms/releases/tag/0.31.9.0",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-2m69-jmvh-6chr",
      "source": "[email protected]"
    },
    {
      "url": "https://github.com/ci4-cms-erp/ci4ms/security/advisories/GHSA-2m69-jmvh-6chr",
      "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
    }
  ]
}