본문 바로가기
보안과정/이슈거리

쉘쇼크(Shell shock)

by Luuii 2017. 11. 2.

kisa에서 제공하는 <GNU Bash 원격코드실행 취약점 FOCUS4 이슈 분석 및 대응방안> 

문서를 참고해서 요약함.

 

Shell shock

리눅스 계열 OS에서 주로 사용하는 GNU Bash에서 공격자가 원격에서 악의적인 시스템 명령을 실행 할 수있는 취약점.

 

1. 취약점 최초 발견자는 영국에서 IT매니저로 근무하는 프랑스인인 스테판 챠젤라스. 2014년 9월 12일 경 발견.

2. 해당 취약점이 존재하는 코드는 1993년도 이전부터 최근에 발견되기 전까지 20년 동안 존재.

3. 쉘쇼크로 인해 가장 영향을 받는 프로그램은 CGI(Common Gateway Interface).

CGI(Common Gateway Interface).

> 웹 서버에 요청된 페이지를 응용프로그램에 전달하고 처리하기 위한 인터페이스

 

4. 취약점 정보와 공격 도구가 공개된 즉시 인터넷 트래픽에서 이를 악용하는 공격들이 급증.

5. CGI 웹서버만을 대상으로 하는 공격자의 활동이 점점 NAS 장비등 여러 환경으로 확산.

6. 인터넷을 통해 간단한 명령만으로 시스템을 장악할 수 있는 심각성을 가짐.

7. 미국국립표준기술연구소(NIST)에서취약점 등급 10점으로 산정.

 

8. 보고된 취약점

 

 

9. 취약점이 발생한 부분은 Bash쉘이 제공하는 함수 선언 기능.

> "0 {"로 시작하는 문자열을 시스템 환경변수에 저장하면 동일한 이름을 가진 함수로 선언된다.

> 하지만 함수 선언문 끝에 임의의 명령어를 추가로 삽입할 경우, Bash가 함수문에서 처리를 멈추지 않고 추가로 삽입한 명령어를 계속 실행 시키기 때문에 문제가 발생.

>> 환경변수에 합수와 명령어를 함께 새로운 Bash 프로세스에 주입시킬 경우 해당 프로세스가 입력 값을 시스템의 환경변수로 등록하는 과정에서 리눅스명령어까지 자동으로 실행.

 

10. Bash의 소스코드 분석 시, evalstring.c 파일 내에 정의되어 있는 parse_and_execute() 함수에서 Bash에 전달된 명령어를 처리하여 실행.

 

11. 이때 명령어 문자열을 처리하는 과정에서 반복문(while)을 사용하는데, 함수 선언문 뒤에 명령어가 삽입된 것을 확인하고 반복문을 종료시키는 코드가 없음. 따라서 함수 선언문의 끝까지 처리한 뒤에도 반복문이 계속 실행되어 삽입된 명령어가 실행.

 

11. 취약점을 해결한 패치에서는 parse_and_execute() 함수를 호출할 때 특정 플래그 값을 주어 함수 선언문을 처리할 경우 다른 추가적인 명령어를 처리하지 않도록 수정.

 

12. 만약 외부로부터 환경변수를 전달받아 Bash 쉘을 통해 명령어를 실행하는 서버가 존재하면, 공격자는 함수 선언문 뒤에 임의의 명령어를 삽압시켜 해당 프로세스의 권한으로 실행 시킬 수 있음.

 

13. 직접적으로 명령어 주입이 가능한 취약점이기에 ASLR(Address Space Layout Randomization) 등의 OS 보호 매커니즘에 전혀 영향을 받지 않아 공격 성공률이 매우 높음.

ASLR(Address Space Layout Randomization)

> 프로그램이 실행 될 때 마다 메모리 주소를 랜덤하게 배치.

 

14. 각 OS 개발자에서는 보안 패치를 신속하게 발표 했으나 구글의 보안 연구원인 타비스 오르만디는 자신의 트위트를 통해 해결된 패치를 적용해도 함수 선언문 처리 과정에 여전히 문제점이 있다고 밝혀 재 이슈화.

 

15. 이후 레드햇의 연구원인 토드사빈, 플로리안 웨이머는 Bash가 10개 이상의 리다이렉트 명령문을 처리하거나 특수한 반복문을 처리하는 과정에서 잘못된 메모리 접근을 유발할 수 있다는 추가적인 취약점을 공개.

 

16. 구글의 미첼 잘루스키는 Bash의 함수 처리 부분을 퍼징(Fuzzing)하는 동안 두가지 취약점을 추가적으로 발견.

퍼징

> 소프트웨어에 임의의 데이터를 무작위로 입력하여 보안상의 취약점을 찾아내는 기술.

 

17. 그 중 CVE-2014-6277은 할당되지 않은 메모리에 접근하는 취약점. 공격자가 원하는 메모리 주소를 읽거나 그 주소에 데이터를 쓰도록 제어가 가능.

 

