posted by Kwan's 2013. 1. 15. 18:57


PDF 취약성과 익스플로잇에 대해 생각할 때, 가장 먼저 떠오르는 단어는 아마도 Adobe일 겁니다.

그 이유는 Adobe PDF 리더가 오랜 시간 동안 시장에서 가장 널리 사용되는 제품이었고 공격자와 연구원들에게 가장 많은 타깃이 되어왔기 때문입니다.

하지만 PDF 소프트웨어 시장에는 수많은 도전자들이 있는데, 다만 “다른 점”은 스스로 보안을 운영하기에는 충분하지 않다는 것을 명심하십시오.

또한, Adobe가 자체 보안에 중점을 둔 sandbox 기능이 있는 Reader X를 출시했기 때문에, 사기꾼들과 연구원들은 Adobe PDF가 크랙하기에 훨씬 더 힘들다는 것을 알게 된 것 같습니다.

그래서 여러분은 다른 PDF 소프트웨어 벤더들이 아마도 지난 수년 동안 전적으로 Adobe를 목표로 해왔을 거라는 열의를 좀 느끼기 시작하였다는 것을 예상할 수 있습니다.

여기 한가지 예가 있습니다. 이탈리아 보안 연구원 안드레아 미켈리치(Andrea Micalizzi)는 최근에 Firefox용 최신 Foxit PDF 플러그인에서 익스플로잇 가능성이 있는 취약점을 발견하게 되었습니다.

사실 미켈리치가 기술검증(proof-of-concept)용 익스플로잇을 만들었던 것은 아니지만, 저는 그의 익스플로잇을 마음대로 복제할 수 있었습니다.
(전 Windows XP3에 Foxit 플러그인 2.2.1.530이 설치된 Firefox 18.0을 사용하였습니다.)

스택 오버플로우(stack overflow)의 부작용인 충돌(crash)은 여러분이 선택한 메모리 영역을 거의다 쓰는 것입니다, 그것은 좋지 않습니다.

Foxit은 공개적으로 그들의 PDF 리더를 “악성 바이러스에 대한 걱정 없이 사용함을 보장[sic]”하는 안전한 플랫폼으로 홍보하고 있는데, 그것은 미켈리치가 발견한 버그에도 불구하고 대담한 진술처럼 들립니다.

하지만 Foxit의 주장에는 여전히 말 그대로의 진실이 있습니다.: 그 버그가 PDF 리더 자체에 있는 것이 아니라 브라우저와 리더간에 접착제처럼 행동하는 npFoxitReaderPlugin.dll이란 파일 안에 있기 때문입니다.

→ 파일명 앞의 np는 Netscape Navigator가 활기를 띄던 시절에 생겨났던 플러그인 아키텍쳐인 “Netscape Plugin”을 뜻합니다. 아이러니하게도, 그런 Netscape용 플러그인의 첫번째 예가 Adobe Systems에 사용되었습니다.

흥미롭게도, 여러분은 충돌(crash)을 유발시키기 위해 PDF를 Foxit에 넣을 필요는 없습니다. 단지 클릭할 때, 스스로 PDF라고 광고하는 HTTP reply를 제공하는 악의적인 링크를 Foxit에 넣어주기만 하면 됩니다.

버퍼 오버플로우는 링크를 처리하는 코드 안에서 발생하는데, 링크가 매우 긴 쿼리문(overly-long query string)을 포함하고 있을 때 충돌을 유발합니다.

만약 링크에 물음표[?]가 포함되어 있다면, 쿼리는 그 다음에 나오는 구문입니다. 쿼리 구성요소는 보통 server-side script에 종속된 파라미터를 확인하기 위해 사용됩니다. 아래 예문에서, 쿼리부분은 download=true 문자열입니다.

http://example.org/docs/file.pdf?download=true

비록 곧 그렇게 하겠지만, Foxit은 보안 경보(security advisories)에서 이 이슈에 대해 언급을 해야 합니다.

온라인에 올라온 이야기들을 봤는데, 아직 패치가 없기 때문에 다른 PDF 리더로 바꾸는 것을 고려해야 할 것입니다.

하지만 그 버그가 리더 자체에 있는 것이 아니기 때문에(어째든 아직 어떤 익스플로잇도 없어서), 여러분이 사용할 수 있는 더 빠르고 더 단순한 피해 완화방법은 Foxit을 고수하는 것일 겁니다.

다만 Firefox 플러그인을 사용하지 마세요.

Firefox 메뉴에서 Tools|Add-ons로 가서, Plugins을 선택하고 Foxit Reader Plugin for Mozilla 에 대한 Disable 버튼을 클릭하세요.

PDF파일은 더 이상 여러분의 브라우저 안에서 직접 열리지 않고, 여러분은 중간에 다음과 같은 대화상자를 보게 될 겁니다.

You have chosen to open: . . .

그리고 나면 여러분은 OK 버튼을 눌러야 합니다.

이것은 플러그인 DLL안에 있는 버그 코드를 피하면서, 분리된 Foxit 리더 프로세스안에 파일을 로드합니다.

스티브 잡스가 말했듯이, 그것은 그리 큰 문제는 아닙니다.

댓글을 달아 주세요