CVE-2026-113661
### Summary CVE-2026-53606 expanded `allowedSchemesAppliedToAttributes` so named URL attributes (`action`, `formaction`, `data`, `poster`, `background`, later `ping`, `xlink:href`, …) go through `naughtyHref()`. A **URL nested inside `meta` `content`** (`http-equiv=refresh`) is not an attribute name on that list, so the embedded destination is never scheme-checked. Default `allowedTags` still omit `meta`. Same non-default integrator config as 53606: allow `meta` plus `http-equiv` / `content`. On **2.17.7**: ```text sanitizeHtml( '<meta http-equiv="refresh" content="0;url=javascript:alert(1)">', { allowedTags: ['meta'], allowedAttributes: { meta: ['http-equiv', 'content'] } } ) // => <meta http-equiv="refresh" content="0;url=javascript:alert(1)" /> ``` `data:text/html,…` and arbitrary `https:` destinations also survive. `formaction="javascript:…"` (53606) is stripped. Please **Request CVE**. Credit: Finder + Reporter (`adrbogacz`). ### Details `naughtyHref()` only runs when the attribute name is in `allowedSchemesAppliedToAttributes` (`index.js` ~385). Refresh URLs live in a `content` value of the form `0;url=…`, so the gate never fires. Adding `content` to that list wholesale would break ordinary meta `content` (description, viewport). **Fix:** when `http-equiv` is `refresh` (case-insensitive), parse the `; url=` destination and run `naughtyHref('meta', url)`. Drop `content` (or the tag) if the URL is rejected. Leave other `meta` `content` values alone. ### PoC Local `[email protected]`. Output inspection only: ```text node -e ' const sanitize = require("sanitize-html"); const opts = { allowedTags: ["meta"], allowedAttributes: { meta: ["http-equiv", "content"] } }; for (const html of [ "<meta http-equiv=\"refresh\" content=\"0;url=javascript:alert(1)\">", "<meta http-equiv=\"refresh\" content=\"0;url=data:text/html,aaa\">", "<form><button formaction=\"javascript:alert(1)\">x</button></form>", ]) { console.log(html, "=>", sanitize(html, htm
Properties
- Summary
- ApostropheCMS: Incomplete CVE-2026-53606: `meta http-equiv=refresh` `content` still ships `javascript:` / `data:` URLs
- Severity
- medium
- Nvd fetched at
- 2026-10-20T21:14:08.448323+00:00
- Cvss score
- 5.4
- Cvss severity
- MEDIUM
- Retrieved at
- 2026-10-21T01:23:59+00:00
- Ghsa published
- 2026-10-20T18:15:33Z
- Source url
- https://github.com/advisories/GHSA-cv27-6wvh-8x7j
- Ghsa updated
- 2026-10-20T18:15:34Z
- Ghsa id
- GHSA-cv27-6wvh-8x7j
- Last source
- GitHub Advisory Database
- Score
- 5.4
- Cvss version
- 3.1
- Cve id
- CVE-2026-113661
- Cvss vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- First seen by Signal
- 2026-10-20T21:15:35+00:00
- Is ghsa only
- false
- Vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
- Published at
- 2026-10-20T18:17:19.563
- Last modified
- 2026-10-20T19:53:10.247
Related Entities (3)
AFFECTS (1)
HAS_WEAKNESS (1)
VULNERABLE_TO (1)
Explore deeper with Ninja Signal's threat intelligence graph