[Threat Analysis]Bash 취약점, ‘쉘쇼크’ 전 세계를 강타하다!
유닉스, 리눅스 OS 관련 Bash 취약점 상세 분석
2014년 9월 24일, GNU Bash 환경변수를 통한 코드 인젝션 취약점이 보고되었다. 이른바 ‘쉘쇼크(ShellShock)’로 불리는 해당 취약점에 대해 국내외 보안 전문가들은 지난 4월 전 세계적으로 이슈가 된 ‘하트블리드(Heartbleed)’보다 심각한 위협이 될 것이라고 한 목소리를 내고 있다. Bash는 기업들이 주로 사용하고 있는 서버 OS인 유닉스 및 리눅스와 관련해 명령어 해석기의 역할을 하고 있는 만큼 최악의 경우 전 세계 웹 서버의 절반을 마비시킬 수도 있다는 것. 공격자는 악의적인 명령이 포함된, 특별하게 조작된 환경변수를 사용하여 해당 취약점을 이용해 악의적인 행위를 수행할 수 있다. 이에 해당 취약점의 영향을 받는 GNU Bash 환경을 사용하고 있는 시스템 관리자는 보안 패치를 신속하게 적용하여 피해를 예방할 것이 권고된다. 9월 29일 현재 레드햇, 우분투, 센트 OS, 노벨/수세 등 주요 리눅스 이용 업체들은 해당 버그에 대한 패치를 발표했다.
이와 관련해 월간 안에서는 최신 취약점인 Bash 코드 인젝션 취약점과 영향 받는 버전에 대해 자세히 살펴보고 기업의 피해 예방을 위한 방안을 알아본다.
GNU Bash에서 임의의 환경변수에 코드 인젝션(Code Injection) 기법을 이용해 특정 코드를 삽입하여 실행할 수 있는 취약점이 발견되었다. Bash(Bourne-again shell)는 유닉스, 리눅스 및 맥 OS X 계열의 운영체제에 이르기까지 광범위하게 사용되고 있는 커맨드 쉘(shell)의 일종으로, GNU 프로젝트를 위해 만들어졌다. 초기의 유닉스 쉘인 ‘본 쉘(Bourne shell)’과 새로 태어났다는 뜻의 영어 ‘Born Again’을 합성어로, 일반적으로 ‘Bash’라는 줄임말로 쓰고, ‘배시’라고 읽는다. Bash는 사용자가 간단한 텍스트 기반의 윈도에 명령어를 입력하면 운영체제가 이에 따라 동작할 수 있도록 만드는 ‘명령어 해석기 역할’을 수행한다.
GNU 프로젝트
GNU 프로젝트(GNU project)는 1983년 9월 27일 유즈넷 net.unix-wizard 그룹을 통해 알려졌다. GNU 프로젝트는 누구나 자유롭게 "실행, 복사, 수정, 배포"할 수 있고, ‘누구도 그런 권리를 제한하면 안 된다는 사용 허가권(License)’ 하에 소프트웨어를 배포한다. 1990년까지 GNU 시스템엔 확장 가능한 문서 편집기(이맥스), 뛰어난 최적화 컴파일러(GCC), 그리고 표준 유닉스 배포판의 핵심 라이브러리와 유틸리티가 있었다. 1991년에 리누스 토르발스는 유닉스 호환의 리눅스 커널을 작성하여 GPL 라이선스(GNU 일반 공중 사용 허가서) 하에 배포했다. 1992년 리눅스는 GNU 시스템과 통합되었고, 이로써 완전한 공개 운영 체제가 탄생되었다. 비공개 유닉스 시스템에도 GNU의 구성 요소들이 본래의 유닉스 프로그램을 대신하여 들어 있는 경우도 많다.
(* 출처: Wikipedia 발췌)
미국 국토안보부 산하 컴퓨터 긴급대응팀(US-CERT)는 지난 9월 24일 홈페이지를 통해 Bash 취약점에 대해 경고하고 신속한 패치 적용을 권고했다.
Bash 사용 여부 및 Bash 버전 확인 방법
운용 중인 서버 또는 서비스의 Bash 사용 여부 및 해당 취약점에 영향을 받는 Bash 버전의 사용여부는 아래의 명령을 통해서 확인할 수 있다.
또한 영향 받는 Bash 버전에 대한 상세한 정보는 US-CERT 등에서 제공하는 아래 웹사이트를 통해 확인할 수 있다.
Bash 코드 인젝션 취약점(CVE-2014-6271 / CVE-2014-7169)
아래 [그림 1]과 같이 환경변수의 함수 정의 뒤에 임의의 실행코드를 추가하면 Bash에서 해당 환경 변수를 임포트하는 과정에서 추가된 실행코드가 함께 실행된다.
[그림 1] 간단한 취약성 테스트 (*출처: 레드햇 블로그SECURITY BLOG)
최초 해당 취약점(CVE-2014-6271)을 보완하는 패치가 제공되었으나 파일을 생성할 수 있는 우회 코드가 확인되면서 이를 CVE-2014-7169 관련 보안 패치로 대응하기에 이르렀다([그림 2] 참고).
[그림 2] Bash 취약점 관련 CVE-2014-6271 및 CVE-2014-7169 패치 안내 (*출처: US-CERT)
사용 중인 시스템에 취약점 CVE-2014-7169이 존재 여부는 아래의 명령어를 통해 간단히 테스트 할 수 있다.
이외에도 해당 취약점 존재 여부를 확인할 수 있는 Bash 취약성 점검 도구들이 공개되어 있다. 시스템 관리자는 이러한 도구를 이용해 내부 시스템의 보안 안정성을 지속적으로 점검할 것을 권고한다.
Bash 코드 인젝션 취약점 스캔
공격자는 [그림 3]과 같은 과정을 통해 원격코드 실행을 테스트함으로써 해당 취약점이 포함된 Bash를 구동하는 웹 CGI 환경을 지속적으로 탐색하는 것으로 관찰되었다.
[그림 3] Bash 코드 인젝션 취약점 대상 스캔 과정
따라서 [그림 4]와 같이 일반적인 웹 환경의 /cgi-bin/ 디렉토리 이하의 CGI 프로그램에 접근하거나 웹 로그에서 임의의 실행코드 인젝션 행위가 관찰되는지 확인해볼 필요가 있다.
[그림 4] 웹서버 로그상의 Bash 코드 인젝션 취약점 스캔 행위
특히 웹 환경에서의 취약점을 갖는 Bash를 구동하는 웹 CGI 프로그램이 확인되면, 공격자는 검색 엔진을 통해 해당 프로그램을 이용하고 있는 공격 대상 웹 서버들을 손쉽게 확보할 수 있다. 이에 자동화 과정을 통해 다수의 공격 대상을 기반으로 한 좀비 네트워크 구성의 가능성이 대두되고 있다.
실제로 [그림 5]와 같이 일반적인 코드 인젝션 기법에 많이 이용되는 공격 기술이 연동되고 있는 형태가 계속해서 보고되고 있다. 외부의 웹사이트로부터 악의적인 실행코드를 다운로드 할 수 있는 wget 실행 명령어의 코드 인젝션을 통해 외부 웹사이트로부터 DOS 기능을 가진 리눅스형 악성코드(V3 진단명: Linux/CVE-2014-6271) 및 IRCBot 기능을 갖는 펄 스크립트형 악성코드 (Perl/Shellbot)를 /tmp 공간에 저장하고 실행하는 형태의 공격 방식을 취하고 있다.
[그림 5] wget 실행명령 코드 인젝션 공격 기법
현재 Bash 취약점을 이용해 공격자는 웹 서버의 콘텐츠 및 코드 변경, 웹사이트 변조, 사용자 데이터 유출 및 DDoS 공격 수행이 가능한 것으로 알려져 있다. 이 외에도 SSH, DHCP 프로토콜 등 다양한 환경 하에서의 Bash 코드 인젝션 취약점 공격 시나리오도 제기되고 있는 상황이다.
Bash 코드 인젝션 취약점 탐지 건수 지속적으로 증가
안랩은 자사 네트워크 통합 보안 솔루션인 트러스가드(TrusGuard)에 해당 취약점 관련 시그니처를 적용하고 모니터링한 결과, [그림 6]과 같이 Bash 코드 인젝션 취약점의 탐지 건수가 최근 들어 지속적으로 증가하고 있음을 확인했다. 이는 Bash 코드 인젝션 취약점을 점검할 수 있는 스캔 도구의 증가와 해당 취약점을 악용하는 실제 공격에 기인한 것으로 추측할 수 있다. 당분간 이러한 추세가 지속될 것으로 예상되는 만큼, 유입되는 공격에 대한 보안 담당자들의 지속적인 모니터링 및 대응이 필요하다.
[그림 6] 안랩 트러스가드의 Bash 코드 인젝션 취약점 탐지 건수 추이
Bash 코드 인젝션 취약점 대응 방안
우선, 사용 중인 시스템 및 서비스의 Bash 취약점 영향 여부를 파악하고 관련 보안 업데이트를 신속하게 적용해야 한다. 또한 Bash 코드 인젝션 취약점을 악용하는 임의의 원격코드 실행 공격에 대한 모니터링을 강화하는 한편, 침입차단시스템(IPS)을 이용해 공격 피해를 최소화하기 위한 조치를 선행해야 한다. 이 밖에도 취약한 Bash 버전을 이용하는 웹 CGI 프로그램을 운영하는 웹 서버는 없는지 확인하고, 반드시 필요한 경우가 아니라면 웹 CGI 프로그램의 서비스를 중지하거나 제거하는 것도 방법이다.
한편, 기존 취약점이 해결(수정)되었다 하더라도 공격자들은 지속적으로 우회 공격 방법을 연구한다. 따라서 Bash 취약점과 관련된 패치를 적용한 이후라도 당분간은 해당 취약점과 관련된 이슈를 민감하게 모니터링함과 동시에 새로 제공되는 보안 패치에 대해서 항상 신속하게 적용하여 최신 보안 상태를 유지할 수 있어야 한다.
안랩은 Bash 취약점 관련 위협 요소를 지속적으로 모니터링하고 있으며 관련 권고문을 신속하게 배포해 기업 및 일반 사용자들의 피해 최소화를 위해 최선을 다하고 있다. @
<참고 사이트>
● Trend Micro Blog
http://blog.trendmicro.com/trendlabs-security-intelligence/bash-vulnerability-shellshock-exploit-emerges-in-the-wild-leads-to-flooder/
● RedHat Blog
- AhnLab클라우드 분석팀 김지훈 팀장