CVE-2026-73159 (GCVE-0-2026-73159)
Vulnerability from cvelistv5
Published
2026-08-11 08:45
Modified
2026-08-11 13:03
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-79 - Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting')
Summary
Affected versions of cti-transmute allow a tag's icon value to be stored and later interpolated into HTML through Vue's v-html. The helper mapIcon() previously constructed an HTML string directly from the icon value:
<i class="fas fa-${name}"></i>
Because the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer's browser.
The patch mitigates the issue at multiple layers: v-html is replaced with Vue :class binding, mapIcon() now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict [a-z0-9-]{1,40} slug pattern before storing them.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| MISP | cti-transmute |
Version: 0 ≤ 1.4.0 |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-73159",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-08-11T13:02:58.398751Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-08-11T13:03:25.189Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "cti-transmute",
"repo": "https://github.com/MISP/cti-transmute",
"vendor": "MISP",
"versions": [
{
"lessThanOrEqual": "1.4.0",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Jeroen Pinoy"
},
{
"lang": "en",
"type": "remediation developer",
"value": "Christian Studer"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eAffected versions of cti-transmute allow a tag\u0027s \u003ccode\u003eicon\u003c/code\u003e value to be stored and later interpolated into HTML through Vue\u0027s \u003ccode\u003ev-html\u003c/code\u003e. The helper \u003ccode\u003emapIcon()\u003c/code\u003e previously constructed an HTML string directly from the icon value:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e\u0026lt;i class=\"fas fa-${name}\"\u0026gt;\u0026lt;/i\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003eBecause the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer\u0027s browser.\u003c/p\u003e\n\u003cp\u003eThe patch mitigates the issue at multiple layers: \u003ccode\u003ev-html\u003c/code\u003e is replaced with Vue \u003ccode\u003e:class\u003c/code\u003e binding, \u003ccode\u003emapIcon()\u003c/code\u003e now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict \u003ccode\u003e[a-z0-9-]{1,40}\u003c/code\u003e slug pattern before storing them.\u003c/p\u003e"
}
],
"value": "Affected versions of cti-transmute allow a tag\u0027s icon value to be stored and later interpolated into HTML through Vue\u0027s v-html. The helper mapIcon() previously constructed an HTML string directly from the icon value:\n\n\n\u003ci class=\"fas fa-${name}\"\u003e\u003c/i\u003e\n\n\nBecause the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer\u0027s browser.\n\n\nThe patch mitigates the issue at multiple layers: v-html is replaced with Vue :class binding, mapIcon() now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict [a-z0-9-]{1,40} slug pattern before storing them."
}
],
"impacts": [
{
"capecId": "CAPEC-63",
"descriptions": [
{
"lang": "en",
"value": "CAPEC-63 Cross-Site Scripting (XSS)"
}
]
}
],
"metrics": [
{
"cvssV4_0": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 5.1,
"baseSeverity": "MEDIUM",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"subIntegrityImpact": "LOW",
"userInteraction": "PASSIVE",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-79",
"description": "CWE-79 Improper Neutralization of Input During Web Page Generation (XSS or \u0027Cross-site Scripting\u0027)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-08-11T08:45:59.398Z",
"orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"shortName": "CIRCL"
},
"references": [
{
"tags": [
"patch"
],
"url": "https://github.com/MISP/cti-transmute/commit/cc13416d606d91d543ce1f1e41387750f8450153"
}
],
"source": {
"discovery": "UNKNOWN"
},
"title": "cti-transmute Stored XSS via Crafted Tag Icon on Admin Triage Interface",
"x_generator": {
"engine": "Vulnogram 0.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
"assignerShortName": "CIRCL",
"cveId": "CVE-2026-73159",
"datePublished": "2026-08-11T08:45:59.398Z",
"dateReserved": "2026-08-11T08:45:56.986Z",
"dateUpdated": "2026-08-11T13:03:25.189Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-73159\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-08-11T13:02:58.398751Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-08-11T13:03:10.162Z\"}}], \"cna\": {\"title\": \"cti-transmute Stored XSS via Crafted Tag Icon on Admin Triage Interface\", \"source\": {\"discovery\": \"UNKNOWN\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Jeroen Pinoy\"}, {\"lang\": \"en\", \"type\": \"remediation developer\", \"value\": \"Christian Studer\"}], \"impacts\": [{\"capecId\": \"CAPEC-63\", \"descriptions\": [{\"lang\": \"en\", \"value\": \"CAPEC-63 Cross-Site Scripting (XSS)\"}]}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"Safety\": \"NOT_DEFINED\", \"version\": \"4.0\", \"Recovery\": \"NOT_DEFINED\", \"baseScore\": 5.1, \"Automatable\": \"NOT_DEFINED\", \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"valueDensity\": \"NOT_DEFINED\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N\", \"providerUrgency\": \"NOT_DEFINED\", \"userInteraction\": \"PASSIVE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"LOW\", \"subIntegrityImpact\": \"LOW\", \"vulnIntegrityImpact\": \"LOW\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"LOW\", \"vulnConfidentialityImpact\": \"LOW\", \"vulnerabilityResponseEffort\": \"NOT_DEFINED\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"https://github.com/MISP/cti-transmute\", \"vendor\": \"MISP\", \"product\": \"cti-transmute\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"1.4.0\"}], \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://github.com/MISP/cti-transmute/commit/cc13416d606d91d543ce1f1e41387750f8450153\", \"tags\": [\"patch\"]}], \"x_generator\": {\"engine\": \"Vulnogram 0.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"Affected versions of cti-transmute allow a tag\u0027s icon value to be stored and later interpolated into HTML through Vue\u0027s v-html. The helper mapIcon() previously constructed an HTML string directly from the icon value:\\n\\n\\n\u003ci class=\\\"fas fa-${name}\\\"\u003e\u003c/i\u003e\\n\\n\\nBecause the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer\u0027s browser.\\n\\n\\nThe patch mitigates the issue at multiple layers: v-html is replaced with Vue :class binding, mapIcon() now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict [a-z0-9-]{1,40} slug pattern before storing them.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eAffected versions of cti-transmute allow a tag\u0027s \u003ccode\u003eicon\u003c/code\u003e value to be stored and later interpolated into HTML through Vue\u0027s \u003ccode\u003ev-html\u003c/code\u003e. The helper \u003ccode\u003emapIcon()\u003c/code\u003e previously constructed an HTML string directly from the icon value:\u003c/p\u003e\\n\u003cp\u003e\u003ccode\u003e\u0026lt;i class=\\\"fas fa-${name}\\\"\u0026gt;\u0026lt;/i\u0026gt;\u003c/code\u003e\u003c/p\u003e\\n\u003cp\u003eBecause the icon is user-supplied, a crafted value could break out of the intended markup and inject attacker-controlled HTML. When the affected tag was later rendered, including on the administrative triage interface, the payload could execute in the viewer\u0027s browser.\u003c/p\u003e\\n\u003cp\u003eThe patch mitigates the issue at multiple layers: \u003ccode\u003ev-html\u003c/code\u003e is replaced with Vue \u003ccode\u003e:class\u003c/code\u003e binding, \u003ccode\u003emapIcon()\u003c/code\u003e now returns only a constrained FontAwesome class string, and the backend validates icons against the FontAwesome catalogue or a strict \u003ccode\u003e[a-z0-9-]{1,40}\u003c/code\u003e slug pattern before storing them.\u003c/p\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-79\", \"description\": \"CWE-79 Improper Neutralization of Input During Web Page Generation (XSS or \u0027Cross-site Scripting\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"5a6e4751-2f3f-4070-9419-94fb35b644e8\", \"shortName\": \"CIRCL\", \"dateUpdated\": \"2026-08-11T08:45:59.398Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-73159\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-11T13:03:25.189Z\", \"dateReserved\": \"2026-08-11T08:45:56.986Z\", \"assignerOrgId\": \"5a6e4751-2f3f-4070-9419-94fb35b644e8\", \"datePublished\": \"2026-08-11T08:45:59.398Z\", \"assignerShortName\": \"CIRCL\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…