CVE-2024-40631 Information
Description
Plate media is an open source rich-text editor for React. 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 consume the url property directly may also be vulnerable if the URL is not sanitised. The default parsers parseTwitterUrl and parseVideoUrl are not affected. @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. Users are advised to upgrade. Users unable to upgrade should 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.
Reference
https://github.com/udecode/plate/security/advisories/GHSA-h3pq-667x-r789
https://github.com/udecode/plate/commit/1bc0971774fbfb770780c9bdb94746a6f0f196a0
https://stackoverflow.com/a/43467144
Plate
media
is
an
open
source
rich-text
editor
for
React.
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
consume
the
url
property
directly
may
also
be
vulnerable
if
the
URL
is
not
sanitised.
The
default
parsers
parseTwitterUrl
and
parseVideoUrl
are
not
affected.
@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.
Users
are
advised
to
upgrade.
Users
unable
to
upgrade
should
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.