Skip to main content

tarteaucitron.js CVE-2026-111713

| EUVDEUVD-2026-103005 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-16 VulnCheck GHSA-rfp9-xrhw-w637
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain CMS content-author privileges
  2. Delivery
    Inject element with data-url javascript: URL beside benign url
  3. Exploit
    getElemAttr reads data- attribute, bypassing https guard
  4. Execution
    Payload placed into iframe src
  5. Impact
    Execute arbitrary script in site origin

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the attacker to place markup processed by tarteaucitron.js, specifically an element bearing a 'data-url' or 'data-src' attribute whose value is a javascript: URL supplied alongside a legitimate-looking unprefixed 'url' attribute; getElemAttr resolves the data-prefixed attribute into an iframe src while the https-only regex guard validates the wrong (unprefixed) attribute, so the javascript: scheme is never rejected. Concrete prerequisites: (1) the site runs tarteaucitron.js before version 1.37.0; (2) the attacker holds content-authoring/markup-injection capability such as a CMS author or contributor role (not anonymous - PR:L); and (3) a victim must load the affected page (UI:P). These authoring-privilege and user-interaction requirements meaningfully limit real-world exploitation to multi-author or user-generated-content environments.

Impact

This is a stored/DOM cross-site scripting flaw (CWE-79) rated Medium (CVSS 5.1, vendor 4.0 vector AV:N/AC:L/PR:L/UI:P). The signals are internally consistent and point to a moderate, not critical, priority. Attack vector is network (AV:N) with low complexity (AC:L), but exploitation is gated by two real limiting factors: PR:L means the attacker must already hold a privileged content-authoring role (the description names CMS authors), and UI:P means a victim must load the affected page. Impact is only partial (VC:L/VI:L, no availability), reflecting script execution in the site origin rather than full system compromise. No EPSS score was provided, the CVE is NOT on CISA KEV, and no public exploit code was identified - so there is no evidence of active or widespread exploitation. The primary risk is to multi-author CMS deployments where a low-trust contributor can abuse a confused-deputy validation gap. Because the trigger requires attacker-controlled markup, this behaves more like a privilege-boundary/stored-XSS issue than an anonymous remote RCE; treat it as a routine-to-prompt patch rather than an emergency. Note: the source vector is CVSS 4.0 only; no CVSS 3.1 vector or EPSS was supplied, so cross-framework comparison relies on the single provided 4.0 vector.

Exploit ScenarioDerived

A malicious or compromised CMS author adds a tarteaucitron service element carrying a benign 'url' attribute alongside a 'data-url' (or 'data-src') set to a javascript: URL. Because getElemAttr resolves the data-prefixed attribute while the https-only guard validates the unprefixed one, the javascript: payload bypasses the check and is placed into an iframe src, executing in the site's origin when any visitor loads the page. No public exploit code was identified, though the patch commit publicly reveals the single-line validation mismatch that makes the flaw trivial to reproduce.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 16, 2026

A stored/DOM cross-site scripting flaw in tarteaucitron.js (CWE-79) affects all releases before 1.37.0 and allows an attacker who can place markup on a page - for example a CMS author or contributor - to inject a 'data-url' or 'data-src' attribute holding a javascript: URL next to a benign-looking 'url' attribute. Because getElemAttr resolves the 'data-' prefixed attribute into an iframe src while the https-only regex guard validates the unprefixed attribute, the javascript: scheme is never rejected and the injected script executes in the site's origin. The vendor rates this Medium (CVSS 5.1, 4.0 vector), our independent assessment scores it CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, and there is no public exploit identified at time of analysis; the authoring-privilege (PR:L) and victim-interaction (UI:P/UI:R) prerequisites limit realistic abuse to multi-author or user-generated-content environments.

RemediationAI

Upgrade tarteaucitron.js to vendor-released patch version 1.37.0 (https://github.com/AmauriC/tarteaucitron.js/releases/tag/v1.37.0), which contains upstream fix commit 068653bd47f5d4a493251ca8e15bd2b0be9b544f that makes the https-only guard validate the resolved attribute value; verify the deployed build actually changed, since sites pulling tarteaucitron.min.js from a CDN or a cached self-hosted copy often keep serving the old <1.37.0 bundle, and a diff of https://github.com/AmauriC/tarteaucitron.js/compare/v1.36.0...v1.37.0 can confirm what changed. Where immediate upgrading is not possible, reduce the attack surface by stripping or disallowing 'data-url' and 'data-src' attributes from CMS-author and user-submitted markup (trade-off: legitimate administrator-authored service markup using the data- prefixed form must be re-authored with a plain 'url' attribute and https scheme), by tightening authoring roles so only trusted roles can insert raw HTML (trade-off: reduces editorial flexibility but directly removes the PR:L prerequisite), and by deploying a Content-Security-Policy with a restrictive frame-src/script-src allowlist covering only genuine consent-managed third-party origins (trade-off: an overly strict frame-src will break legitimate embedded services until the allowlist is tuned, and CSP is only a defence-in-depth layer here rather than a complete fix because the payload executes from the site's own origin). Note that the flaw requires markup-placement privilege plus victim interaction, so prioritise multi-author and user-generated-content deployments; no public exploit code and no confirmed active exploitation (CISA KEV) were identified at time of analysis, allowing patch deployment to follow normal change-management cycles.

Affected VersionsENISA

tarteaucitron.js 1.20.1 <1.37.0

Affected Packages

euvd tarteaucitron_js fix: 1.37.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

tarteaucitron.js is a widely deployed French-language cookie-consent / RGPD banner library (vendor AmauriC, distributed on GitHub, npm and CDNs such as jsDelivr) that scans the DOM for service elements, reads their attributes, and lazily creates third-party iframes or scripts after consent. The vulnerable helper getElemAttr() resolves attributes, preferring a 'data-' prefixed variant when present (e.g. 'data-url' over 'url'), and the surrounding https-only validator in tarteaucitron.js (v1.36.0, lines ~2641-2648) was written as if ((attr = 'url' || attr = 'data-url' || attr === 'data-src') && !/^https?:\/\/[^\s]+$/.test(elem.getAttribute(attr))). The flaw is a validation/consumption mismatch: the regex re-reads elem.getAttribute(attr) using the attribute name that was requested rather than the value actually returned by getElemAttr(), so when both 'url' and 'data-url' exist the guard tests the safe https URL while the iframe src is populated from the attacker-controlled 'data-url' containing a javascript: scheme - the class exercise of CWE-79 (improper neutralization of input during web page generation) manifesting as DOM-based XSS. The upstream fix in commit 068653bd47f5d4a493251ca8e15bd2b0be9b544f simply changes the test target from elem.getAttribute(attr) to the resolved 'attribute' variable, so the guard now validates the exact value that will be used. The CPE cpe:2.3:a:amauric:tarteaucitron.js:*:*:*:*:*:*:*:* confirms that every release prior to the 1.37.0 tag is in scope.

Know when Tarteaucitron Js gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 5.1 MEDIUM
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
vuln.today AI 5.4 MEDIUM

Requires an authenticated content-author (PR:L) and a victim page load (UI:R); injected script escapes the library into the visitor's browser context (S:C) with limited confidentiality/integrity and no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Medium
popular open-source GDPR cookie-consent script, common on EU/French sites but not ubiquitous
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy