포스팅 내용

전문가 기고

하트블리드보다 치명적인 배시 버그(Bash Bug) 발견! 패치 방법은?

CVE-2014-6271 : Bash bug 취약점 발견


오픈소스인 리눅스(Linux)의 배시(Bash)에서 보안 취약점이 발견되었습니다. 


이번에 발견된 배시 버그(Bash Bug 또는 Shellshock)는 배시 환경변수에 정의해 놓은 함수를 처리할 때, 해당 함수 명령 뒤에 따라오는 추가적인 명령도 함께 실행되는 것입니다. 공격자는 해당 취약점을 이용하여 원하는 코드를 실행시킬 수 있습니다.


Bash(Bourne again shell)란 대다수의 리눅스, 유닉스, Mac OS X 시스템에 내장된 명령어 shell 프로그램입니다. 

일단 해당 취약점을 이용할 수 있는 공격환경만 주어진다면, 원격에서 공격자가 손쉽게 공격을 할 수 있습니다. 또한 배시 버그(Bash Bug) 서버에서 정보를 유출하는 하트블리드(Heartbleed)와 달리 원하는 코드를 서버에서 실행시킬 수 있기 때문에 더욱 높은 위험성을 갖고 있습니다. 



배시 버그(Bash Bug) 취약점 원인


Bash는 자신이 구동될 때 환경변수를 초기화 하고, 함수들을 정의합니다. 

환경변수를 초기화할 때, 변수명=값 이러한 대입문에서 eval을 이용하여 실행하게 됩니다. 이 때, 값이 들어갈 자리에 정의문이 들어가게 되면 이를 함수로 바꾸게 되는데, 이렇게 함수로 바꾸는 과정에서 검증을 하지 않아 뒷부분에 있는 명령어까지 실행하게 되는 것 입니다. 


이번에 발견된 배시 버그(Bash Bug)는 하트블리드(HeartBleed)와 같이 코드를 짤 때 유효성 검증을 하지 않아서 발생하는 버그로, 유효성 검증 코드를 추가함으로서 해당 취약점을 패치하였습니다. 



배시 버그(Bash Bug) 취약점 분석


Bash shell은 환경변수를 지정할 수 있습니다. 새로 지정한 환경변수는  Bash가 환경변수를 초기화하여 리셋되는 과정에서 읽혀옵니다. 이 때, 소괄호와 대괄호를 각각 하나의 함수문으로 인식하게 됩니다. 


올바른 결과는 ‘x=(){ echo 사과;};’라고 환경변수를 지정한 후 x를 실행시켰을 때, 사과라는 단어가 출력이 되어야 합니다. 환경변수를 지정하는 해당 코드 뒤에 또 다른 코드를 추가하면, 오류 메세지가 발생해야 하는 것입니다. 그러나 해당 취약점은 환경변수 지정 코드에 또 다른 코드를 추가했을 때 어떠한 오류 메시지도 발생하지 않고, 원래 지정하려는 환경변수 이외에 추가된 코드와 함께 Bash(Bourne again shell) Shell 권한으로 실행시킵니다.



해당 공격은 다양한 환경에서 이루어 질 수 있는데, 그 중 CGI모드 활성화 된 Apache Server를 예로 들어보겠습니다.


CGI란 Common Gateway Interface의 약자로서 클라이언트가 요청하는 정보를 해석하여 서버에 전달하고, 해당 정보의 결과값을 받아와서 클라이언트에 전달하는 중개인 정도로 보시면 됩니다. 


클라이언트가 패킷 헤더에 요청정보 값을 입력하여 CGI에 전송하면, CGI는 해당 정보를 서버에 전송을 하여, 해당정보가 요청한 값을 받아와 클라이언트에 보여줍니다. 



하지만 배시 버그(Bash Bug) 취약점을 이용하면, 악의적인 코드까지 함께 Bash Shell 권한으로 실행되면서 클라이언트 권한으로 실행을 할 수 없는 명령들도 실행을 할 수 있게 됩니다.


그래서 공격자들은 패킷 헤더에 배시 버그(Bash Bug) 취약점을 이용한 코드를 넣고, 서버에서 실행시켜 악의적으로 정보를 유출하거나 변조하여 서버 보안을 위협합니다. 




취약점 패치 방법


1. Bash 버전 업데이트

Debian : https://www.debian.org/security/2014/dsa-3032

Ubuntu : http://www.ubuntu.com/usn/usn-2362-1/

Red Hat : https://access.redhat.com/articles/1200223*

CentOS : http://centosnow.blogspot.com/2014/09/critical-bash-updates-for-centos-5.html

Novell/SUSE : http://support.novell.com/security/cve/CVE-2014-6271.html

OS X : http://support.apple.com/kb/HT6495


2. 방화벽 룰 셋팅



영향받는 버전


bash-4.2.45-5.el7_0.2     

bash-4.1.2-15.el6_5.1 

bash-4.1.2-15.el6_5.1.sjis.1

bash-4.1.2-9.el6_2.1     

bash-4.1.2-15.el6_4.1     

bash-3.2-33.el5.1    

bash-3.2-33.el5_11.1.sjis.1    

bash-3.2-24.el5_6.1    

bash-3.2-32.el5_9.2    

bash-3.0-27.el4.2






  1. 핑크팬더 2014.10.04 12:28  수정/삭제  댓글쓰기

    CGI 를 사용해 WEB-SERVER 환경을 구축하겠다는 것 자체가 자살행위.
    요즘 CGI 로 웹프로그래밍 하는데가 있나?

    • 알약(Alyac) 2014.10.06 11:47 신고  수정/삭제

      말씀하신 대로 최근에는 CGI를 이용하여 웹서버 환경을 구축하는 것이 드물지만, CGI를 통해 배쉬 취약점이 발생하는 부분을 설명해 드린 점을 참고해 주시기 바랍니다. 감사합니다.

티스토리 방명록 작성
name password homepage