18. 추가 발견된 취약저은 첫 번째 취약점과 유사하게 직접적으로 명령어를 삽입 할 수 있는 취약점. 그러나 CVE-2014-6271를 해결한 첫 보안 패치를 설치했을 경우만 취약한 제한 사항이 있음.

 

19. 신속하게 최신 패치로 업데이트 해야함.

 

20. 쉘쇼크 취약점은 시스템에 GNU Bash가 설치되어있다고 무조건 공격에 영향을 받는 것은 아니며 환경변수를 통해 Bash를 호출할 수 있는 프로그램 또는 스크립트가 시스템 내에 존재할 경우 취약점에 영향을 받는 특성을 가짐.

 

21. Bash 취약점에 취약하다고 알려진 프로그램들.

>> 이 프로그램들 외에도 외부 데이터를 환경변수로 설정하여 Bash를 실행시키는 방식으로 동작하는 프로그램이 있다면 마친가지로 취약점에 영향 받을 수 있음.

 

22. 특히 Apache를 통해 인터넷에 CGI 페이지를 서비스하고 있는 경우 공격에 별다른 제약 조건이 없어 공격자들이 가장 선호하는 공격 대상으로 분석.

 

공격 유형

1. 공격자의 서버에 포트를 열어놓고 피해자의 서버에서 공격자 서버로 접속하도록 유도.

 

2. 악성코드 유포지 서버에서 악성코드를 다운로드하여 실행.

 

3. 공격자가 ping을 통해 대상 서버가 취약한지 체크.

4. 대상 시스템의 계정정보(etc/passwd)를 탈취.

 

5. 웹 디렉토리에 웹셀(악성 스크립트) 생성.

 

6. 시스템을 강제로 재시작하여 서비스 거부 발생.

 

7. 시스템의 파일 중 .php 확장자로 된 파일을 삭제하여 웹 서비스 방해.

 

8. 디렉토리 전체 파일을 삭제하여 시스템 파괴.

 

9. 공격자 메일로 메일을 발송하여 대상 시스템의 취약 여부 확인.

 

10. sleep 함수를 통해 대상 시스템의 응답 시간을 체크하여 취약 여부 확인.

 

 

공격 가능 시나리오

1. 악용 가능성이 제일 높은 것 CGI 페이지에 대한 공격

2. CGI는 HTTP 패킷의 헤더의 데이터를 환경변수로 설정하여 쉘을 실행.

3. 헤더 부분에 취약점을 공격하는 페이로드를 삽입하면 CGI페이지를 운영 중인 서버에 임의의 명령어를 실행 시킬 수 있음.

 

4. QMAIL 또한 Bash를 사용하여 명령어를 실행시키는 프로그램의 일종.

5. QMAIL은 유닉스용 오픈소스 메일 전송 에이전트. sendmail보다 더 안전한 보안성을 제공하고자 개발.

6. QMAIL을 통해 메일을 전달 할 때, 확장자가 .qmail인 파일에 메일 수신자에게 전달할 프로그램 목록을 저장.

7. 메일을 실제 수신자에게 전달할 때, .qmail 파일을 파싱하여 실행하는데, 이 때 Bash를 사용.

8. 실행 할 때 SENDER라는 환경변수를 정의하는데 SENDER 값에 공격자가 명령어를 삽입하면 QMAIL이 .qmail 파일을 처리하는 과정에서 악의적인 명령어가 실행.

 

 

 

 

본문으로 돌아와서

22. 관측된 공격자의 주요 활동으로는 취약점 스캔, 악성코드 유포, DDos 공격을 위한 봇넷 구성 등, 이들 중 불특정 다수를 대상으로 취약한 시스템을 검색하는 스캔 공격이 가장 빈번함.

 

23. 2014년 9월 26일 쉘쇼크의 취약점을 이용하는 최초 봇넷 악성코드로 알려진 "wopbot"이 등장.

> 미 국방성 IP 주소 범위(215.0.0.0/8)를 대상으로 한 스캔 공격과 컨텐츠 전송네트워크(CDN)서비스를제공하는 아카마이 사에 대한 DDos공격을 수행.

 

24. 시스코 장비에 의해 탐지된 공격 IP중 가장 활발한 공격 시도가 있었던 IP소재지로 61.160.224.130(중국)이 확인됨.

 

25. 국내를 대상으로 한 국가별 공격 탐지건수는 프랑스 IP가 4480으로 가장 많았음.

 

취약점 대응방안

1. Bash 업데이트

2. 사용하지 않는 CGI 페이지 삭제 또는 관련 서비스 중지.
3. 네트워크 탐지룰 설정.

> 네트워크 보안장비(IPS/IDS/웹방화벽) 단에서 공격 시그니처를 등록하여 차단 할 수 있음.

 

반응형

'보안과정 > 이슈거리' 카테고리의 다른 글

XSS란  (0) 2017.11.11