Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보FDF UXSS via trusted document
작성일 2017-06-02 조회 1346

1.개요

Adobe PDF Plugin이 설치되어 있는 모든 웹 브라우저에서, PDF를 신뢰함으로 UXSS 공격이 가능한 PoC가 공개 되었다. 현재 보고된 악용 사례는 없지만, 모든 웹 브라우저에서 공격이 가능하다는 점에서 유의할 필요가 있다. 공격에 사용된 방식은 PDF와 유사한 FDF 파일을 이용해 UXSS 공격을 진행 했다.

 

 

2.분석 진행

실제 공개된 PoC를 기반으로 환경 구축을 통해 공격을 시도해보았다. PoC를 기반으로 했기 때문에 단순히 경고창이 뜨는 형태로 분석이 진행 되었다. 먼저 공격에 사용된 FDF 파일에 대해 살펴보자. FDF파일은 PDF와 비슷한 구조를 가지고 있지만, 어떤 세부 사항도 들어가 있지 않는 파일이다. 또한, FDF 파일은 PDF 표준에 정의되어 있는 파일이다. (http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf#page=710)

 

여기에서 주목해야 할 사항은 FDF 파일에서 루트 구조에 두개의 키를 정의 함으로 취약점을 발생 시킬 수 있다는 점이다. 이번 공격을 위해 사용된 FDF 파일의 루트 구조의 두개의 키는 다음과 같이 정의되어 있다.

 

/F: 원본 파일 or 대상 파일 (FDF 파일을 내보 냈거나 가져올 예정인 PDF 문서 파일)
/Target: 원본 PDF 문서가 열리는 브라우저 프레임의 이름. 이는 HTML 태그에서 대상 속성의 동작을 모방 한 것임

 

기본적으로 위의 두 키를 사용하여 FDF가 속한 PDF와 현재 로드 된 창 이름을 정의 할 수 있다. 아래와 같이 두 키를 정의하게 되면, 웹 브라우저에서 FDF를 로딩하는 신뢰 할 수 없는 PDF 파일 로딩 시, 경고 상자가 표시된다. 이때 사용자가 PDF 파일을 실행하겠다고 선택하게 되면, 아래에 정의 해둔 /F 키에 정의되어 있는 URL이 실제 공격 대상 창 이름에 삽입된다. 그 결과, 특정 이름의 탭에 정의해둔 URL이 로드되고, 해당 페이지에서 자바스크립트가 실행된다. 

 

/F (javascript:alert(location))
/Target (anywindowname)

 

 

 

 

 

2-1. PoC 코드 분석

다음은 PDF과 FDF PoC 샘플 파일 정보이다.


[그림1] PDF PoC

 


[그림2] FDF PoC

 


[그림3] index.html 파일

 

여기에서 살펴 볼 점은 공격대상으로 https://www.naver.com 으로 설정되어 있음을 알 수 있으며, 해당 값은 FDF 파일의 Target 키 값으로 사용된다.


[그림4] index.html 파일 (attack input 정보)

 


[그림5] naver.com이 attack 값으로 사용

 


[그림6] attack 변수 값 사용 위치

 

위 [그림6]의 FDF 파일에서 javascript:alert(location)을 사용하여 /Target (attack)으로 설정해둔 페이지에서 스크립트를 실행 시킬 수 있음을 확인 할 수 있다.

 

 

 

2-2. 동적 분석

 

이제 실제적으로 해당 PoC 동작 방법을 살펴보도록 하자.

1) 웹서버 루트에 index.html, test.pdf, test.fdf 저장

2) 웹서버로 접근하여 index.html을 IE로 오픈(Adobe PDF plugin이 설치되어 있는 IE)

3) Victim 페이지 로딩(새로운 탭으로 열림)

4) PDF 파일 로딩

5) 노란색 경고 박스가 뜨며, 문서 신뢰하기 클릭

6) 문서 파싱 에러가 뜸

7) UXSS 버튼 클릭시, 공격 대상 페이지에서 경고 창이 뜨게 됨(새로운 탭으로 열었던 페이지에서 실행 됨)

 

 

위에서 설명한 PoC 동작 방법을 토대로 먼저 공격 웹 서버(192.168.1.207)에 index.html,test.pdf,test.fdf 파일을 웹서버 루트에 저장한다.


[그림7] 웹서버 루트에 파일 저장

 

해당 웹 서버로 접근하여 index.html 파일을 호출한다. target 서버로 naver.com을 사용하기로 했기에 입력 창에 이미 https://www.naver.com이 기입되어 있는 것을 확인 할 수 있다. 이제 "Load Victim Page" 버튼을 클릭하게 되면 새탭에 네이버 페이지가 뜨게 된다.

 


[그림8] index.html 로딩
 


[그림9] 새탭에 네이버 페이지 로딩

 

index.html 파일에서 Load PDF를 클릭 시, 다음과 같이 보안 경고 창이 뜨는 것을 확인 할 수 있다. 보안 경고 창에서 한번 허용을 클릭하게 되면 PDF에 들어 있는 FDF 파일이 로딩 된다. 이때 문서 파싱 에러가 뜨는 것을 확인 할 수 있다.

 


[그림10] 보안 경고

 


[그림11] 보안 경고 허용 클릭

 


[그림12] 문서 파싱 에러

 

문서 파싱 에러가 발생 된 후, 파일은 정상적으로 로드가 되고 UXSS 버튼 클릭시 새탭에 열어 둔 네이버 페이지에서 스크립트가 실행되는 것을 확인 할 수 있다.

 


[그림13] 네이버 페이지에서 스크립트 실행

 


[그림14] UXSS 공격 성공

 

 

 

3.대응방안

3-1. 신뢰 할 수 없는 문서는 열지 않는다.

 

 

3-2. 당사에서 제공하는 Snort Rule로 대응한다.


Snort Rule은 시큐어 캐스트에 게시.


 

4. 참고

http://insert-script.blogspot.kr/

http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf

http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf#page=710

첨부파일 첨부파일이 없습니다.
태그 UXSS  FDF