Adobe Reader geticon Buffer Overflow

March 27, 2009

Adobe Reader (formerly Acrobat Reader) is a ubiquitous application for viewing PDF (Portable Document Format) documents.

Since version 4.0, Acrobat includes JavaScript functionality allowing for customization and extensibility. Acrobat JavaScript is an extension of the core JavaScript which adds Acrobat-specific classes that enable the author to manage document related tasks. These classes include app, dbg, console, SOAP, ADBC, util, etc.

The app.Collab object provides the getIcon method, which accepts an string argument that serves as the name of an icon. The supplied path string must contains one of "N", "D", "H" characters followed by a "." character. For example:

app.Collab.getIcon("A_EmailDistribute_110x64_N.png")

There exists a buffer overflow vulnerability in Adobe Reader. Specifically, the vulnerability is due to incorrect validation of values supplied to the "app.Collab.getIcon()" JavaScript function. By providing a overly long string to the function, the stack-based buffer will be overrun. The buffer overflow condition could allow for overwriting return address and SEH structure on the stack.

An attacker can exploit this vulnerability by enticing a user to open a crafted PDF document. Successful exploitation would allow for arbitrary code injection and execution with the privileges of the currently logged in user. Code injection that does not result in execution would terminate the application due to memory corruption.

The vulnerability has been assigned as CVE-2009-0927.

SonicWALL has released a IPS signature to detect and block specific exploitation attempts targeting this vulnerability. The signature is listed bellow:

  • 5446 - Adobe Acrobat JavaScript getIcon Method BO Attempt