# 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.

- **Severity:** High 8.8 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H`)
- **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:** Yes
- **Published:** 24 Feb 2026
- **Updated:** 24 Feb 2026
- **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

## 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 (Improper Neutralization of Special Elements used in an OS Command)

## Which versions are affected by CVE-2026-26331?

3 open source packages ship an affected version, including yt-dlp. It affects 1 product.


| Package | Ecosystem | 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: Yt-Dlp Project Yt-Dlp.

## How do I fix CVE-2026-26331?

Upgrade yt-dlp to 2026.02.21 or later.

## 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:

- Proof of Concept for an arbitrary command injection vulnerability in yt-dlp’s --netrc-cmd option (GHSA-g3gw-q23r-pgqm / CVE-2026-26331). Demonstrates shell command execution via maliciously crafted URLs in affected versions (≥ 2023.06.21, < 2026.02.21). (github_poc): https://github.com/dxlerYT/CVE-2026-26331

## Other vulnerabilities in yt-dlp

- [CVE-2024-22423](https://insights.sbomify.com/CVE-2024-22423/): yt-dlp `--exec` command injection when using `%q` in yt-dlp on Windows (high 8.4)
- [CVE-2023-40581](https://insights.sbomify.com/CVE-2023-40581/): yt-dlp command injection when using `%q` in `--exec` on Windows (high 8.4)
- [CVE-2026-50023](https://insights.sbomify.com/CVE-2026-50023/): yt-dlp: Dangerous file type creation via insufficient filename sanitization (Bypass of CVE-2024-38519) (high 8.3)
- [CVE-2026-50574](https://insights.sbomify.com/CVE-2026-50574/): yt-dlp: Arbitrary code execution via manifest downloads with aria2c (high 8.3)
- [CVE-2026-55404](https://insights.sbomify.com/CVE-2026-55404/): yt-dlp: Downstream command injection via improper sanitization of yt-dlp --write-link output (high 7.5)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-26331 and fix it if it is affected.

What it is: 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.
Exploitation: There is no known exploitation of CVE-2026-26331 in the wild and no public exploit code.

Affected packages and fixed versions:
- yt-dlp (PyPI): affected from 2023.06.21; fixed in 2026.02.21
- yt-dlp (PyPI): affected from 2023.06.21; fixed in 2026.02.21
- yt-dlp (PyPI): affected from 2023.06.21; fixed in 2026.02.21

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-26331/ (Markdown: https://insights.sbomify.com/CVE-2026-26331/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-26331
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-26331
- OSV: https://osv.dev/vulnerability/CVE-2026-26331

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-26331/
Summaries are generated and may contain mistakes; the official description above is the record.
