업데이트 후 Bash 설치가 더 이상 ShellShock 버그에 취약하지 않게 하려면 어떻게해야합니까?
업데이트 후 Bash 설치가 더 이상 ShellShock 버그에 취약하지 않게 하려면 어떻게해야합니까?
답변:
CVE-2014-6271 취약성을 확인하려면
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
취약한 단어를 되돌려 보내면 안됩니다.
/tmp/echo
삭제할 수 있고 다시 테스트하기 전에 삭제해야하는 파일을 덮어 쓰게 됩니다.)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
날짜라는 단어를 말한 다음과 같은 메시지를 표시해야합니다 cat: echo: No such file or directory
. 대신 현재 날짜 시간이 무엇인지 알려 주면 시스템이 취약합니다.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
텍스트를 에코하지 않아야합니다 CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
텍스트를 에코하지 않아야합니다 CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
이것에 대한 통과 결과는 단지 텍스트를 에코하는 것 testing CVE-2014-6277
입니다. 그것이 perl을 실행하거나 perl이 설치되지 않았다고 불평하는 경우에는 반드시 실패입니다. 패치되지 않은 시스템이 더 이상 없기 때문에 다른 장애 특성에 대해서는 잘 모르겠습니다.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
이 테스트의 통과 점은 텍스트 만 다시 에코해야한다는 것 testing CVE-2014-6278
입니다. 당신이 hi mom
어디에서나 다시 울리면 그것은 확실히 실패입니다.
foo='() { echo not patched; }' bash -c foo
를 추가 할 수 있습니까 ? 함수 내보내기가 별도의 네임 스페이스에 저장 될 때까지 한 파서 버그에서 다음 파서 버그로의 실행을 중단하지 않습니다.
취약한 버전의 Bash에서 자동으로 평가할 특수하게 조작 된 환경 변수를 내 보냅니다.
$ export testbug='() { :;}; echo VULNERABLE'
이제 간단한 에코를 실행하여 변수를 직접 사용하지 않았더라도 Bash가 $ testbug의 코드를 평가하는지 확인하십시오.
$ bash -c "echo Hello"
VULNERABLE
Hello
"VULNERABLE"문자열이 표시되면 답이 분명합니다. 그렇지 않으면 걱정할 필요가 없으며 패치 된 Bash 버전은 정상입니다.
주요 Linux 배포판에서 여러 패치가 릴리스되었으며 때때로 취약점을 완전히 수정하지는 않습니다. 이 버그에 대한 보안 권고와 CVE 항목 을 계속 확인하십시오 .
export
) 다음과 같이 env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
셸 쇼크가 실질적이다 bash는 하나 개 이상의 취약점의 결합 , 그리고 지금이 순간에이 취약점을 악용하는 malaware이 셸 쇼크가 아직 열려 문제가 될 수 있도록하는이 이 문제에 대한 레드햇의 업데이트와 스레드 .
명령을 실행하십시오.
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
출력이 다음과 같은 경우 :
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
당신은 어떤 수정이 없습니다.
출력이 다음과 같은 경우 :
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
너는 CVE-2014-6271
고쳤다
출력이 다음과 같은 경우 :
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
당신은 취약하지 않습니다.
ShellShock 검사의 다른 부분은 CVE-2014-7169 취약성 검사로 시스템이 파일 생성 문제로부터 보호되는지 확인합니다. Bash 버전이 CVE-2014-7169에 취약한 지 테스트하려면 다음 명령을 실행하십시오.
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
시스템이 취약한 경우 시간과 날짜가 표시되고 / tmp / echo가 생성됩니다.
시스템이 취약하지 않은 경우 다음과 유사한 출력이 표시됩니다.
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
CGI 스크립트의 취약점에 대해 웹 서버를 테스트하기 위해 ShellShocker 라는 CLI 유틸리티를 작성했습니다. 사이트를 테스트하려면 다음을 실행하십시오.
python shellshocker.py <your-server-address>/<cgi-script-path>
즉
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
편집 :이 유틸리티가 중단되었습니다, 죄송합니다 : '(
이 온라인 테스트에 CGI URL을 제출할 수 있습니다.