GitHub Advisoryadvisory · npm

GHSA-h3pq-667x-r789 Plate media plugins has a XSS in media embed element when using custom URL parsers

HIGH Published 2024-07-15 Modified 2024-07-15 Official page ↗
Aliases
CVE-2024-40631
Ecosystem
npm
Packages
@udecode/plate-media
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Weaknesses
CWE-79
Reviewed
2024-07-15

Affected packages

• npm @udecode/plate-media: < 36.0.10 → fixed in 36.0.10

Description

Impact Editors that use `MediaEmbedElement` and pass custom `urlParsers` to the `useMediaState` hook may be vulnerable to XSS if a custom parser allows `javascript:`, `data:` or `vbscript:` URLs to be embedded. Editors that do not use `urlParsers` and instead consume the `url` property directly may also be vulnerable if the URL is not sanitised. The default parsers `parseTwitterUrl` and `parseVideoUrl` are not affected. Examples of vulnerable code: ```tsx const { embed } = useMediaState({ urlParsers: [ // Custom parser that does not use an allowlist or validate the URL protocol (url) => ({ url }), ], }); return ( ); ``` ```tsx const { url } = useMediaState(); return ( ); ``` ```tsx const { url } = element; return ( ); ``` Patches `@udecode/plate-media` 36.0.10 resolves this issue by only allowing HTTP and HTTPS URLs during parsing. This affects only the `embed` property returned from `useMediaState`. In addition, the `url` property returned from `useMediaState` has been renamed to `unsafeUrl` to indicate that it has not been sanitised. The `url` property on `element` is also unsafe, but has not been renamed. If you're using either of these properties directly, you will still need to validate the URL yourself. Workarounds Ensure that any custom `urlParsers` do not allow `javascript:`, `data:` or `vbscript:` URLs to be returned in the `url` property of their return values. If `url` is consumed directly, validate the URL protocol before passing it to the `iframe` element. References How to verify the protocol of a URL: https://stackoverflow.com/a/43467144

Related

Alias · CVE (1)

  • CVE-2024-40631 Plate media is an open source, rich-text editor for React. vulnerability

Weakness · CWE (1)

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

References