Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2017-8570] MS Office Composite Moniker 취약점
작성일 2018-02-09 조회 1910

개요

 

Microsoft Office에 원격 코드 실행 취약점이 존재한다. 해당 취약점은 오피스 문서에 삽입되어 있는 OLE 객체를 제대로 처리하지 못해 발생한다. 원격의 공격자는 사용자로 하여금 악의적으로 조작된 파일을 열어보도록 유도하여 공격 할 수 있다.

 

공격 성공 시, 현재 로그인된 사용자의 보안 컨텍스트 내에서 임의의 코드 실행이 가능하다.

 

[CVE 정보]

CVE-2017-8570

 

[취약한 버전]

Microsoft office 2007 sp3

Microsoft office 2010 sp2

Microsoft office 2013 sp1

Microsoft office 2013 sp1 rt

Microsoft office 2016

 

 

확인 내역

 

다음은 실제 샘플 정보이다.

 

[그림1] 샘플 정보


 

샘플은 RTF 파일 형태로 구성되어 있다.


 

[그림2] 샘플 내용


 

RTF 파일에는 2개의 objdata 가 존재한다. 첫번째 객체 정보는 악의적인 스크립트 파일을 포함하는 패키지 객체이다.

 

[그림3] 패키지 객체

 

다음은 OLE2Link 객체로 취약점이 포함된 객체이다.


[그림4] OLE2Link 객체

 

이제 대략적인 샘플의 구성에 대해서 살펴보았다. 이제 실제 해당 샘플을 파싱해서 OLE 객체의 내용을 살펴보도록 하겠다. RTF 파일은 위에서도 설명했듯이, 2개의 OLE 객체로 구성되어 있다.

[그림5] OLE 객체 정보

 

여기에서 첫번째 객체를 살펴보면, 다음과 같이 패키지 파일이 들어 있는 것을 확인 할 수 있다. 해당 패키지 파일은 악의적인 스크립트 파일로, 취약점이 발생하면서 사용자의 PC에 생성되고 실행되게 된다.

 

[그림6] Package 객체

 

두번째 객체는 취약점을 포함하는 OLE2Link 객체이다. OLE2Link 객체 안에는 취약점을 발생시키는 StdOleLink 클래스와 관련된 OLE 객체가 포함되어 있는 것을 확인 할 수 있다.

 

[그림7] OLE2Link 객체


 

[그림8] StdOleLink 클래스와 관련된 OLE 객체

 

해당 취약점은 MS 오피스가 실행 될 때, StdOleLink 클래스와 관련된 OLE 객체를 처리하는 과정에서 발생한다. 또한 오피스가 실행되는 과정 중에 해당 개체를 활성화 시킬 수 있으며, 이를 통해 sct 스크립트(Windows Script Component)를 실행 할 수 있게 된다.

 

StdOleLink 클래스 객체는 Moniker를 사용하여 원격 OLE 개체를 식별하는데 사용되며, Moniker는 다른 개체를 식별하는 개체이다. 여기에서 우리가 주목해야 할 점은 복합 모니커(Composite moniker)로 복합 모니커 (composite moniker)는 다른 모니커의 구성이며 부품 간의 관계를 판별 할 수있는 모니커이다.

 

OLE2Link 객체 안에는 Composite Moniker, File Moniker, New Moniker도 포함되어 있다는 것을 확인 할 수 있다.

[그림9] Composite Moniker, File Moniker, New Moniker 정보


 

이제 취약점 발생 원인에 대해서 설명해보도록 하겠다.

 

해당 취약점은 StdOleLink 클래스와 연결된 OLE 개체가 오피스 문서에 포함되어 있으면, Moniker가 링크된 개체를 확인하기 위해 구문 분석을 시작한다. File Moniker, New Moniker로 구성된 경우, File Moniker에 포함되어 있는 파일 경로에 객체가 생성되고 초기화 된다. 이때, Office는 File Moniker로 초기화 된 개체가 “scriptletfile” 개체인지 확인하지 못한다. 이 경우, ‘.sct’ 확장자명으로 끝나는 파일을 가져오게 되고, New Moniker는 개체의 IClassFactory::CreateInstance() 함수를 호출한다. 그 결과, 임의의 코드 실행을 포함하고 있는 악의적인 scriptlet 파일을 실행시키게 된다. 바로 이것이 취약점 포인트이다.

 

위의 [그림9]를 가지고 취약점 발생 원인에 근거하여 설명하면 다음과 같다. StdOLE 클래스와 관련된 OLE 객체가 포함되어 있으므로, 오피스는 Moniker를 실행한다. 여기에서 사용된 Moniker는 Composite Moniker 이며 File Moniker를 통해 먼저 %TMP% 디렉토리에 스크립트 파일(.sct)을 생성하게 된다. 이 과정에서 우리는 생성되는 스크립트 파일은 패키지에 들어 있던 악성 파일인 것을 확인 할 수 있다. File Moniker를 이용해 파일 생성 및 초기화를 하는 과정에서 이 스크립트 파일을 제대로 검사하지 않는다. 그 결과, New Moniker를 통해 생성된 악성 스크립트 파일이 실행되는 것이다.

 

 

대응방안

1. MS 보안 업데이트

MS보안 권고

https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2017-8570

 

2. 당사 Sniper 에서는 아래의 패턴으로 대응 가능하다

[IPS 패턴블럭]

4071, MS Office Composite Moniker Execution

4072, MS Office Composite Moniker Execution.A

 

[UTM]

805374429, MS Office Composite Moniker Execution

805374430, MS Office Composite Moniker Execution.A

 

[APTX]

3302, MS Office Composite Moniker Execution

3303, MS Office Composite Moniker Execution.A



 

참고

https://github.com/rxwx/CVE-2017-8570

https://justhaifei1.blogspot.co.uk/2017/07/bypassing-microsofts-cve-2017-0199-patch.html

http://sec.njust.edu.cn/83/8d/c8609a164749/page.htm

 

첨부파일 첨부파일이 없습니다.
태그 Composite Moniker  CVE-2017-8570