MS Windows CHM File Processing Buffer Overflow

취약점 분석/2009년 이후 2009. 2. 10. 16:30 Posted by 알 수 없는 사용자

▷ 작성자 : InPire(aramlee@a3sc.co.kr)
▷ 편집자 : 니키 (ngnicky@a3sc.co.kr)

 


MS Windows CHM File Processing Buffer Overflow

취약점 보안 권고안




1. 요 약

CHM 파일은 HTML문서와 이미지, 자바스크립트 등을 하나의 파일로 모아 HTML로 컴파일된, MS Windows 플랫폼에서 사용되는 도움말 파일이다. 이 취약점은 CHM파일을 실행할 때 발생하는 버퍼오버플로우로 DoS가 발생한다.

2. 대상시스템
이 취약점은 MS Windows XP Service Pack 3 에서 적용된다.

3. 심각도 및 취약점 확인

취약점 영향

MS Windows CHM File Processing Buffer Overflow

원격 버퍼 오버플로우



Ⅱ. 취약점 세부 분석

1. 취약점 내용
취약점 분석은 아래 URL의 POC로 분석하였다.

http://www.milw0rm.org/exploits/7720

POC를 실행하여 만들어진 chm파일을 더블클릭하여 실행하면 다음과 같은 오류메시지가 뜬다.

[그림 1] Windows CHM 파일 실행 오류


윈도우에서 CHM 파일을 로딩할 때, itss.dll을 로딩한다. itss.dll은 Microsoft 저장 시스템에 의해 사용되는 함수를 담은 파일이다. 이 itss.dll의 “TEST [ECX], EAX” 부분에서 취약점이 존재한다. 이 때,  ECX의 값은 40964이며, 0x40964의 위치을 찾을 수 없기 때문에 액세스 위반으로 인한 오버플로우가 발생한다.

[그림 2] 버퍼오버플로우 발생지점


2. 공격 분석

CHM 파일 포맷은 다음과 같다.

The Header

0000

ITSF(Info-Tech Storage Format)

 

0004

버전

3

0008

전체 헤더 길이

96 bytes

000C

unknown

1

0010

A Time stamp

 

0014

윈도우 언어 ID (Big-endian)

English

(Ireland)

 

0018

GUID

 

0028

GUID

 

The Header Section Table

0000

파일이 시작하는 부분부터의 오프셋

 

0008

섹션의 길이

 

Additional header data

0000

파일안에 콘텐츠 섹션의 오프셋

 

Header Section 0

0000

$01FE. Unknown(Big-Endian)

 

0004

unknown

0

0008

파일 크기

 

0010

Unknown

0

0014

Unknown

0

 

Header Section 1 : The Directory Listing

0000

ITSP

 

0004

버전

1

0008

Directory header 길이

 

0010

unknown

$0a

0014

“Density” of quickref section

 

0018

Depth of the index tree

 

001C

Chunk number of root index chunk

 

0020

Chunk number of first PMGL chunk

 

0024

Chunk number of last PMGL chunk

 

0028

unknown

-1

002C

디렉토리 chunk

 

0030

윈도우 언어 ID

 

0034

GUID

 

0044

길이

$54

0048

Unknown

-1

004C

Unknown

-1

0050

unknown

-1

표 1 CHM File Format



익스플로잇에 삽입된 기계어코드를 파일 포맷에 따라 분석하여보면, Header Section 1에서 ITSP, 버전을 제외한 값은 모두 \x41로 채워져 있다. 아래 그림에서 붉은 글씨 부분이 Header Section 1부분이다.

[그림 3] 익스플로잇에 삽입된 기계어코드


Header Section 1 부분에 엉뚱한 코드를 넣어 ECX값을 변조하여 [ECX]를 액세스 할 수 없게 만든다.

3. 위험 분석
Header Section 1에 이상한 코드가 삽입된 CHM파일을 실행할 때, [ECX]의 위치를 액세스할 수 없어 오버플로우로 인해 DoS가 발생한다.


Ⅲ. 대응 방안


1. 보안 대책

현재 패치가 없는 상태이기 때문에, 의심스러운 도움말파일(CHM 파일)은 열지 않아야 한다.

패치는 헤더값을 읽어올 때 데이터 변환과정의 알고리즘을 패치하는 방법으로 이루어질 것이라고 예상된다.


2.  관련 사이트
본 취약점에 대한 추가적인 정보를 확인할 수 있는 관련 사이트는 다음과 같다.

CVE-2009-0119
Bugtraq Id: 33204
http://www.milw0rm.org
http://www.securityfocus.com/bid/33204



Copyright(c) 1998-2009 A3 Security ,LTD


Disclaimer
※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.