CVE-2026-26331 yt-dlp: Arbitrary Command Injection when using the `--netrc-cmd` option
Attackers can execute arbitrary commands on user systems via malicious URLs if the --netrc-cmd option is enabled in yt-dlp.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2026-26331?
CVE-2026-26331 is a high-severity command injection vulnerability in yt-dlp, published on 24 Feb 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
yt-dlp is a command-line audio/video downloader. Starting in version 2023.06.21 and prior to version 2026.02.21, when yt-dlp's `--netrc-cmd` command-line option (or `netrc_cmd` Python API parameter) is used, an attacker could achieve arbitrary command injection on the user's system with a maliciously crafted URL. yt-dlp maintainers assume the impact of this vulnerability to be high for anyone who uses `--netrc-cmd` in their command/configuration or `netrc_cmd` in their Python scripts. Even though the maliciously crafted URL itself will look very suspicious to many users, it would be trivial for a maliciously crafted webpage with an inconspicuous URL to covertly exploit this vulnerability via HTTP redirect. Users without `--netrc-cmd` in their arguments or `netrc_cmd` in their scripts are unaffected. No evidence has been found of this exploit being used in the wild. yt-dlp version 2026.02.21 fixes this issue by validating all netrc "machine" values and raising an error upon unexpected input. As a workaround, users who are unable to upgrade should avoid using the `--netrc-cmd` command-line option (or `netrc_cmd` Python API parameter), or they should at least not pass a placeholder (`{}`) in their `--netrc-cmd` argument.
Weakness: CWE-78
Which versions are affected by CVE-2026-26331?
3 open source packages ship an affected version, including yt-dlp. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
yt-dlp PyPI | From 2023.06.21 | 2026.02.21 |
yt-dlp PyPI | From 2023.06.21 | 2026.02.21 |
yt-dlp PyPI | From 2023.06.21 | 2026.02.21 |
Products include Yt-Dlp Project Yt-Dlp.
How do I fix CVE-2026-26331?
Upgrade yt-dlp to 2026.02.21 or later.
Upgrade, and pass arguments to programs as a list instead of through a shell. More about Command injection.
Is CVE-2026-26331 being exploited?
There is no known exploitation of CVE-2026-26331 in the wild and no public exploit code.
Public exploit code: 1 proofs of concept on GitHub.
Other vulnerabilities in yt-dlp
- CVE-2024-22423 yt-dlp `--exec` command injection when using `%q` in yt-dlp on Windows
- CVE-2023-40581 yt-dlp command injection when using `%q` in `--exec` on Windows
- CVE-2026-50023 yt-dlp: Dangerous file type creation via insufficient filename sanitization (Bypass of CVE-2024-38519)
- CVE-2026-50574 yt-dlp: Arbitrary code execution via manifest downloads with aria2c
- CVE-2026-55404 yt-dlp: Downstream command injection via improper sanitization of yt-dlp --write-link output
Sources
Also known as DEBIAN-CVE-2026-26331, GHSA-g3gw-q23r-pgqm, MGASA-2026-0054, PYSEC-2026-3432, ROOT-APP-PYPI-CVE-2026-26331, UBUNTU-CVE-2026-26331.