
이것은 Shellshock를 빌드하고 재현하기 위한 Dockerfile을 포함합니다.
CVSS 10.0. Bash는 환경 변수에 저장된 함수 정의 뒤에 오는 명령을 부적절하게 파싱하여 셸 초기화 중에 실행합니다.
Bash 환경 변수는 함수 정의를 인코딩할 수 있습니다: x='() { :; }' Bash가 이를 환경 변수로 가져와 초기화할 때 함수 본문을 파싱하지만 닫는 중괄호 이후 파싱을 중단하지 못하여, 그 뒤에 오는 모든 텍스트를 명령으로 실행합니다.
docker build -t shellshock-poc .
docker run --rm -it shellshock-poc env x='() { :;}; echo VULNERABLE' bash -c "echo test"
VULNERABLE test
[patched Dockerfile / output here]
CGI 스크립트가 공격자 제어 헤더(예: User-Agent)를 사용하여 bash를 호출하면 해당 헤더가 환경 변수로 설정됩니다. 공격자가 제어하는 환경 변수가 bash 초기화에 도달하는 것이 실제 공격 표면이며, 대화형 셸 사용만이 아닙니다.
업스트림 패치는 함수 정의의 닫는 중괄호에서 파싱이 중단되도록 강제합니다. CVE-2014-7169는 후속 불완전 수정 우회를 다룹니다.