않습니다 셸 쇼크 배쉬 버그 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
bash
bash는 설치가 보장되지 않기 때문에 호출 은 시스템 유틸리티에 나쁜 습관입니다. /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