CVE-2026-54025
Full vulnerability record from the local CVENow database.
Description
LibreChat is an enhanced ChatGPT clone that supports multiple AI providers. Prior to 0.8.4-rc1, there is a vulnerability in LibreChat's markdown artifact preview pipeline. The marked library v15.0.12 does not HTML-escape double-quote characters in image alt text when a custom renderer falls through to the default renderer. LibreChat's generateMarkdownHtml function (in client/src/utils/markdown.ts) installs a custom image renderer that returns false for URLs passing the isSafeUrl allowlist check, which causes marked to fall back to its built-in renderer. That built-in renderer inserts the raw alt text into the alt="..." attribute without escaping double-quote characters. An attacker can craft an alt text such as " onload="payload to break out of the attribute and inject an arbitrary event handler. The resulting HTML is then assigned to document.getElementById('content').innerHTML inside the Sandpack preview iframe, causing the payload to execute in the victim's browser. This vulnerability is fixed in 0.8.4-rc1.
View original CVE JSON
{
"id": "CVE-2026-54025",
"sourceIdentifier": "[email protected]",
"published": "2026-06-25T17:16:40.277",
"lastModified": "2026-10-25T22:10:00.150",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "LibreChat is an enhanced ChatGPT clone that supports multiple AI providers. Prior to 0.8.4-rc1, there is a vulnerability in LibreChat's markdown artifact preview pipeline. The marked library v15.0.12 does not HTML-escape double-quote characters in image alt text when a custom renderer falls through to the default renderer. LibreChat's generateMarkdownHtml function (in client/src/utils/markdown.ts) installs a custom image renderer that returns false for URLs passing the isSafeUrl allowlist check, which causes marked to fall back to its built-in renderer. That built-in renderer inserts the raw alt text into the alt=\"...\" attribute without escaping double-quote characters. An attacker can craft an alt text such as \" onload=\"payload to break out of the attribute and inject an arbitrary event handler. The resulting HTML is then assigned to document.getElementById('content').innerHTML inside the Sandpack preview iframe, causing the payload to execute in the victim's browser. This vulnerability is fixed in 0.8.4-rc1."
},
{
"lang": "es",
"value": "LibreChat es un clon mejorado de ChatGPT que soporta múltiples proveedores de IA. Antes de 0.8.4-rc1, existe una vulnerabilidad en la canalización de vista previa de artefactos markdown de LibreChat. La biblioteca marked v15.0.12 no escapa en HTML los caracteres de comillas dobles en el texto alternativo de la imagen cuando un renderizador personalizado recurre al renderizador predeterminado. La función generateMarkdownHtml de LibreChat (en client/src/utils/markdown.ts) instala un renderizador de imágenes personalizado que devuelve falso para las URL que pasan la verificación de la lista de permitidos isSafeUrl, lo que hace que marked recurra a su renderizador incorporado. Ese renderizador incorporado inserta el texto alternativo sin procesar en el atributo alt=’...’ sin escapar los caracteres de comillas dobles. Un atacante puede crear un texto alternativo como “ onload_disabled=”payload para salir del atributo e inyectar un gestor de eventos arbitrario. El HTML resultante se asigna luego a document.getElementById(’content’).innerHTML dentro del iframe de vista previa de Sandpack, haciendo que la carga útil se ejecute en el navegador de la víctima. Esta vulnerabilidad está corregida en 0.8.4-rc1."
}
],
"affected": [
{
"source": "[email protected]",
"affectedData": [
{
"vendor": "danny-avila",
"product": "LibreChat",
"versions": [
{
"version": "< 0.8.4-rc1",
"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-06-25T18:02:07.544932Z",
"id": "CVE-2026-54025",
"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"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:a:librechat:librechat:*:*:*:*:*:*:*:*",
"versionEndIncluding": "0.7.8",
"matchCriteriaId": "98E22E73-154F-48CC-925E-61293CD7CDAB"
}
]
}
]
}
],
"references": [
{
"url": "https://github.com/danny-avila/LibreChat/security/advisories/GHSA-3phr-62qf-cxf3",
"source": "[email protected]",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
]
},
{
"url": "https://github.com/danny-avila/LibreChat/security/advisories/GHSA-3phr-62qf-cxf3",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"tags": [
"Exploit",
"Mitigation",
"Vendor Advisory"
]
}
]
}