VDB
Sign up
MEDIUM6.1

GHSA-5qr2-v392-m9g8

SWC HTML minifier may allow script element breakout when minifying embedded JSON

Quick fix

GHSA-5qr2-v392-m9g8 — @swc/html: upgrade to the fixed version with the command below.

npm install @swc/html@1.15.47-nightly-20260729.1

Details

## Impact

`@swc/html` minifies JSON contained in `script` elements such as `application/json` and `application/ld+json` by parsing and serializing the JSON value.

Before the patched versions, JSON serialization could convert escaped less-than signs such as `\u003C` into literal `<` characters. If the JSON contained an escaped `</script>` sequence, the generated HTML could terminate the containing script element early because HTML tokenization occurs before the JSON is consumed.

Applications that minify HTML containing attacker-controlled JSON data could therefore transform inert data into active markup. A crafted payload could execute script in the origin of the generated page.

## Patches

The issue is fixed in:

- `@swc/html` 1.15.47 - `swc_html_minifier` 59.0.0

The minifier now re-escapes less-than signs after JSON serialization, preserving the script element boundary.

## Workarounds

Users who cannot upgrade can disable JSON minification with:

```js await minify(html, { minifyJson: false, });

Are you affected?

Enter the version of the package you're using.

Affected packages

npm/@swc/html
Introduced in: 0Fixed in: 1.15.47-nightly-20260729.1
Fixnpm install @swc/html@1.15.47-nightly-20260729.1
crates.io/swc_html_minifier
Introduced in: 0Fixed in: 59.0.0

Upgrade swc_html_minifier to 59.0.0 or newer (ecosystem crates.io).

References