방금 업데이트 팝업에서 Ubuntu를 업데이트했습니다. 저는 Shellshock을 알고 있어서 빠르게 설치를 진행했습니다. 이제 달리려고 하면
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
(이전에 얻었던) 출력을 얻지 못했습니다.
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
에 설명된 대로CVE-2014-6271 bash 취약점(Shellshock)은 무엇이며 어떻게 해결합니까?
오히려 이제는 '안녕하세요'라는 말만 듣게 됩니다. 내가 설치한 업데이트가 이러한 오류 메시지를 숨긴다고 가정해도 안전합니까? 소프트웨어 센터를 검토한 후 설치한 업데이트가 다음과 같습니다.
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
보다 구체적으로 4.3-7ubuntu1.4는 함수 정의 시도 오류 메시지를 숨깁니까? 의심을 해서 죄송합니다만, 구글링을 몇 번 해본 결과 아직 비슷한 문제를 발견하지 못했습니다. 어떤 명확성이라도 대단히 감사하겠습니다. 감사해요!
답변1
에 따르면이 Fedora 매거진 게시물:
env x='() { :;}; echo OOPS' bash -c :
취약한 시스템에서는 "OOPS"가 인쇄되지만 bash가 패치된 경우 자동으로 종료됩니다.
이것은 다음에서 볼 수 있는 동작입니다.
- 데비안
squeeze
(bash
패키지4.1-3+deb6u2
) - CentOS 6.5(
bash
패키지0:4.1.2-15.el6_5.2
) - 아치 리눅스(
bash
패키지4.3.026-1
)
나는 이것이 수정 사항이 작동하도록 의도된 방식이라고 추측하지만 어떤 이유로 Ubuntu의 초기 bash
패치는 추가 코드를 자동으로 무시하는 대신 오류를 생성했습니다.
초기 패치는 실제로예정된환경 변수에서 잘못된 함수 정의가 발견되면 오류를 생성합니다. 업데이트된 패치는 특별히 접두사가 붙은 변수만 살펴보므로 실제 위험이 거의 모두 제거됩니다. 시도해 보세요
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
. 오류가 표시됩니다.
나는 이것을 확인했습니다 :
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4