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

 

[A3AID08-05]

MS Media Player *(.WAV) Remote Integer Overflow

공격 보안 권고안



1.취약점 내용

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

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

POC를 실행하여 만들어진 int-ov.wav 파일을 윈도우 미디어 플레이어로 실행시키면, 다음과 같은 오류메시지가 뜬다.


[그림 1] Windows Media Player 오류

윈도우 미디어 플레이어에서 WAV 파일을 로딩할 때, quartz.dll에 있는 MulDivRN(x, x, x) 함수를 호출하는데, 다음은 이 함수의 코드이다.


[그림 2] MulDivRN(x,  x,  x) 함수


프로세서가 “div reg” 명령을 실행할 때, 다음과 같이 실행한다.

EAX = (EDX:EAX)/reg 

DIV 연산의 결과가 32bit를 넘어서면CPU 예외가 발생하는 데, quartz.dll에 이러한 예외처리를 위한 루틴이 없다.

 
2. 공격 분석

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


[그림 3] WAVE file format.

WAVE 파일 포맷의 시작은 RIFF 부분이다.

ChunkID : ASCII로 “RIFF”라는 단어를 포함한다. (0x52494646, big endian)

ChunkSize : 파일의 전체 크기에서 8바이트를 뺀 값이다. 이 때, 8바이트를 빼는 이유는 ChunkID와 ChunkSize 두 필드를 포함하지 않기 때문이다.

Format : “WAVE”라는 단어를 포함한다. (0x57415645, big endian)

“fmt ”는 sound data 포맷을 설명하는 부분이다.

Subchunk1ID : “fmt “라는 단어를 포함한다. (0x666d7420, big endian)

Subchunk1Size : 16 for PCM. Subchunk의 잔여 사이즈이다.

AudioFormat : PCM=1. 이 값이 같으면 같은 압축방식이다.

NumChannels : Mono=1, Stereo=2, 기타.

SampleRate : 8000, 44100, 기타.

ByteRate : == SampleRate * NumChannels * BitsPerSample/8

BlockAlign: == NumChannels * BitsPerSample/8

모든 채널을 포함하는 샘플의 바이트 수이다.

BitsPerSample : 8 bits = 8, 16 bits = 16, 기타.

 

“data” 부분은 데이터의 크기와 실제 소리를 포함한다.

Subchunk2ID : “data”단어를 포함한다. (0x64617461, big endian)

Subchunk2Size : == NumSamples * NumChannels * BitsPerSample/8

데이터의 바이트 수이다.

Data : 실제 데이터이다.


다음은 위에서 사용한 익스플로잇의 힙이다.


[그림 4] 익스플로잇의 힙

다음은 72바이트인 WAVE 파일의 힙이다.


[그림 5] 일반적인 WAVE 힙

 

이 두 힙을 비교해보면 알 수 있듯이, 익스플로잇은 RIFF도, WAVE도, fmt도, 아무것도 없는 잘못된 포맷이다.

일반적인 WAVE 파일은 헤더가 “52 59 46 46”으로 시작해야하고, 9~12바이트에서 “57 41 56 45”(“WAVE”)가 있어야하며 뒤이어 “66 6d 74 20”(fmt )가 있어야 한다.

이 잘못된 형태의 멀티미디어파일을 타겟 유저가 실행함으로써 예외가 발생하여 정수형 오버플로우를 유발한다.

 

3. 위험 분석

비정상적인 형태의 파일이 취약한 버전의 Windows Media Player로 재생될 때 정수형 오버플로우로 인해 DoS가 발생한다.


4. 대응 방안


현재 패치가 없는 상태이기 때문에, 의심스러운 WAV, SND, MID 파일을 Windows Media Player로 열지 않아야 한다.

패치는 해당 함수의 DIV 연산 수행시에 값의 최대값을 check를 하는 방법으로 이루어질 것이라고 예상된다.


5. 관련 사이트

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

CVE-2008-5745

CWE-189

http://www.milw0rm.org

http://securityreason.com/securityalert/4823

http://blogs.technet.com/msrc/archive/2008/12/29/questions-about-vulnerability-claim-in-windows-media-player.aspx

http://www.securityfocus.com/bid/33018



C
opyright(c) 1998-2009 A3 Security ,LTD


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