Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보Adobe Reader Double Free with Windows Win32k EOP
작성일 2018-05-17 조회 219

 

ESET 연구원들의 블로그에 따르면, 2018년 3월 말 ESET 연구원들은 흥미로운 악성 PDF 샘플을 발견했습니다. ESET 연구원이 발견한 샘플을 살펴보면 이전에 알려지지 않은 두 가지 취약점, 즉 Adobe Reader의 원격 코드 실행 취약점과 Microsoft Windows의 권한 상승 취약점을 악용하는 것으로 나타났습니다.

 

이와 관련하여 전세계적으로 이슈가 되고 있으며, 충분히 악용 가능한 사례로 판단하고 있습니다. 현재 두 취약점은 모두 패치가 진행 완료 되었습니다.

 

Adobe 및 Microsoft의 패치 및 권고는 다음에서 확인할 수 있습니다.

 

[Adobe 보안 권고] 

https://helpx.adobe.com/security/products/acrobat/apsb18-09.html

[Microsoft 보안 권고]

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120

 

 

영향 받는 제품

 

Adobe Systems Acrobat 2017 2017.011.30079 and earlier

Adobe Systems Acrobat DC (Classic) 2015.006.30417 and earlier

Adobe Systems Acrobat DC (Continuous) 2018.011.20038 and earlier

Adobe Systems Acrobat Reader 2017 2017.011.30079 and earlier

Adobe Systems Acrobat Reader DC (Classic) 2015.006.30417 and earlier

Adobe Systems Acrobat Reader DC (Continuous) 2018.011.20038 and earlier

Microsoft Windows 7

Microsoft Windows 8.1

Microsoft Windows 10

Microsoft Windows RT 8.1

Microsoft Windows Server 2016

Microsoft Windows Server 2008

Microsoft Windows Server 2012

 

 

공격 프로세스

 

1) 악성 PDF 파일을 열면 악의적인 자바스크립트 실행

2) 자바스크립트 코드는 Button 객체를 조작

3) Button 객체에는 특수하게 조작된 JPEG2000 이미지가 포함되어 있음

   이로 인해 Adobe Reader에서 double-free 취약점 발생

4) 자바스크립트 코드는 힙 스프레이 기술을 사용하여 메모리 읽기/쓰기를 위한 메모리 접근 성공

5) 자바스크립트 코드는 Adobe Reader의 자바스크립트 엔진과 상호 작용

6) 엔진 고유의 어셈블리 지침(ROP 가제트)을 사용하여 고유한 쉘코드를 실행

7) 쉘코드는 PDF에 포함된 PE 파일을 초기화 함

8) Adobe Reader 취약점 성공 후, Windows 0-day 취약점(CVE-2018-8120)을 활용하여 샌드박스 우회

9) Win32k 0-day취약점(CVE-2018-8120)은 공격자로 하여금 PE 파일을 실행 할 수 있도록 권한 상승 시킴


 

취약점 분석

 

CVE-2018-4990: Adobe Reader Double Free

 

악성 PDF 샘플에는 익스플로잇 프로세스를 제어하는 악의적인 자바스크립트 코드가 내장되어 있습니다. 해당 자바스크립트는 PDF 파일이 열리면 바로 실행됩니다.

 

익스플로잇을 시작하기 전, 자바스크립트 코드는 Button1 객체를 조작합니다. 이 객체에는 Adobe Reader에서 double-free 취약점을 일으키는 조작된 JPEG2000 이미지가 포함되어 있습니다.

 

[그림1] Button1 객체를 조작하는 자바스크립트 코드

 

자바스크립트는 내부 데이터 구조를 손상시키기 위해 힙 스프레이 기법을 사용합니다. 이러한 모든 조작을 한 후, 공격자는 자바스크립트 코드에서부터 메모리에 접근하여 읽고 쓰기를 할 수 있는 주요 목적을 성취하게 됩니다.

 

[그림2] 메모리 읽기 및 쓰기에 사용되는 자바스크립트 코드

 

