
CVE-2017-9608 분석
실행: ./script.sh
GitHub 저장소 - https://github.com/LaCinquette/practice-22-23
취약점을 찾기 위해 FFmpeg 프로젝트를 선택했습니다. 요구 사항을 충족하는 커밋을 찾았습니다:
도커파일을 생성했습니다:
DEBIAN_FRONTEND=nointeractive 설정자동화를 위해 이미지를 빌드하고 컨테이너를 실행한 후 파일을 가져와 현재 디렉토리로 이동하는 script.sh 스크립트를 생성합니다:
--rm 완료 시 컨테이너 자동 삭제-v $PWD/out:/workspace/out 객체 파일이 호스트로 전송되는 임시 디렉토리 마운트ffmpeg -c:v dnxhd -i poc.mov -y output.ts 명령을 사용하여 특수하게 제작된 .mov 파일을 프로그램에 입력으로 제공0x08000d4e - 섹션 시작
movsxd rcx, dword [rbx + 0xc]
В регистре rcx получаем ссылку на pc->buffer
add rcx, rdi
Добавляем next к pc->buffer
add rcx, qword [rbx]
Добавляем pc->last_index к next и pc->buffer
movzx edi, byte [rcx]
Вычисляем байт по адресу rcx, но так как pc->buffer изначально null - ловим Segmentation fault
예외 상황을 올바르게 처리하여 할당되지 않은 메모리 영역에 대한 접근을 방지합니다. 남은 바이트 수가 음수로 감지되면 루프를 건너뛰어 파일 처리를 계속합니다.