CVE-2024-22423 in yt-dlp
요약
\~에 의해 VulDB • 2026. 07. 11.
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`를 사용하는 대신 정보 JSON을 작성하고 해당 파일로부터 필드를 로드하는 방식을 사용하십시오.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.