Shellshock: 취약점을 테스트할 때 왜 이 오류가 발생합니까?

Shellshock: 취약점을 테스트할 때 왜 이 오류가 발생합니까?

저는 두 대의 컴퓨터에서 Fedora 20을 사용하고 있습니다.

2014년 9월 26일 1100 UTC 경에 영국의 Shellshock 취약점에 대해 읽은 직후에 이를 방지하기 위해 yum update bash다음 권장 테스트 패턴을 시도했습니다.

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

그리고 사용자 모드와 su 모드에서는 한 컴퓨터에서 다음과 같은 결과를 얻었습니다.

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for 'x'
this is a test

반면에 내가 얻는 것은 다음과 같습니다.

this is a test

질문: 두 컴퓨터 모두에서 성공했습니까, 아니면 걱정해야 합니까?


@terdon의 의견에 대한 응답으로 다음과 같은 결과를 얻었습니다.

[Harry@localhost]~% env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
echo vuln
cat: echo: No such file or directory
[Harry@localhost]~%

그래도 그게 무슨 뜻인지는 잘 모르겠습니다.


명확히하기 위해 두 시스템 간의 경고와 차이점이 혼란 스럽습니다. 나는 경고 메시지를 다시 주의 깊게 살펴보았다. 아마도 오류 메시지가 없는 컴퓨터에서는 "복사하여 붙여넣기" 명령을 입력했습니다. 다른 컴퓨터에서는 이 명령을 입력했는데 경고가 표시되었습니다. 이제 마지막 "x"를 'x'로 인용하는 경고가 표시됩니다. "백틱"). 그 기계에는 미국식 키보드가 있는데 영국식 레이아웃으로 변경할 수는 없지만 완전히 다른 문제가 있습니다.

이것을 온라인으로 쫓는다LinuxQuestions.org 스레드약간의 논의 끝에 두 사람 모두 안전한 것 같았습니다.

답변1

당신은 옳은 일을 했습니다.
귀하의 시스템은 이 취약점으로부터 안전합니다.

시스템이 안전하지 않은 경우 이 명령의 출력은 다음과 같습니다.

깨지기 쉬워
이건 시험이야

그러나 귀하의 출력은

bash: 경고: x: 함수 정의가 무시되었습니다.
bash 시도 중: 'x'에 대한 함수 정의를 가져오는 중 오류가 발생했습니다.
테스트입니다.

당신은 안전합니다.

어제 이것을 실행했다면 yum update bash오늘도 실행하는 것을 고려해 보십시오. 어제의 수정 사항은 오늘 발표된 수정 사항만큼 좋지 않기 때문입니다.


편집 (OP가 추가 정보를 요청했기 때문에)

나는 또한 새로운 취약점으로 당신을 평안하게 만들 수 있습니다. 시스템에 새로운 수정사항이 설치되었습니다.

출력이 있는 경우

에코 취약점은
여전히 ​​취약합니다 :(

당신은 여전히 ​​​​취약합니다.

지금이 익스플로잇이 정확히 어떻게 작동하는지 말할 수 없습니다. 즉, 정확히 무슨 일이 일어나고 첫 번째 익스플로잇과 두 번째 익스플로잇의 차이점이 무엇인지 말할 수 없다는 뜻입니다. 하지만 엑스포가 어떻게 작동하는지에 대해서는 간단한 답변을 드릴 수 있습니다.

env X='() { (a)=>\' bash -c "echo echo vuln"; [[ "$(cat echo)" == "vuln" ]] && echo "still vulnerable :("
일부 실행 코드를 파일에 저장하는 것 외에는 "아무 작업도 수행하지 않습니다"환경 변수이 명령은 bash-shell이 ​​시작될 때마다 실행됩니다.
그리고 bash-shell은 시작하기 쉽고 자주 시작됩니다. 여러분뿐만 아니라 많은 프로그램에서 작업을 수행하려면 bash가 필요합니다. 예를 들어 CGI.

이 취약점에 대해 자세히 알아보려면 다음 Red Hat 보안 블로그 링크를 참조하세요.https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/

답변2

vulnerable문제가 해결되지 않으면 두 번 시도한 후에 읽어보시기 바랍니다.

답변3

첫 번째 출력은 고정 bash 출력입니다. 두 번째는 패치 수정으로 추가된 경고를 표시하지 않지만 올바른 동작을 보여줍니다(취약하지 않음). 어쩌면 두 번째 머신이 실제로 bash를 사용하지 않거나 배포판이 약간 다른 패치(예: 내보내기 기능을 비활성화하는 패치)를 사용할 수도 있습니다. 두 시스템 모두에 대해 bash --version의 출력을 제공할 수 있습니까?

관련 정보