위 link는 bash애서 발견된 버그에 의하여 보안 사고가 일어날 수 있음을 밝히고 있는 기사입니다. bash의 bug로 인하여, bash script를 사용하는 web site 등에 외부에서 bash 명령을 주입하여 실행시키는 보안 사고가 일어날 수 있다고 하네요. 이 bash bug를 "Shell Shock"이라고 부른다고 합니다.
이 버그에 대한 기사는 이미 3~4일 전 쯤 부터 터져나오기 시작했고, 우분투를 비롯한 주요 배포판에서는 이미 패치가 update를 통하여 배포되었습니다. 업데이트를 부지런히 하시는 분들은 /bin/bash의 날짜를 보시면 최근 2~4일 전의 날짜임을 보실 것입니다. 다음의 명령을 터미널에서 사용해 보시면, 뮨제가 된 버그의 존재 여부을 점검할 수 있다고 합니다.
[code:2vnbu2rv]env x=‘() { :;}; echo vulnerable’ bash -c "echo this is a test" [/code:2vnbu2rv]
위에서 "this is a test"가 나오면 패치가 된 것이고, "vulnerable"이 나오면 아직 버그를 가진 상태라고 합니다.
데스크탑 사용자는 사실 큰 문제가 아니지만, 웹 서버 등의 서버를 운영하시는 분들은 패치 및 보안 검토가 필요하다고 봅니다. perl, php, python 등을 이용한 모든 cgi에서 사용자 입력을 더하여 bash를 실행시키는 웹 사이트는 특히 위험할 수 있다고 하니, 점검해 보세요.
<추신> Mac OS X의 모든 version에 들어있는 bash도 같은 상황이라고 하니, patch에 신경쓰셔야할 듯 합니다.
[quote="세벌":3a8tf2yp]vulnerable
this is a test
이렇게 둘 다 나오네요? 이러면 위험한 건가요?[/quote:3a8tf2yp]
네. 위와 같이 응답하는 경우 즉각적인 패치가 필요로 하다고 합니다.
패치된 레드헷의 경우 다음과 같이 뜬다고 합니다.
[code:3a8tf2yp]$ env x=‘() { :;}; echo vulnerable’ bash -c "echo this is a test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x’ this is a test [/code:3a8tf2yp]
[code:3ct7n1d4]$ env x=‘() { :;}; echo vulnerable’ bash -c "echo this is a test"
bash: 경고: x: ignoring function definition attempt
bash: error importing function definition for `x’
this is a test[/code:3ct7n1d4]
Hacker들이 Shellshock을 아직 patch하지 않은 먹이감 web site들을 scan하고 있다는 소식입니다. Web site 운영자들은 특히 조치가 필요할 것 같습니다.
지원되는 version을 사용하시는 분들은 update를 통하여 binary patch를 받으시면 됩니다. 그러나, 혹시 지원이 중단된 GNU/Linux를 사용하고 계신 분들의 경우, 혹은 update를 할 수 없는 분들의 경우, bash의 source code를 download 받아서 다시 compile하여 /bin/bash 하나 만이라도 바꿔주셔야 할 듯합니다. 다음의 web page를 보시면, GNU web page에서 source code와 source patch를 download 받아서 compile하는 방법을 설명하고 있습니다.
제가 지원 중단된 우분투 11.10 server에서 bash 4.2.10을 사용하고 있는 시스템에서, 위 page에 나온 순서에 따라 하나 하나 따라해 보니, bash 4.2.49(1)을 만들어 주네요. 위에 언급한 시험 방법을 사용해 보니 문제 없는 것으로 나옵니다.
지원 중단된 GNU/Linux를 사용하는 분이 계시다면, 참고하시기 바랍니다.
[workman729님]
/bin/sh이 /bin/dash에 symbolic link되어 있는 것은 맞습니다. 11.10도 14.04도 그렇군요. 그렇다고 해서 안전을 장담하지는 못할 듯합니다. 다음의 이유 때문에 그렇다는 것이 제 의견입니다.
(1) 우선 사용자가 지정하지 않은 경우 default shell은 /bin/bash로 되고요 (저는 지정하지 않았는데 /etc/passwd에 보면 /bin/bash로 되어 있더군요).
(2) 또한 web cgi에서 어느 shell을 사용하느냐는 cgi script를 쓴 사람 맘이니까요. 즉, /bin/sh이 아니라 /bin/bash를 썼으면 문제이겠죠. 방대한 code를 모두 점검하는 것이 쉽지 않은 site도 있겠죠. 이런 경우, 일단 bash를 patch해 놓고 시간을 가지고 web script들을 점검하는 것이 좋을 듯 합니다.
test:~# sudo apt-get install bash
Reading package lists… Done
Building dependency tree
Reading state information… Done
bash is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
test:~#
test:~#
test:~# bash -version
GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
bash 업그레이드가 안되는 이유가 있을까요?
[/quote:3qcvtl7c]
고수는 아니지만, 답변 드리자면…
우분투 13.10은 9개월간 지원되므로 지난 7월에 이미 지원 중단되었습니다. 따라서, update를 통하여 bash를 patch하는 것은 불가능할 것입니다.
우분투 14.04로 upgrade 하시거나, 그것이 불가능한 사정이 있으시다면, 위에 쓴 제 댓글을 참조하셔서 bash를 source로부터 compile 하셔야할 것으로 생각됩니다.