CVE-2023-40581 in yt-dlp
요약
\~에 의해 VulDB • 2026. 05. 27.
yt-dlp는 추가 기능과 수정 사항이 포함된 youtube-dl의 포크입니다. yt-dlp는 `--exec` 플래그를 통해 다운로드 단계의 다양한 시점에서 실행될 셸 명령줄을 사용자가 제공할 수 있게 합니다. 이 플래그는 인수에서 출력 템플릿 확장을 허용하므로, 메타데이터 값을 셸 명령에서 사용할 수 있습니다. 메타데이터 필드는 `%q` 변환과 결합될 수 있으며, 이는 이러한 값을 인용/이스케이프하여 셸에 안전하게 전달할 수 있도록 하기 위한 것입니다. 그러나 Windows에서 Python의 `subprocess`가 사용하는 셸인 `cmd`에 사용되는 이스케이프 처리는 특수 문자를 적절하게 이스케이프하지 못하므로, `--exec`가 악의적으로 조작된 원격 데이터와 직접 함께 사용될 경우 원격 코드 실행(RCE)이 가능해질 수 있습니다. 이 취약점은 Windows 환경의 `yt-dlp`에만 영향을 미치며, `yt-dlp`가 `cmd` 또는 `PowerShell`에서 실행되는지와는 무관하게 취약점이 존재합니다. `--exec`에서의 출력 템플릿 확장과 이 취약한 동작은 버전 2021.04.11에서 `yt-dlp`에 추가되었습니다. yt-dlp 버전 2023.09.24는 각 특수 문자를 적절하게 이스케이프함으로써 이 문제를 해결합니다. `\n`은 이를 이스케이프할 방법이 발견되지 않았으므로 `\r`로 대체됩니다. yt-dlp를 가능한 한 빨리 버전 2023.09.24로 업그레이드하는 것이 권장됩니다. 또한 `--exec` 사용 시 항상 주의하십시오. 이 특정 취약점은 패치되었지만, 셸 명령에서 검증되지 않은 입력을 사용하는 것은 본질적으로 위험합니다. 업그레이드가 불가능한 Windows 사용자의 경우: 1. `--exec`에서 파일 경로(`{}`) 외의 출력 템플릿 확장을 사용하지 마십시오. 2. `--exec`에서 확장이 필요한 경우, 사용하는 필드에 `"`, `|`, `&`가 포함되어 있지 않은지 확인하십시오. 3. `--exec` 대신 info json을 작성하고 해당 필드를 여기서 로드하는 방식을 사용하십시오.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.