{"id":"CVE-2026-111713","kind":"vulnerability","aliases":["CVE-2026-111713"],"related":[],"title":"tarteaucitron.js: cookie-consent script lets markup inject javascript: URLs","description":"tarteaucitron.js before 1.37.0 contains a cross-site scripting vulnerability because getElemAttr resolves 'data-' prefixed attributes while the https-only guard validates the unprefixed attribute. Attackers who can place markup, such as CMS authors, can add data-url with a javascript: URL beside a benign url to execute script in the site's origin via iframe src.","summary":"tarteaucitron.js before 1.37.0 checks the https-only rule on a plain attribute but reads the data-prefixed one, so a javascript: URL slips through. An attacker who can place markup on the page, such as a CMS author, can run script in the site's origin via an iframe src.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cms","cookie-consent","javascript","package","self-hosted"],"not_affected_if":["library-not-used","static-content-only","version-1.37.0-or-later"],"how_to_check":"- Look for `tarteaucitron.js` in the site's `package.json` or loaded script tags and read its version; anything below `1.37.0` is exposed\n- Check whether users or content authors can insert raw HTML containing `data-url` attributes into pages that load the library","fix":"- Upgrade tarteaucitron.js to `1.37.0` or later\n- Until upgraded, restrict who can publish raw HTML on pages that load the consent script","status":"open","published_at":"2026-10-16T18:17:55+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","triaged_at":"2026-10-25T04:18:17+00:00","updated_at":"2026-10-25T04:18:17+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T04:18:17Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade tarteaucitron.js to `1.37.0` or later\n- Until upgraded, restrict who can publish raw HTML on pages that load the consent script","reach":"internet","title":"tarteaucitron.js: cookie-consent script lets markup inject javascript: URLs","impact":"medium","summary":"tarteaucitron.js before 1.37.0 checks the https-only rule on a plain attribute but reads the data-prefixed one, so a javascript: URL slips through. An attacker who can place markup on the page, such as a CMS author, can run script in the site's origin via an iframe src.","category":"package","nicknames":[],"who_cares":["javascript","cms","self-hosted","cookie-consent"],"confidence":0.7,"needs_auth":"yes","worst_case":"script runs in the site's origin, reading cookies and session data","analyst_note":"","how_to_check":"- Look for `tarteaucitron.js` in the site's `package.json` or loaded script tags and read its version; anything below `1.37.0` is exposed\n- Check whether users or content authors can insert raw HTML containing `data-url` attributes into pages that load the library","needs_analyst":false,"not_affected_if":["static-content-only","library-not-used","version-1.37.0-or-later"],"who_is_affected":"Sites that load tarteaucitron.js below 1.37.0 and let someone other than trusted developers place markup on those pages, such as CMS authors or user-generated content. Sites that only serve static code controlled by the team, or that do not use the library, can skip it.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000621,"input_tokens":3354,"output_tokens":572,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-111713':13A,16A '-2026':12A,15A '1.37.0':28B,80C 'add':114C 'attack':53B,104C 'attribut':38B,93C,103C 'author':65B,112C 'benign':124C 'besid':122C 'check':29B 'cms':17B,64B,111C 'consent':4A,20B 'contain':81C 'cooki':3A,19B 'cookie-cons':2A,18B 'cross':84C 'cross-sit':83C 'cve':11A,14A 'data':43B,91C,116C 'data-prefix':42B 'data-url':115C 'execut':127C 'getelemattr':89C 'guard':99C 'host':25B 'https':32B,97C 'https-on':31B,96C 'ifram':76B,135C 'inject':8A 'javascript':9A,21B,48B,120C 'let':6A 'markup':7A,57B,108C 'one':45B 'origin':73B,133C 'packag':22B 'page':60B 'place':56B,107C 'plain':37B 'prefix':44B,92C 'read':40B 'resolv':90C 'rule':34B 'run':67B 'script':5A,68B,86C,128C 'self':24B 'self-host':23B 'site':71B,85C,131C 'slip':50B 'src':77B,136C 'tarteaucitron.js':1A,26B,78C 'unprefix':102C 'url':10A,49B,117C,121C,125C 'valid':100C 'via':74B,134C 'vulner':87C","nicknames":[],"mitigations":[],"who_affected":"Sites that load tarteaucitron.js below 1.37.0 and let someone other than trusted developers place markup on those pages, such as CMS authors or user-generated content. Sites that only serve static code controlled by the team, or that do not use the library, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T18:17:55+00:00","kev":null,"cvss_vector":"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/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","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-111713","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111713","severity":null,"published_at":"2026-10-16T18:17:55+00:00","modified_at":"2026-10-20T16:17:00+00:00","first_seen_at":"2026-10-23T21:57:13+00:00","fetched_at":"2026-10-23T22:28:55+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}