GitHub Advisoryadvisory · npm

GHSA-2rwj-7xq8-4gx4 Qwik has a potential mXSS vulnerability due to improper HTML escaping

MEDIUM Published 2024-08-06 Modified 2024-08-06 Official page ↗
Aliases
CVE-2024-41677
Ecosystem
npm
Packages
@builder.io/qwik
Severity
Moderate
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L
Weaknesses
CWE-79
Reviewed
2024-08-06

Affected packages

• npm @builder.io/qwik: < 1.7.3 → fixed in 1.7.3

Description

Summary A potential mXSS vulnerability exists in Qwik for versions up to 1.6.0. Details Qwik improperly escapes HTML on server-side rendering. It converts strings according to the following rules: https://github.com/QwikDev/qwik/blob/v1.5.5/packages/qwik/src/core/render/ssr/render-ssr.ts#L1182-L1208 • If the string is an attribute value: • `"` -> `&quot;` • `&` -> `&amp;` • Other characters -> No conversion • Otherwise: • ` `&lt;` • `>` -> `&gt;` • `&` -> `&amp;` • Other characters -> No conversion It sometimes causes the situation that the final DOM tree rendered on browsers is different from what Qwik expects on server-side rendering. This may be leveraged to perform XSS attacks, and a type of the XSS is known as mXSS (mutation XSS). PoC A vulnerable component: ```javascript import { component$ } from "@builder.io/qwik"; import { useLocation } from "@builder.io/qwik-city"; export default component$(() => { // user input const { url } = useLocation(); const href = url.searchParams.get("href") ?? "https://example.com"; return ( test ); }); ``` If a user accesses the following URL, ``` http://localhost:4173/?href=alert(123) ``` then, `alert(123)` will be executed. Impact XSS

Related

Alias · CVE (1)

  • CVE-2024-41677 Qwik is a performance focused javascript framework. vulnerability

Weakness · CWE (1)

  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References