{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-71502",
        "assignerOrgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
        "state": "PUBLISHED",
        "assignerShortName": "CIRCL",
        "dateReserved": "2026-08-06T20:29:59.894Z",
        "datePublished": "2026-08-06T20:30:04.442Z",
        "dateUpdated": "2026-08-08T21:05:36.527Z"
    },
    "containers": {
        "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": "<p>CTI-Transmute contains a stored cross-site scripting vulnerability caused by insufficient neutralization of Vue template expression delimiters in server-rendered user-controlled data.</p><p>An unauthenticated attacker can create a public conversion whose name or description contains a malicious Vue expression using the application's configured <code>[[ ... ]]</code> delimiters. User profile names may provide an additional injection vector. Although Jinja HTML escaping is applied, the resulting value is subsequently included in a DOM region compiled by Vue.</p><p>Vue interprets the attacker-controlled value as a template expression rather than ordinary text. By accessing the JavaScript <code>Function</code> constructor from within the expression, an attacker can execute arbitrary JavaScript in the security context of the CTI-Transmute origin. The application's nonce-based Content Security Policy does not prevent exploitation because the Vue runtime compiler requires the <code>unsafe-eval</code> policy exception.</p><p>The malicious payload is stored by the application and executed whenever another user opens an affected page, such as the public conversion detail page. The victim may be a normal user or an administrator. Successful exploitation could allow the attacker to:</p><ul><li>Access data available to the victim through the application.</li><li>Extract API keys, tokens, or other sensitive information exposed to the page.</li><li>Perform authenticated actions using the victim's session.</li><li>Modify conversions or other application data.</li><li>Escalate the impact by targeting an administrator.</li></ul><p>A demonstrated payload can use <code>[].constructor.constructor(...)</code> to obtain the JavaScript <code>Function</code> constructor and execute arbitrary code. The regression tests also show that a short first-stage payload could retrieve an uncapped conversion description and evaluate a larger second-stage payload.</p><p>The patch addresses the vulnerability by registering a global Jinja <code>finalize</code> hook that inserts a zero-width Unicode word joiner inside every Vue delimiter found in server-rendered values. This prevents Vue from recognizing the values as template expressions while preserving their visible representation.</p><br>"
                        }
                    ],
                    "value": "CTI-Transmute contains a stored cross-site scripting vulnerability caused by insufficient neutralization of Vue template expression delimiters in server-rendered user-controlled data.\n\nAn unauthenticated attacker can create a public conversion whose name or description contains a malicious Vue expression using the application's configured [[ ... ]] delimiters. User profile names may provide an additional injection vector. Although Jinja HTML escaping is applied, the resulting value is subsequently included in a DOM region compiled by Vue.\n\nVue interprets the attacker-controlled value as a template expression rather than ordinary text. By accessing the JavaScript Function constructor from within the expression, an attacker can execute arbitrary JavaScript in the security context of the CTI-Transmute origin. The application's nonce-based Content Security Policy does not prevent exploitation because the Vue runtime compiler requires the unsafe-eval policy exception.\n\nThe malicious payload is stored by the application and executed whenever another user opens an affected page, such as the public conversion detail page. The victim may be a normal user or an administrator. Successful exploitation could allow the attacker to:\n\n  *  Access data available to the victim through the application.\n  *  Extract API keys, tokens, or other sensitive information exposed to the page.\n  *  Perform authenticated actions using the victim's session.\n  *  Modify conversions or other application data.\n  *  Escalate the impact by targeting an administrator.\n\n\nA demonstrated payload can use [].constructor.constructor(...) to obtain the JavaScript Function constructor and execute arbitrary code. The regression tests also show that a short first-stage payload could retrieve an uncapped conversion description and evaluate a larger second-stage payload.\n\nThe patch addresses the vulnerability by registering a global Jinja finalize hook that inserts a zero-width Unicode word joiner inside every Vue delimiter found in server-rendered values. This prevents Vue from recognizing the values as template expressions while preserving their visible representation."
                }
            ],
            "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": "NONE",
                        "providerUrgency": "NOT_DEFINED",
                        "subAvailabilityImpact": "NONE",
                        "subConfidentialityImpact": "LOW",
                        "subIntegrityImpact": "LOW",
                        "userInteraction": "ACTIVE",
                        "valueDensity": "NOT_DEFINED",
                        "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/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 'Cross-site Scripting')",
                            "lang": "en",
                            "type": "CWE"
                        }
                    ]
                },
                {
                    "descriptions": [
                        {
                            "cweId": "CWE-1336",
                            "description": "CWE-1336",
                            "lang": "en",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "providerMetadata": {
                "orgId": "5a6e4751-2f3f-4070-9419-94fb35b644e8",
                "shortName": "CIRCL",
                "dateUpdated": "2026-08-08T21:05:36.527Z"
            },
            "references": [
                {
                    "tags": [
                        "patch"
                    ],
                    "url": "https://github.com/MISP/cti-transmute/commit/ecfdaef63860a071c6f07afd30156ca77a77ad2b"
                },
                {
                    "tags": [
                        "patch"
                    ],
                    "url": "https://github.com/MISP/cti-transmute/commit/522fa8ff8223b12a6128ea3fc2344a77b7b9108d"
                },
                {
                    "tags": [
                        "patch"
                    ],
                    "url": "https://github.com/MISP/cti-transmute/commit/ad8bf2b8031491cefb552314ef7ff6f4148ca95a"
                },
                {
                    "tags": [
                        "patch"
                    ],
                    "url": "https://github.com/MISP/cti-transmute/commit/4f43c9181a00262bec2a6dfbc9ff9c50d534e918"
                }
            ],
            "source": {
                "discovery": "UNKNOWN"
            },
            "title": "Unauthenticated Stored Vue Template Injection Leads to Cross-Site Scripting in CTI-Transmute",
            "x_generator": {
                "engine": "Vulnogram 0.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "timestamp": "2026-08-07T13:57:26.854958Z",
                                "id": "CVE-2026-71502",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "role": "CISA Coordinator",
                                "version": "2.0.3"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2026-08-07T13:57:37.626Z"
                }
            }
        ]
    }
}