Skip to main content

yt-dlp-web-ui EUVDEUVD-2026-82640

| CVE-2026-93371 MEDIUM
Command Injection (CWE-77)
2026-09-18 VulDB GHSA-vppc-qfgr-6vg2
5.5
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach exposed yt-dlp-web-ui endpoint
  2. Delivery
    Submit download with malicious params flags
  3. Exploit
    Unsanitized args injected into yt-dlp command
  4. Execution
    yt-dlp executes attacker option (e.g. --exec)
  5. Impact
    Arbitrary command runs as service user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Command injection prevention
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires reachability of the yt-dlp-web-ui download/generic-download feature (the NewGenericDownload code path) and the ability to control the params argument passed to a download job. Per CVSS PR:N/UI:N the attack is remote with no user interaction, but exploitation is limited to instances that are network-exposed AND either run without the app's optional authentication secret or where the attacker already holds a valid session; deployments behind authentication or not exposed to untrusted networks are substantially harder to exploit. Affected: marcopiovanello yt-dlp-web-ui up to v4; fixed by commit c7ad3bd79c7c520a7d17e7f2ba19d962be8e7897 which enforces a flag allowlist.

Impact

This is a genuinely serious flaw whose vendor score understates it. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a remotely reachable, low-complexity, unauthenticated attack, and the exploit-maturity metric E:P plus the description ('The exploit has been disclosed publicly and may be used') confirm publicly available exploit code exists - no KEV listing and no EPSS score are provided. The vendor rated all impacts Low (VC:L/VI:L/VA:L, SC:L/SI:L/SA:L → base 6.9), but the source diff shows why that is optimistic: pre-patch, argsSanitizer was a no-op that returned attacker-supplied params verbatim into the yt-dlp command line, and the fix introduces a strict flag allowlist. Because yt-dlp itself exposes dangerous options such as --exec, --downloader, --postprocessor-args and --paths (all now blocked by the new allowlist), unfiltered argument injection realistically escalates to arbitrary OS command execution as the service user, which is closer to C:H/I:H/A:H than to the Low ratings assigned. Net: treat this as a high real-world priority for anyone exposing yt-dlp-web-ui - public exploit + network vector + likely RCE. The main mitigating uncertainty is authentication: VulDB set PR:N, but yt-dlp-web-ui supports a configurable auth secret, so instances behind authentication or not internet-exposed are materially lower risk - verify your deployment's auth configuration.

Exploit ScenarioDerived

An attacker who can reach the yt-dlp-web-ui download endpoint submits a download request whose params array contains extra yt-dlp flags (e.g. --exec) that the pre-patch argsSanitizer passed through unchanged. When the download job runs, yt-dlp executes the injected option, running an arbitrary OS command on the host. A public exploit for this argument-injection path has been disclosed.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 1.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 18, 2026

Remote command injection in marcopiovanello yt-dlp-web-ui up to v4 lets a remote attacker (CVSS 4.0 vector records PR:N/UI:N, i.e. unauthenticated and no user interaction) abuse the params argument processed by NewGenericDownload in server/internal/downloaders/generic.go to inject arbitrary yt-dlp flags and shell metacharacters into the spawned download command. Publicly available exploit code exists - the flaw was publicly disclosed alongside the CVE, so any network-reachable instance of the generic download feature is a realistic target; there is no indication of confirmed active exploitation (not in CISA KEV). An upstream fix commit (c7ad3bd79c7c520a7d17e7f2ba19d962be8e7897) replaces the previous weak sanitizer with a strict allowlist of yt-dlp flags, but no tagged patched release version is confirmed in the available data, so operators must either track the commit or restrict exposure.

RemediationAI

Apply the upstream fix commit c7ad3bd79c7c520a7d17e7f2ba19d962be8e7897 (https://github.com/marcopiovanello/yt-dlp-web-ui/commit/c7ad3bd79c7c520a7d17e7f2ba19d962be8e7897), which replaces the ineffective argsSanitizer with an allowlist of permitted yt-dlp flags and rejects everything else, along with output-path validation - note that because the fix is delivered as a commit, no tagged fixed release version is confirmed in the available data, so verify whether your deployment builds from a release artifact or from source before claiming patched status. Until the commit is deployed, the most effective compensating controls are: enable the application's optional authentication secret so that the PR:N assumption no longer holds and a valid session is required; and/or avoid exposing the web UI to untrusted networks at all - place it on a loopback/management-only interface or behind a reverse proxy that enforces authentication and restricts source IPs, since the generic download feature is the entire attack surface here. If the generic download capability is not needed, removing or blocking the corresponding endpoint/route eliminates the exposure entirely, at the cost of losing generic (non-site-specific) URL downloads. Blocking only the UI is a partial measure because the underlying command execution still occurs server-side whenever the feature is reachable by any authenticated or unauthenticated caller; restoring any of these controls without the allowlist patch leaves the injection primitive intact.

Affected VersionsENISA

yt-dlp-web-ui v4

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

yt-dlp-web-ui is a Go-based web front end that wraps the yt-dlp media downloader: user-supplied job parameters are assembled into a yt-dlp argument vector and executed by the server process. The vulnerable code path is NewGenericDownload() in server/internal/downloaders/generic.go, which stored attacker-controllable params into the GenericDownloader and handed them to the child process command. The commit diff shows the pre-fix argsSanitizer() in utils.go returned the caller's slice essentially unchanged, so any flag (or injected shell metacharacter embedded in a value) survived sanitization and reached the command invocation - the classic root cause of CWE-77 (Improper Neutralization of Special Elements used in a Command). The fix adds an allowedFlags map enumerating permitted yt-dlp options (format selection, playlist/filtering, download behaviour, subtitles, thumbnails, post-processing, sponsorblock, verbosity) and makes argsSanitizer return an error for any flag not on the list, with NewGenericDownload propagating that error instead of proceeding; the same commit also introduces ErrIsNotSubPath for validating output paths against the configured download directory. CPE data (cpe:2.3:a:marcopiovanello:yt-dlp-web-ui:*:*:*:*:*:*:*:*) confirms a wildcarded version range with no upper bound recorded, matching EUVD's statement that all releases up to and including v4 are affected.

Know when Yt Dlp Web Ui gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 5.5 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:L/SI:L/SA:L/E:P
vuln.today AI 9.8 CRITICAL

Unsanitized args reach yt-dlp allowing --exec-style OS command execution (C/I/A:H); network, low-complexity, no interaction; PR:N per vendor vector though auth is config-dependent.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

Lifecycle Timeline

1
CVSS changed
Sep 18, 2026 - 03:22 NVD
6.9 (MEDIUM) 5.5 (MEDIUM)

DescriptionCVE.org

A security vulnerability has been detected in marcopiovanello yt-dlp-web-ui up to v4. This issue affects the function NewGenericDownload of the file server/internal/downloaders/generic.go. Such manipulation of the argument params leads to command injection. It is possible to launch the attack remotely. The exploit has been disclosed publicly and may be used. The name of the patch is c7ad3bd79c7c520a7d17e7f2ba19d962be8e7897. A patch should be applied to remediate this issue.

Threat Intelligence Overview

EPSS Score
1.4%
Top 30% exploitable
Prevalence
Low
niche self-hosted open-source Go/React web frontend for yt-dlp
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 1.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

29
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +28
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

OS command injection occurs when an application passes unsanitized user input directly into system shell commands.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy