GitHub Advisoryadvisory · npm

GHSA-hw62-58pr-7wc5 DOM Expressions has a Cross-Site Scripting (XSS) vulnerability due to improper use of string.replace

HIGH Published 2025-02-25 Modified 2025-02-25 Official page ↗
Aliases
CVE-2025-27108
Ecosystem
npm
Packages
dom-expressions
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
Weaknesses
CWE-116, CWE-79
Reviewed
2025-02-25

Affected packages

• npm dom-expressions: < 0.39.5 → fixed in 0.39.5

Description

> [!NOTE] > This advisory was originally emailed to [email protected] by @nsysean. To sum it up, the use of javascript's `.replace()` opens up to potential XSS vulnerabilities with the special replacement patterns beginning with `$`. Particularly, when the attributes of `Meta` tag from solid-meta are user-defined, attackers can utilise the special replacement patterns, either `$'` or `$\`` to achieve XSS. The solid-meta package has this issue since it uses `useAffect` and context providers, which injects the used assets in the html header. "dom-expressions" uses `.replace()` to insert the assets, which is vulnerable to the special replacement patterns listed above. This effectively means that if the attributes of an asset tag contained user-controlled data, it would be vulnerable to XSS. For instance, there might be meta tags for the open graph protocol in a user profile page, but if attackers set the user query to some payload abusing `.replace()`, then they could execute arbitrary javascript in the victim's web browser. Moreover, it could be stored and cause more problems.

Related

Alias · CVE (1)

  • CVE-2025-27108 dom-expressions is a Fine-Grained Runtime for Performant DOM Rendering. vulnerability

Weakness · CWE (2)

  • CWE-116 Improper Encoding or Escaping of Output weakness
  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References