ethyca-fides fides.js DOM-based XSS Vulnerability
A DOM-based XSS vulnerability (CVE-2026-44541) exists in ethyca-fides' fides.js script, allowing arbitrary JavaScript execution in the embedding site's origin via crafted links when HTML-formatted descriptions are enabled.
A DOM-based XSS vulnerability has been identified in fides.js, the script used for rendering consent banners in Fides Enterprise deployments. The vulnerability (CVE-2026-44541) stems from a trust gap between the override mechanism, which allows banner fields like the description text to be modified via URL parameters, JavaScript globals, or cookies, and the HTML-formatted descriptions feature. When the FIDES_PRIVACY_CENTER__ALLOW_HTML_DESCRIPTION flag is enabled, the overridden description is rendered as live HTML without proper server-side sanitization, allowing attackers to inject arbitrary JavaScript code via a crafted link. This issue affects Fides Enterprise deployments using fides.js with HTML-formatted banner descriptions enabled. This allows attackers to execute arbitrary JavaScript code in the embedding site’s origin. The vulnerability was patched in ethyca/fides-privacy-center:2.84.5.
Attack Chain
- An attacker crafts a malicious URL containing JavaScript code within the
fides_descriptionparameter (e.g.,<img src=x onerror="alert(\DOM XSS in fides_description. Origin: ${document.domain}`)">`). - The attacker distributes the malicious URL to potential victims through phishing or other social engineering techniques.
- A victim clicks on the malicious URL, which loads the page where the consent banner is supposed to render.
fides.jsretrieves the malicious JavaScript code from thefides_descriptionparameter in the URL.- Because HTML-formatted descriptions are enabled (
FIDES_PRIVACY_CENTER__ALLOW_HTML_DESCRIPTION=true),fides.jsrenders the malicious JavaScript code as live HTML without sanitization. - The victim’s browser executes the injected JavaScript code within the context of the embedding website’s origin.
- (Optional) The attacker can leverage the XSS vulnerability to set a
fides_descriptioncookie, which persists the payload across all subdomains until the cookie is cleared. - The attacker gains the ability to read and modify data, issue requests, and render malicious content that appears to come from the site.
Impact
Successful exploitation allows the attacker to execute arbitrary JavaScript code within the embedding site’s origin, granting them the same privileges as the site’s own scripts. This could lead to the theft of sensitive user data, modification of website content, redirection of users to malicious sites, or execution of arbitrary actions on behalf of the user. The cookie-based persistence variant increases the impact, as a single click can result in a persistent payload affecting all subdomains until cookies are cleared. The severity is rated HIGH with a CVSS v4 score of 7.0.
Recommendation
- Upgrade to
ethyca-fidesversion 2.84.5 or later, orfidesplusversion 2.84.6, which contain the patch for CVE-2026-44541. - As a workaround, set
FIDES_PRIVACY_CENTER__ALLOW_HTML_DESCRIPTION=falseon the Privacy Center container(s) to disable HTML-formatted descriptions, mitigating the XSS vulnerability. - Deploy the Sigma rule “Detect ethyca-fides fides.js DOM-based XSS Attempt” to identify potential exploitation attempts.
- Monitor web server logs for requests containing the
fides_descriptionparameter with HTML tags or JavaScript code to detect potential exploitation attempts.
Detection coverage 2
Detect ethyca-fides fides.js DOM-based XSS Attempt
highDetects CVE-2026-44541 exploitation attempt — HTTP requests with the `fides_description` parameter containing HTML tags or JavaScript code, indicative of a DOM-based XSS attack against ethyca-fides fides.js.
Detect ethyca-fides fides.js Persistent DOM-based XSS via Cookie
highDetects CVE-2026-44541 exploitation — HTTP requests that include a 'fides_description' cookie containing HTML/JavaScript, indicating a possible persistent DOM-based XSS.
Detection queries are available on the platform. Get full rules →