
CVE-2023-5217을 위한 libvpx VP8/VP9 코덱 SDK의 개념 증명 저장소로, 힙 버퍼 오버플로 취약점을 시연하며 빌드 및 테스트 벡터 지원을 포함합니다.
README - 2015년 3월 23일
WebM VP8/VP9 코덱 SDK에 오신 것을 환영합니다!
애플리케이션/라이브러리 컴파일: 사용된 빌드 시스템은 autotools와 유사합니다. 일반적으로 빌드는 원하는 빌드 옵션으로 "구성한 후" GNU make를 사용하여 애플리케이션을 빌드하는 것으로 구성됩니다.
* 모든 x86 대상에는 Yasm[1] 어셈블러가 설치되어 있어야 합니다.
* 모든 Windows 빌드에는 Cygwin[2]이 설치되어 있어야 합니다.
* 문서를 빌드하려면 Doxygen[3]이 필요합니다. 이 패키지가 없으면 install-docs 옵션이 비활성화됩니다.
* 단위 테스트 데이터를 다운로드하려면 curl[4]과 sha1sum이 필요합니다.
sha1sum은 GNU coreutils를 통해 제공되며, 많은 *nix 플랫폼과 MinGW 및 Cygwin에 기본적으로 설치됩니다. coreutils를 사용할 수 없는 경우, sha1sum의 호환 가능한 버전을 소스[5]에서 빌드할 수 있습니다. 이러한 요구 사항은 단위 테스트를 실행하지 않는 경우 선택 사항입니다.
[1]: http://www.tortall.net/projects/yasm
[2]: http://www.cygwin.com
[3]: http://www.doxygen.org
[4]: http://curl.haxx.se
[5]: http://www.microbrew.org/tools/md5sha1sum/
2. 아웃오브트리 빌드 아웃오브트리 빌드는 애플리케이션을 빌드하는 지원되는 방법입니다. 아웃오브트리 빌드의 경우 소스 트리는 컴파일 중에 생성되는 오브젝트 파일과 분리되어 유지됩니다. 예를 들어:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. 구성 옵션 'configure' 스크립트는 여러 옵션을 지원합니다. --help 옵션을 사용하여 지원되는 옵션 목록을 볼 수 있습니다: $ ../libvpx/configure --help
armv6-darwin-gcc
armv6-linux-rvct
armv6-linux-gcc
armv6-none-rvct
arm64-darwin-gcc
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-vs11
armv7-win32-vs12
armv7s-darwin-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc32-darwin8-gcc
ppc32-darwin9-gcc
ppc32-linux-gcc
ppc64-darwin8-gcc
ppc64-darwin9-gcc
ppc64-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs7
x86-win32-vs8
x86-win32-vs9
x86-win32-vs10
x86-win32-vs11
x86-win32-vs12
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs8
x86_64-win64-vs9
x86_64-win64-vs10
x86_64-win64-vs11
x86_64-win64-vs12
universal-darwin8-gcc
universal-darwin9-gcc
universal-darwin10-gcc
universal-darwin11-gcc
universal-darwin12-gcc
universal-darwin13-gcc
universal-darwin14-gcc
generic-gnu
generic-gnu 대상은 CROSS 환경 변수와 함께 사용하여 명시적으로 나열되지 않은 아키텍처를 크로스 컴파일하는 데 사용할 수 있습니다. 단, 툴체인이 크로스 GNU (gcc/binutils) 툴체인인 경우에 한합니다. 다른 POSIX 툴체인도 작동할 가능성이 높습니다. 예를 들어, mipsel-linux-uclibc 툴체인을 사용하여 빌드하려면 다음 명령을 사용할 수 있습니다 (참고: POSIX SH 구문, 필요에 따라 셸에 맞게 조정):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
또한, 호출할 실행 파일은 환경 변수 CC, AR, LD, AS, STRIP, NM을 지정하여 재정의할 수 있습니다. 이러한 실행 파일에 추가 플래그를 CFLAGS, LDFLAGS 및 ASFLAGS로 전달할 수 있습니다.
VP8/VP9 테스트 벡터: 테스트 벡터는 configure 실행 후 빌드 시스템을 사용하여 다운로드하고 확인할 수 있습니다. 대체 디렉터리를 지정하려면 LIBVPX_TEST_DATA_PATH 환경 변수를 사용할 수 있습니다.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
지원 이 라이브러리는 커뮤니티에서 지원하는 오픈 소스 프로젝트입니다. 도움이 필요하면 [email protected]로 이메일을 보내주십시오.