Bash 보안 취약점 버그와 테스트 방법

리눅스나 맥 같은 유닉스 계열의 운영체제에서 많이 사용되는 터미널 쉘 프로그램으로 Bash라는 것이 있습니다. 쉘이란 커널과 사용자 사이에서 사용자의 명령을 커널에 전달하는 역할을 하는 프로그램입니다. 커널이 운영체제의 핵심 엔진이라면 쉘은 엔진을 조작하는 운전대에 비유할 수 있습니다.

이런 쉘 프로그램 중에 가장 많이 사용되는 쉘은 Bash라는 쉘입니다. 그런데 오늘 레드햇에서 Bash의 보안 취약성에 대한 버그 보고가 올라왔습니다. 자세한 내용은 저도 잘 모르겠지만, 환경 변수를 이용해 원격자가 공격을 Bash 스크립트로 작성하여 실행시킬 수 있는 Code Injection 공격에 대한 취약성인 것 같습니다. 레드햇에 따르면, 인증 받지 않은 사용자가 이 방법으로 고수준의 시스템 공격도 할 수 있다고 합니다.

현재 이 버그에 영향을 받는 운영체제는 리눅스를 비롯한 거의 모든 유닉스 계열 운영체제일 겁니다. 맥OSX, 안드로이드, iOS에도 영향이 있을 수 있습니다.이런 유닉스 계열 운영체제에서 실행되는 애플리케이션이나 서비스는 대부분 Shell과 상호 작용하고 있기 때문에 영향을 받는 부분이 방대합니다. 마치 OpenSSL의 Heartbleed 버그처럼 어디에 얼만큼 영향을 받는지 가늠할 수 없죠.

최초 보고가 나왔던 레드햇과 페도라는 이미 패치가 완료된 상태입니다. 우분투와 맥OSX은 아직이지만 곧 패치가 되겠죠. 하지만 유닉스 계열이 개인 디바이스에 많이 사용되는 요즘 네트워크에 긴밀히 연결되어있지 않거나 업데이트가 이루어지지 않는 디바이스들도 많을 것이라 이 버그에 영향을 받는 기기도 오래 남아있을 것입니다.

이 버그가 현재 시스템에서도 영향을 주는지 확인하려면 터미널을 열어 다음과 같은 간단한 함수를 실행해볼 수 있습니다.(아래 코드가 텀블러에서 자동으로 대체하는지 큰 따옴표나 작은 따옴표가 문장 부호로 대체되어있습니다. 해당 부분을 수정하시고 시도해보시는게 나을 것 같습니다.)

env x=’() { :;}; echo vulnerable’ bash -c “echo this is a test”

만약 결과가 다음과 같이 나온다면 시스템이 이 취약점에 노출된 것입니다.

vulnerable
this is a test

그게 아니라 다음과 같이 Bash에서 이 함수를 차단하고 있다면 이미 취약점이 패치된 상태입니다.

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

일단 제가 사용하는 맥OSX 10.9.5 Mavericks나 우분투 14.04.1 Trusty Tahr에서는 이 취약점이 아직 패치가 되지 않은 상태입니다.

업데이트 : 제 우분투에는 저장소 문제였던 것 같네요. 트위터의 @feedseaotter 님 제보로 확인해보니 우분투에는 어제 이 취약점에 대한 패치가 업데이트 되었다고 합니다. 지금 저도 다시 업데이트 해보니 해당 취약점이 패치되었습니다. OSX는 언제 될지 모르겠네요.