않습니다 셸 쇼크 배쉬 버그 zsh을 영향을 미칩니 까?
Bash를 업그레이드하는 것이 유일한 솔루션입니까?
않습니다 셸 쇼크 배쉬 버그 zsh을 영향을 미칩니 까?
Bash를 업그레이드하는 것이 유일한 솔루션입니까?
답변:
아니요, ZSH에는 영향을 미치지 않습니다.
대부분의 시스템 스크립트는 bash 용으로 작성되고 shellshock 버그에 취약하므로 여전히 bash를 업데이트 해야 합니다.
ZSH를 테스트하려면 다음을 수행하십시오.
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
이 코드는 정확히 무엇을합니까?
env x='() { :;}; echo vulnerable' 변수 끝에서 명령을 사용하여 알려진 버그로 환경 변수를 만듭니다.zsh -c 'echo hello'간단한 hello를 사용하여 ZSH 쉘을 시작합니다 (및 x를 포함한 모든 env 변수 평가 )출력이 보이면 :
vulnerable
hello
그러면 ZSH가 취약합니다. 광산 (5.0.2)은 다음이 아닙니다.
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bashbash는 설치가 보장되지 않기 때문에 호출 은 시스템 유틸리티에 나쁜 습관입니다. /bin/sh표준 쉘이며 올바른 POSIX 쉘 인터프리터 여야합니다.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
에서 이 링크 :
이 테스트를 실행하여 CVE-2014-6271의 원래 문제에 취약한 지 확인할 수 있습니다.
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
해당 명령의 출력에 취약한 단어가 표시되면 bash가 취약하므로 업데이트해야합니다. 다음은 OS X 10.8.5의 취약한 버전입니다.
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
다음 출력은 취약점이없는 bash 버전의 예입니다.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
env X='() { (a)=>\' bash -c "echo date", 패치 떠들썩한 파티에 오류를 많이 던지는에도 불구하고,라는 파일을 생성합니다 echo날짜가 포함되어 있습니다. 이유를 알고 싶지 않습니다.
zsh는 핵심에서 사용 하지 않습니다bash . bash귀하의 예에서 명시 적으로 호출됩니다. 이 행을 실행하기 위해 사용하는 쉘은 중요하지 않습니다. 이 취약점은 실행 된 쉘이 아니라 새로 시작된 bash 쉘에 영향을줍니다.
bash예제에서 로 대체 하고 싶습니다 $SHELL.
zsh소스 코드는 절대로 오류를 포함하지 않았기 때문에 쉘 실행 파일로 영향을 미치지 않습니다 .
이 사이에 많은 similaritys 있습니다 bash및 zsh,하지만 그들은 서로 독립적으로 구현 werer. 동일한 기능은 두 가지 방식으로 구현되며,이 맥락에서 더 중요하며 일반적으로 다른 오류가 있습니다.
간접적으로는 zsh터미널 에서 쉘 과 대화식으로 작업하는 데 거의 영향을 미치지 않습니다 bash.
bash그것을 사용하는 것은 너무 일반적이기 때문에 그것을 호출하는 것을 거의 피할 수 없습니다.
zsh하지만, 실제로 포함 bash. #!/bin/bash로 지정 하는 데 사용 되는 많은 쉘 스크립트 bash.가정하는 많은 명령은 바이너리이지만 쉘 스크립트이며 일부는를 사용 bash합니다.
쉘이 명시 적으로 실행되는 많은 곳에서 bash사용될 수 있으며 필요할 수 있습니다.
xargs명령 또는 git인수와 관련된 별명아니요, Shellshock은 zsh에 직접 영향을 미치지 않습니다.
그러나 zsh를 기본 쉘로 사용하는 많은 환경에도 bash가 설치되어 있습니다. zsh를 포함한 모든 쉘을 사용하여 손상된 bash 쉘을 생성 할 수 있습니다.
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
이를 방지하려면 중복 버전의 bash를 패치, 제거 또는 비활성화해야합니다. 다음을 사용하여 시스템 bash 설치를 비활성화 할 수 있습니다 chmod.
$ chmod a-x /bin/bash
그러나 스크립트가 명시 적으로 bash를 호출하는 것이 일반적입니다. 이 작업을 수행하는 스크립트와 bash 특정 스크립팅 기능을 사용하는 스크립트는 bash를 사용할 수 없으면 실패합니다. 패칭이 가장 좋은 솔루션입니다.
importing function definition"에 대해 bash를 암시 적으로 사용하는 것 같습니다 . 또한 ssh-server injection으로 테스트했습니다. 로그인 쉘을로 ssh testuser@localhost '() { :;}; echo "$SHELL"'설정하고 에코합니다testuser/bin/zsh/bin/zsh