Adobe Acrobat Zero-day 취약점에 대한 보고서


▲ 홍순혁㈜잉카인터넷 시큐리티대응센터



정품 소프트웨어를 사용해야 하는 이유


예전에 단순한 사무용 기기였던 PC는 이제는 우리 생활에서 뗄 수 없는 중요한 위치에 있게 되었다. 인터넷의 발달과 비약적으로 발전하는 하드웨어의 바탕 아래에서 많은 회사들은 상대적으로 적은 비용으로 높은 수익을 얻을 수 있는 황금알을 낳을 수 있는 기대를 갖고 소프트웨어 개발업에 뛰어들었다. 이러한 개발사들 중에 우리가 잘 아는 몇몇 회사들은 엄청난 돈을 벌기도 하였으나, 어느 한편에선 부지불식간에 사라진 회사들이 성공한 회사의 수배, 수십배 이상으로 많을 것으로 예상된다.

소프트웨어 개발사들 중 잘 되고 있는 회사든, 잘 안되고 있는 회사든지 간에 대부분은 불법 복제라는 복병에 몸살을 앓고 있는 것이 현실이다. 비약적으로 빨라진 네트워크 속도는 남이 몇 달, 몇 년이 걸려서 만든 소프트웨어를 단 몇 분만에 다운로드 할 수 있게 해주며, 수많은 검색 엔진은 그러한 소프트웨어를 우회하는 방법에 대하여 친절하게도(?) 검색까지 도와주고
있다.

소프트웨어의 정품 사용은 그러한 개발사들의 정당한 노력의 대가로써 취해야 할 이익을 위해서 당연히 필요하며, 이러한 저작권 보호를 통하여 더 많은 노력을 기울이는 회사가 늘어나면서 우리 모두에게 보다 필요하고 유용한 소프트웨어가 많아질 수 있도록 하는 것은 자명한 사실일 것이다.

이러한 다소 윤리적인 이유 말고도 불법 소프트웨어를 사용하지 않아야 하는 이유가 하나 더 있다. 이는 바로 보안상의 취약점과 관련된 문제다.

아래는 최근 발견된 Adobe Reader의 취약점을 기반으로 해서 이를 분석한 결과와 함께 왜 정품 소프트웨어를 사용해야 하는지에 대한 필자의 의견이다.

이 취약점은 Adobe Reader에서 JavaScript로 Adobe의 multimedia.api에서 제공하는 newPlayer() 메서드를 사용할 때 발생하는 취약점으로써, 이 취약점을 이용하면 사용자가 자신도 모르게 인터넷을 통하여 악성코드 등을 다운로드 받아서 실행될 수 있는 취약점이다.

<그림 1>에서 보여지는 것과 같이 이 취약점은 Adobe에서 제공하는 Doc.meida.newPlayer() 메서드를 사용할 때 null 값을 제대로 처리하지 못해 발생한 취약점이며, 이 취약점은 Access Violation을 일으키므로 Heap Spray 공격이 가능하게 되고, 이 코드 통하여 pdf 파일 내부의 pe파일을 드롭하고 실행시켜서 특정 경로의 파일을 다운로드 하도록 구성되어 있다.

몇 가지 전문 용어가 표현되고 있지만, 쉽게 말해서 Adobe Reader의 newPlayer() 함수는 null이라는 값을 처리하는 방법에 대해서 정의되어 있지 않다. 따라서, 정상적인 처리가 당연히 불가능하게 될 것인데, 이럴 때 발생하는 에러가 Access Violation이다. 해커는 해당 에러가 발생한 경우에 원래 처리해야 하는 정상적인 에러 처리 루틴을 대신하여 자신이 변조한 악성 루틴으로 접근하도록 조작(위에서 Heap Spray 공격에 해당)해 놓았으며, 변조한 악성 루틴은 해커가 사용자의 PC에 설치하고 싶은 진짜 악성코드를 다운로드 하도록 프로그램 되어있는 것이다.


▲ <그림 1> 공격 스크립트





<이하 컴퓨터월드 2010년 1월 호 P12 참조>

저작권자 © 아이티데일리 무단전재 및 재배포 금지