이 두 가지 기본 요소를 사용하여 공격자는 Adobe JavaScript 엔진 인 ‘EScript.api’ 플러그인의 메모리 주소를 찾습니다. 해당 모듈의 어셈블리 명령어(ROP gadgets)을 사용하여 악의적인 자바스크립트가 쉘 코드를 실행하게 하는 ROP 체인을 설정합니다.


 

[그림3] ROP 체인을 만드는 악성 자바스크립트

 

마지막 단계에서 쉘코드는 PDF에 포함된 PE 파일을 초기화하고 실행을 전달합니다.

 

 

CVE-2018-8120: Microsoft Windows Privilege escalation

 

Adobe Reader 취약점을 악용한 공격자는 샌드 박스를 우회하려고 합니다. 이것이 바로 두 번째 익스플로잇의 목적입니다.

 

이 취약점의 근본 원인은 win32k Windows 커널 구성 요소의 NtUserSetImeInfoEx 함수에 있습니다. SetImeInfoEx의 서브 루틴, NtUserSetImeInfoEx는 null 포인터 역 참조를 허용함으로 데이터 포인터를 확인하지 않습니다.

[그림4] 디스어셈블된 SetImeInfoEx 루틴

 

[그림4]에서와 같이 SetImeInfoEx 함수는 초기화 된 WINDOWSTATION 개체에 대한 포인터를 첫번째 인수로 사용합니다. spklList는 공격자가 새로운 윈도우 스테이션 객체를 생성하고, 사용자 모드에서 현재의 프로세스에 할당하는 경우 0과 동일 할 수 있습니다. 따라서 NULL 페이지를 매핑하고 오프셋 0x2C 포인터를 설정함으로 공격자는 이 취약점을 활용하여 커널 공간의 임의의 주소에 쓸 수 있습니다.

 

공격자는 임의의 쓰기 primitive 를 가지므로 다른 기술을 사용할 수 있지만, 이 경우 공격자는 Ivanlef0u Mateusz "j00ru"Jurczyk 및 Gynvael Coldwin이 설명하는 기술을 사용했습니다. 공격자는 GDT (Global Descriptor Table)를 다시 작성하여 Ring 0에 대한 call gate를 설정합니다. 이렇게 하기 위해 공격자는 SGDT 어셈블리 명령어를 사용하여 원래 GDT의 주소를 가져 와서 자체 테이블을 만든 다음 위에서 언급한 취약점을 사용하여 원래의 테이블을 다시 작성합니다.

 

그런 다음 익스플로잇은 CALL FAR 명령을 사용하여 권한 간 레벨 호출을 수행합니다.

 

[그림5] 디스어셈블된 CALL FAR 명령어

 

코드가 커널 모드에서 실행되면, 익스플로잇은 현재 프로세스의 토큰을 시스템 토큰으로 대체합니다.


 

취약점 대응 방안

 

1. 보안 패치 적용

해당 벤더사에서 발표한 보안 권고문을 참고하여 패치를 적용합니다.

[Adobe 보안 권고] 

https://helpx.adobe.com/security/products/acrobat/apsb18-09.html

[Microsoft 보안 권고]

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120

 

 

2. WINS Sniper 대응 방안

 

*Sniper IPS

[4288] Adobe Reader Double Free with Windows Win32k EOP

[4289] Adobe Reader Double Free with Windows Win32k EOP.A

 

*Sniper UTM

[805374566] Adobe Reader Double Free with Windows Win32k EOP

[805374567] Adobe Reader Double Free with Windows Win32k EOP.A

 

*Sniper APTX

[3540] Adobe Reader Double Free with Windows Win32k EOP

[3541] Adobe Reader Double Free with Windows Win32k EOP.A

 

 

참고 자료

https://www.welivesecurity.com/2018/05/15/tale-two-zero-days/

https://xiaodaozhi.com/exploit/156.html

https://blog.malwarebytes.com/threat-analysis/2018/05/adobe-reader-zero-day-discovered-alongside-windows-vulnerability/

 
첨부파일 첨부파일이 없습니다.
태그 CVE-2018-4990  CVE-2018-8120