CVE-2026-72751
Full vulnerability record from the local CVENow database.
Description
CTI-Transmute is affected by a stored cross-site scripting (XSS) vulnerability in the conversion graph used to visualise converted MISP and STIX content. Attacker-controlled values originating from converted CTI data were passed to multiple HTML-parsing sinks in the graph user interface without sufficient neutralisation. In particular, node labels, node sublabels, edge labels, node properties, edge properties, and node types could contain crafted HTML or JavaScript content. The Pivotick graph library renders some of these values through HTML-parsing operations. Consequently, a malicious value such as an HTML element containing an event handler could be interpreted as markup rather than displayed as plain text. The first remediation explicitly notes that Pivotick rendered node and edge labels as HTML and therefore introduced escaping before data was handed to the graph renderer. A separate vulnerable sink was present in the Open raw JSON functionality. The raw object associated with a graph node was inserted into a new document using document.write() and an interpolated HTML string. Crafted JSON content could therefore break out of the intended <pre> element and inject executable markup. The fix replaced this construction with DOM APIs and assigns the JSON using textContent. The initial correction did not cover all Pivotick rendering paths. A subsequent patch addressed additional XSS vectors in the graph properties panel. Values derived from the original CTI object—including property names, property values, hash algorithm names, child attributes, edge properties, and STIX object types—could still reach Pivotick's HTML resolver. According to the patch, Pivotick's tryResolveHTMLElement processes string values using template.innerHTML, allowing malicious markup to execute when a graph node is hovered over or selected. The complete remediation therefore: * HTML-escapes node labels, node sublabels, and edge labels before they are passed to Pivotick. * Restricts graph node type values to a safe identifier character set. * Wraps node and edge property values in DOM elements populated through textContent, preventing Pivotick from treating attacker-controlled strings as HTML. * Replaces the raw-JSON popup's interpolated document.write() with DOM construction and textContent.
View original CVE JSON
{
"id": "CVE-2026-72751",
"sourceIdentifier": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"published": "2026-08-10T14:17:31.553",
"lastModified": "2026-10-24T15:10:00.190",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "CTI-Transmute is affected by a stored cross-site scripting (XSS) vulnerability in the conversion graph used to visualise converted MISP and STIX content.\n\nAttacker-controlled values originating from converted CTI data were passed to multiple HTML-parsing sinks in the graph user interface without sufficient neutralisation. In particular, node labels, node sublabels, edge labels, node properties, edge properties, and node types could contain crafted HTML or JavaScript content.\n\nThe Pivotick graph library renders some of these values through HTML-parsing operations. Consequently, a malicious value such as an HTML element containing an event handler could be interpreted as markup rather than displayed as plain text. The first remediation explicitly notes that Pivotick rendered node and edge labels as HTML and therefore introduced escaping before data was handed to the graph renderer.\n\nA separate vulnerable sink was present in the Open raw JSON functionality. The raw object associated with a graph node was inserted into a new document using document.write() and an interpolated HTML string. Crafted JSON content could therefore break out of the intended <pre> element and inject executable markup. The fix replaced this construction with DOM APIs and assigns the JSON using textContent.\n\nThe initial correction did not cover all Pivotick rendering paths. A subsequent patch addressed additional XSS vectors in the graph properties panel. Values derived from the original CTI object—including property names, property values, hash algorithm names, child attributes, edge properties, and STIX object types—could still reach Pivotick's HTML resolver. According to the patch, Pivotick's tryResolveHTMLElement processes string values using template.innerHTML, allowing malicious markup to execute when a graph node is hovered over or selected.\n\nThe complete remediation therefore:\n\n * HTML-escapes node labels, node sublabels, and edge labels before they are passed to Pivotick.\n * Restricts graph node type values to a safe identifier character set.\n * Wraps node and edge property values in DOM elements populated through textContent, preventing Pivotick from treating attacker-controlled strings as HTML.\n * Replaces the raw-JSON popup's interpolated document.write() with DOM construction and textContent."
},
{
"lang": "es",
"value": "CTI-Transmute está afectado por una vulnerabilidad de cross-site scripting (XSS) almacenado en el gráfico de conversión utilizado para visualizar contenido MISP y STIX convertido.\n\nValores controlados por el atacante, originados de datos CTI convertidos, fueron pasados a múltiples sumideros de análisis HTML en la interfaz de usuario del gráfico sin neutralización suficiente. En particular, las etiquetas de nodo, subetiquetas de nodo, etiquetas de borde, propiedades de nodo, propiedades de borde y tipos de nodo podrían contener contenido HTML o JavaScript manipulado.\n\nLa biblioteca de gráficos Pivotick renderiza algunos de estos valores a través de operaciones de análisis HTML. En consecuencia, un valor malicioso, como un elemento HTML que contiene un gestor de eventos, podría interpretarse como marcado en lugar de mostrarse como texto sin formato. La primera remediación señala explícitamente que Pivotick renderizaba las etiquetas de nodo y borde como HTML y, por lo tanto, introdujo el escape antes de que los datos fueran entregados al renderizador de gráficos.\n\nUn sumidero vulnerable separado estaba presente en la funcionalidad ’Abrir JSON sin procesar’. El objeto sin procesar asociado con un nodo de gráfico se insertó en un nuevo documento utilizando document.write() y una cadena HTML interpolada. El contenido JSON manipulado podría, por lo tanto, escapar del elemento [pre] previsto e inyectar marcado ejecutable. La corrección reemplazó esta construcción con APIs DOM y asigna el JSON usando textContent.\n\nLa corrección inicial no cubrió todas las rutas de renderizado de Pivotick. Un parche posterior abordó vectores XSS adicionales en el panel de propiedades del gráfico. Los valores derivados del objeto CTI original -incluyendo nombres de propiedades, valores de propiedades, nombres de algoritmos hash, atributos secundarios, propiedades de borde y tipos de objeto STIX- aún podían alcanzar el resolvedor HTML de Pivotick. Según el parche, tryResolveHTMLElement de Pivotick procesa valores de cadena utilizando template.innerHTML, permitiendo que el marcado malicioso se ejecute cuando un nodo de gráfico es sobrevolado o seleccionado.\n\nLa remediación completa, por lo tanto:\n\n * Escapa HTML las etiquetas de nodo, subetiquetas de nodo y etiquetas de borde antes de que se pasen a Pivotick.\n * Restringe los valores de tipo de nodo de gráfico a un conjunto de caracteres de identificador seguro.\n * Envuelve los valores de propiedades de nodo y borde en elementos DOM rellenados a través de textContent, evitando que Pivotick trate las cadenas controladas por el atacante como HTML.\n * Reemplaza el document.write() interpolado de la ventana emergente de JSON sin procesar con construcción DOM y textContent."
}
],
"affected": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"affectedData": [
{
"vendor": "misp",
"product": "cti-transmute",
"defaultStatus": "unaffected",
"repo": "https://github.com/MISP/cti-transmute",
"versions": [
{
"version": "0",
"lessThanOrEqual": "1.4.0",
"versionType": "semver",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"baseScore": 5.1,
"baseSeverity": "MEDIUM",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"privilegesRequired": "NONE",
"userInteraction": "ACTIVE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW",
"vulnAvailabilityImpact": "NONE",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-08-10T17:54:12.313929Z",
"id": "CVE-2026-72751",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-79"
}
]
}
],
"references": [
{
"url": "https://github.com/MISP/cti-transmute/commit/b50451a746c9959efa508aeaa4a822d122687e35",
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8"
},
{
"url": "https://github.com/MISP/cti-transmute/commit/d34ccac5d82a642389390187fb3455112cbce886",
"source": "5a6e4751-2f3f-4070-9419-94fb35b644e8"
}
]
}