
概念実証コード。yt-dlpの`--netrc-cmd`オプションを介した任意のコマンドインジェクションを実証し、影響を受けるバージョンにおいてURL内のシェルメタ文字を悪用してコマンドを実行します。
--netrc-cmd を介した任意コマンドインジェクション深刻度: 高 (CVSS 8.8)
影響を受けるソフトウェア: yt-dlp >= 2023.06.21、< 2026.02.21
修正バージョン: 2026.02.21
アドバイザリ: GHSA-g3gw-q23r-pgqm
CVE: CVE-2026-26331
yt-dlp の --netrc-cmd コマンドラインオプション(または Python API パラメータ netrc_cmd)は、悪意を持って細工された URL と組み合わせることで、任意のコマンド実行を達成するために悪用される可能性があります。これにより、攻撃者はユーザーのシステム上で任意のシェルコマンドを実行できます。
--netrc-cmd オプションを使用すると、ログイン資格情報を動的に取得するためにシェルコマンドを実行でき、オプションでプレースホルダー {} を netrc の「machine」値に置き換えることができます。一部の抽出器(例: 、、)ではワイルドカードのホスト名が許可されており、これにはシェル特殊文字が含まれる可能性があります。yt-dlp は を を使用して実行するため、悪意のある URL によって任意のコマンドが注入される可能性があります。
GetCourseRuIETeachableIETeachableCourseIE--netrc-cmdsubprocess.Popen(shell=True)yt-dlp --netrc-cmd "echo {}" "https://;touch /tmp/pwned;#.getcourse.ru/video"
--netrc-cmd または netrc_cmd の使用を避けてください。--netrc-cmd にプレースホルダー({})を渡さないでください。