{"answers":{"affected":"3 open source packages ship an affected version, including yt-dlp. It affects 1 product.","exploited":"There is no known exploitation of CVE-2024-22423 in the wild and no public exploit code.","fix":"Upgrade yt-dlp to 2024.04.09 or later.","what":"CVE-2024-22423 is a high-severity command injection vulnerability in yt-dlp, published on 9 Apr 2024. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link."},"fix_prompt":"Check this codebase for CVE-2024-22423 and fix it if it is affected.\n\nWhat it is: CVE-2024-22423 is a high-severity command injection vulnerability in yt-dlp, published on 9 Apr 2024. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.\nExploitation: There is no known exploitation of CVE-2024-22423 in the wild and no public exploit code.\n\nAffected packages and fixed versions:\n- yt-dlp (PyPI): affected from 2021.04.11; fixed in 2024.04.09\n- yt-dlp (PyPI): affected from 2021.04.11; fixed in 2024.04.09\n- yt-dlp (PyPI): affected from 2021.04.11; fixed in 2024.04.09\n\nTask:\n1. 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.\n2. 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.\n3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.\n4. Run the tests and summarise what changed and why.\n5. If nothing in the project is affected, say so and change nothing.\n\nReference: https://insights.sbomify.com/CVE-2024-22423/ (Markdown: https://insights.sbomify.com/CVE-2024-22423/index.md)","id":"CVE-2024-22423","markdown":"https://insights.sbomify.com/CVE-2024-22423/index.md","name":"CVE-2024-22423","record":{"aliases":["GHSA-hjq6-52gw-2g7p","PYSEC-2026-2066","UBUNTU-CVE-2024-22423","openSUSE-SU-2024:13854-1"],"analysis":{"component_type":"library","fix_type":"upgrade","impacts":["code_execution"],"network_reachable":"yes","non_default_config":true,"product_category":"yt-dlp media downloader","requires_auth":"none","summary":"Attackers can execute arbitrary commands on Windows systems by exploiting insufficient escaping in the --exec option of yt-dlp.","user_interaction":"required","vuln_class":"command_injection"},"analysis_generated_by":"qwen3.8-flash-next","assigner":"GitHub_M","cpe":[{"product":"yt-dlp","vendor":"yt-dlp_project"}],"cvss":{"score":8.4,"severity":"high","source":"cna","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:H","version":"3.1"},"cwes":[{"id":"CWE-78","name":"Improper Neutralization of Special Elements used in an OS Command"}],"description":"yt-dlp is a youtube-dl fork with additional features and fixes. The patch that addressed CVE-2023-40581 attempted to prevent RCE when using `--exec` with `%q` by replacing double quotes with two double quotes. However, this escaping is not sufficient, and still allows expansion of environment variables. Support for output template expansion in `--exec`, along with this vulnerable behavior, was added to `yt-dlp` in version 2021.04.11. yt-dlp version 2024.04.09 fixes this issue by properly escaping `%`. It replaces them with `%%cd:~,%`, a variable that expands to nothing, leaving only the leading percent. It is recommended to upgrade yt-dlp to version 2024.04.09 as soon as possible. Also, always be careful when using `--exec`, because while this specific vulnerability has been patched, using unvalidated input in shell commands is inherently dangerous. For Windows users who are not able to upgrade, avoid using any output template expansion in `--exec` other than `{}` (filepath); if expansion in `--exec` is needed, verify the fields you are using do not contain `\"`, `|` or `\u0026`; and/or instead of using `--exec`, write the info json and load the fields from it instead.","ecosystems":["PyPI","openSUSE:Tumbleweed"],"exploits":{"exploitdb":0,"first_seen":null,"github_poc":0,"max_poc_stars":null,"metasploit":0,"nuclei":0,"refs":[],"tier":"none_known"},"has_fix":true,"headline":"yt-dlp `--exec` command injection when using `%q` in yt-dlp on Windows","id":"CVE-2024-22423","indexable":true,"kev":null,"kind":"cve","links":{"ecosystem":"PyPI","product":null,"products":[],"type":"command_injection","year":"2024"},"n_packages":4,"n_references":7,"next":{"headline":"Cross-Site Request Forgery (CSRF) in github.com/argoproj/argo-cd","id":"CVE-2024-22424"},"packages":[{"ecosystem":"PyPI","fixed":["2024.04.09"],"introduced":["2021.04.11"],"last_affected":[],"package":"yt-dlp","purl":null,"source":"GHSA-hjq6-52gw-2g7p"},{"ecosystem":"PyPI","fixed":["2024.04.09"],"introduced":["2021.04.11"],"last_affected":[],"package":"yt-dlp","purl":"pkg:pypi/yt-dlp","source":"GHSA-hjq6-52gw-2g7p"},{"ecosystem":"PyPI","fixed":["2024.04.09"],"introduced":["2021.04.11"],"last_affected":[],"package":"yt-dlp","purl":"pkg:pypi/yt-dlp","source":"PYSEC-2026-2066"},{"ecosystem":"openSUSE:Tumbleweed","fixed":["2024.04.09-1.1"],"introduced":["0"],"last_affected":[],"package":"yt-dlp","purl":"pkg:rpm/opensuse/yt-dlp\u0026distro=openSUSE%20Tumbleweed","source":"openSUSE-SU-2024:13854-1"}],"prev":{"headline":"Unauthenticated Denial of Service (DOS) attack in AnythingLLM","id":"CVE-2024-22422"},"products":["yt-dlp"],"published":"2024-04-09","related":[{"cvss_score":8.8,"headline":"yt-dlp: Arbitrary Command Injection when using the `--netrc-cmd` option","id":"CVE-2026-26331","kev_date_added":null,"published":"2026-02-24"},{"cvss_score":8.4,"headline":"yt-dlp command injection when using `%q` in `--exec` on Windows","id":"CVE-2023-40581","kev_date_added":null,"published":"2023-09-25"},{"cvss_score":8.3,"headline":"yt-dlp: Dangerous file type creation via insufficient filename sanitization (Bypass of CVE-2024-38519)","id":"CVE-2026-50023","kev_date_added":null,"published":"2026-06-23"},{"cvss_score":8.3,"headline":"yt-dlp: Arbitrary code execution via manifest downloads with aria2c","id":"CVE-2026-50574","kev_date_added":null,"published":"2026-06-23"},{"cvss_score":7.5,"headline":"yt-dlp: Downstream command injection via improper sanitization of yt-dlp --write-link output","id":"CVE-2026-55404","kev_date_added":null,"published":"2026-07-08"},{"cvss_score":7.5,"headline":"yt-dlp allows `--exec` command injection when using placeholder on Windows","id":"CVE-2025-54072","kev_date_added":null,"published":"2025-07-22"}],"sources":[{"class":"attribution","licence":"CVE Terms of Use (MITRE)","name":"CVE List","prefix":"CVE"},{"class":"attribution","licence":"CC BY 4.0","name":"GitHub Advisory Database","prefix":"GHSA"},{"class":"attribution","licence":"CC BY 4.0","name":"PyPA Advisory Database","prefix":"PYSEC"},{"class":"attribution","licence":"CC BY 4.0","name":"SUSE","prefix":"openSUSE"},{"class":"attribution","licence":"US public information, NVD API terms","name":"NVD"},{"class":"attribution","licence":"CWE Terms of Use","name":"CWE (MITRE)"},{"class":"attribution","licence":"FIRST CVSS licence","name":"CVSS (FIRST)"}],"ssvc":{"automatable":"no","exploitation":"none","technical_impact":"partial"},"state":"PUBLISHED","updated":"2025-02-13","vendors":["yt-dlp"]},"summary":"Attackers can execute arbitrary commands on Windows systems by exploiting insufficient escaping in the --exec option of yt-dlp.","url":"https://insights.sbomify.com/CVE-2024-22423/"}