CVE-2023-35934 Information
Description
yt-dlp is a command-line program to download videos from video sites. During file downloads yt-dlp or the external downloaders that yt-dlp employs may leak cookies on HTTP redirects to a different host or leak them when the host for download fragments differs from their parent manifest’s host. This vulnerable behavior is present in yt-dlp prior to 2023.07.06 and nightly 2023.07.06.185519. All native and external downloaders are affected except for curl and httpie (version 3.1.0 or later).
At the file download stage all cookies are passed by yt-dlp to the file downloader as a Cookie header thereby losing their scope. This also occurs in yt-dlp’s info JSON output which may be used by external tools. As a result the downloader or external tool may indiscriminately send cookies with requests to domains or paths for which the cookies are not scoped.
yt-dlp version 2023.07.06 and nightly 2023.07.06.185519 fix this issue by removing the Cookie header upon HTTP redirects; having native downloaders calculate the Cookie header from the cookiejar utilizing external downloaders’ built-in support for cookies instead of passing them as header arguments disabling HTTP redirectiong if the external downloader does not have proper cookie support processing cookies passed as HTTP headers to limit their scope and having a separate field for cookies in the info dict storing more information about scoping
Some workarounds are available for those who are unable to upgrade. Avoid using cookies and user authentication methods. While extractors may set custom cookies these usually do not contain sensitive information. Alternatively avoid using --load-info-json. Or if authentication is a must: verify the integrity of download links from unknown sources in browser (including redirects) before passing them to yt-dlp; use curl as external downloader since it is not impacted; and/or avoid fragmented formats such as HLS/m3u8 DASH/mpd and ISM.
Reference
https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/tag/2023.07.06.185519
https://github.com/yt-dlp/yt-dlp/commit/3121512228487c9c690d3d39bfd2579addf96e07
https://github.com/yt-dlp/yt-dlp/commit/f8b4bcc0a791274223723488bfbfc23ea3276641
https://github.com/yt-dlp/yt-dlp/security/advisories/GHSA-v8mc-9377-rwjj
https://github.com/yt-dlp/yt-dlp/commit/1ceb657bdd254ad961489e5060f2ccc7d556b729
https://github.com/yt-dlp/yt-dlp/releases/tag/2023.07.06
yt-dlp
is
a
command-line
program
to
download
videos
from
video
sites.
During
file
downloads
yt-dlp
or
the
external
downloaders
that
yt-dlp
employs
may
leak
cookies
on
HTTP
redirects
to
a
different
host
or
leak
them
when
the
host
for
download
fragments
differs
from
their
parent
manifest’s
host.
This
vulnerable
behavior
is
present
in
yt-dlp
prior
to
2023.07.06
and
nightly
2023.07.06.185519.
All
native
and
external
downloaders
are
affected
except
for
curl
and
[***httpie***](httpie`)
(version
3.1.0
or
later).
At
the
file
download
stage
all
cookies
are
passed
by
yt-dlp
to
the
file
downloader
as
a
Cookie
header
thereby
losing
their
scope.
This
also
occurs
in
yt-dlp’s
info
JSON
output
which
may
be
used
by
external
tools.
As
a
result
the
downloader
or
external
tool
may
indiscriminately
send
cookies
with
requests
to
domains
or
paths
for
which
the
cookies
are
not
scoped.
yt-dlp
version
2023.07.06
and
nightly
2023.07.06.185519
fix
this
issue
by
removing
the
Cookie
header
upon
HTTP
redirects;
having
native
downloaders
calculate
the
Cookie
header
from
the
cookiejar
utilizing
external
downloaders'
built-in
support
for
cookies
instead
of
passing
them
as
header
arguments
disabling
HTTP
redirectiong
if
the
external
downloader
does
not
have
proper
cookie
support
processing
cookies
passed
as
HTTP
headers
to
limit
their
scope
and
having
a
separate
field
for
cookies
in
the
info
dict
storing
more
information
about
scoping
Some
workarounds
are
available
for
those
who
are
unable
to
upgrade.
Avoid
using
cookies
and
user
authentication
methods.
While
extractors
may
set
custom
cookies
these
usually
do
not
contain
sensitive
information.
Alternatively
avoid
using
--load-info-json.
Or
if
authentication
is
a
must:
verify
the
integrity
of
download
links
from
unknown
sources
in
browser
(including
redirects)
before
passing
them
to
yt-dlp;
use
curl
as
external
downloader
since
it
is
not
impacted;
and/or
avoid
fragmented
formats
such
as
HLS/m3u8
DASH/mpd
and
ISM.