A security researcher has found a way to run arbitrary code on Windows computers by embedding it in a malicious PDF file.
The code will run when viewed in two popular PDF reader applications, but the author of the hack says it doesn't exploit a software vulnerability.
PDF readers from Adobe Systems and Foxit don't allow embedded executables to run directly, wrote Didier Stevens on his security blog. But Stevens found a way to get an embedded executable to run via a different launch command.
Upon opening the rigged document, Adobe Reader will display a warning message saying that launching code could harm the computer, so a user would need to approve launching an application. But Stevens found he was able to change part of the message, which could be modified to persuade the user to open the executable.
In his example, Reader will launch a harmless calculator program, but that could be replaced with malicious software. Stevens' proof-of-concept code worked using Adobe Reader 9.3.1 on Windows XP SP3 and on Windows 7.
Foxit's PDF reader does not display a warning, but as the proof-of-concept code was originally written, the executable would not run, likely "due to some variation in the PDF language supported," Stevens wrote.
By Wednesday, Stevens had fixed that problem, which allows an executable to be launched in Foxit merely by opening the manipulated PDF.
Stevens has notified the two software companies.
"I've reported it to Foxit Software, and they told me they will issue a fix this week. I don't know what the fix will be, but I assume it will be a warning message, to be in line with the other PDF readers," Stevens said via e-mail.
Stevens hasn't released the proof-of-concept code, but it is possible that someone could figure it out.
However, "it's not easy. To give you an idea without getting too technical: it takes me 5 different steps to execute arbitrary code. The test PDF file I published on my blog contains just the first step," Stevens said.
In a statement, Adobe said that Stevens' demonstration relies on functionality defined in the PDF specification, which is an International Organization for Standardization standard named ISO PDF 32000-1:2008. That specification also defines the launch command.
"This is an example of powerful functionality relied on by some users that also carries potential risks when used incorrectly," according to the statement. "The warning message provided in Adobe Reader and Adobe Acrobat includes strong wording advising users to only open and execute the file if it comes from a trusted source."