Security Advisories
Adobe Acrobat Reader Memory Corruption Vulnerability
Technical Details
Adobe acrobat reader initializes large memory based on specific values read
from the PDF file itself. Mostly this results in access violation but code
execution may be possible due to heap corruption.
The technical details tested on Acrobat Reader 9.0.0 are as follows:
There are two cases for the application to crash. In case A, the function @0177C1AB
returns a large value which is copied in ESI register. In case B, the function @0177CAAB
returns a large value in EAX register. The values returned by this call instruction
are not predictable with the offset at 0x2024.
0177C1AB E8 700D0100 CALL AcroRd_1.0178CF20
0177C1B0 8BD6 MOV EDX,ESI ; Case A: ESI is large
0177C1B2 03F0 ADD ESI,EAX ; Case B: EAX is large
0177C1B4 3BD6 CMP EDX,ESI
0177C1B6 73 2B JNB SHORT AcroRd_1.0177C1E3
0177C1B8 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20]
0177C1BC 8D3C50 LEA EDI,DWORD PTR DS:[EAX+EDX*2]
0177C1BF 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] ; EAX holds the value to be initialized
0177C1C3 8BCE MOV ECX,ESI ; ECX holds the count; copied from ESI
0177C1C5 2BCA SUB ECX,EDX
0177C1C7 8B5C24 30 MOV EBX,DWORD PTR SS:[ESP+30]
0177C1CB 66:8BD0 MOV DX,AX
0177C1CE C1E2 10 SHL EDX,10
0177C1D1 66:8BD0 MOV DX,AX
0177C1D4 D1E9 SHR ECX,1
0177C1D6 8BC2 MOV EAX,EDX
0177C1D8 F3:AB REP STOS DWORD PTR ES:[EDI] ; EDI points to the target memory and
; results in access violation for larger
; ECX values
A vulnerability like this can possibly be exploited through techniques like
heap spray, particularly since Adobe Reader supports embedded
javascripts, however this possibility is currently unverified.
Affected Software
Adobe Acrobat Reader 9.0.0
Adobe Acrobat Reader 8.1.3 and earlier
Other versions may also be affected
(The vulnerability affects both Windows and Linux version of Acrobat Reader)
Impact
- Application Crash
- Possibly remote code execution
Vendor Response
Credits
This vulnerability was discovered by Security Researcher
Jonathan Brossard from iViZ Techno Solutions Pvt. Ltd.
Disclosure Timeline
* 25/03/2009: Public Disclosure
* 28/02/2009: Vendor acknowledged receipt of vulnerability details
* 26/02/2009: Vendor replied providing PGP keys
* 25/02/2009: Contacted vendor asking for PGP keys
|