EPS Viewer Buffer Overflow Vulnerability
1. *Advisory Information*
Title: EPS Viewer Buffer Overflow Vulnerability
Advisory ID: CORE-2013-0808
Advisory URL:
Date published: 2013-08-28
Date of last update: 2013-08-28
Vendors contacted: EPS Viewer Team
Release mode: User release
2. *Vulnerability Information*
Class: Buffer overflow [CWE-119]
Impact: Code execution
Remotely Exploitable: Yes
Locally Exploitable: No
CVE Name: CVE-2013-4979
3. *Vulnerability Description*
EPS Viewer [1], [2] is prone to a security vulnerability when processing
EPS files. This vulnerability could be exploited by a remote attacker to
execute arbitrary code on the target machine by enticing EPS Viewer
users to open a specially crafted EPS file (client-side vulnerability).
4. *Vulnerable Packages*
. EPS viewer v3.2.
. Older versions are probably affected too, but they were not checked.
5. *Vendor Information, Solutions and Workarounds*
There was no official answer from EPS team after several attempts to
report this vulnerability (see [Sec. 8]). As mitigation action, given
that this is a client-side vulnerability, avoid to open untrusted EPS
files. Contact vendor for further information.
6. *Credits*
This vulnerability was discovered and researched by Daniel Kazimirow
from Core Exploit Writers Team. The publication of this advisory was
coordinated by Fernando Miranda from Core Advisories Team.
7. *Technical Description / Proof of Concept Code*
Below is shown the result of opening the maliciously crafted EPS file
[3], which means the normal execution flow can be altered in order to
execute arbitrary code.
/-----
10089B0E . 8BFF MOV EDI,EDI
10089B10 > 8B46 08 MOV EAX,DWORD PTR DS:[ESI+8] ;
<--- crash (we control ESI)
10089B13 . 8B48 0C MOV ECX,DWORD PTR DS:[EAX+C]
10089B16 . 830E FE OR DWORD PTR DS:[ESI],FFFFFFFE
10089B19 . 85C9 TEST ECX,ECX
10089B1B . 8B7E 04 MOV EDI,DWORD PTR DS:[ESI+4]
10089B1E . 74 0C JE SHORT gsdll32.10089B2C
10089B20 . 50 PUSH EAX
10089B21 . 57 PUSH EDI
10089B22 . 8D56 10 LEA EDX,DWORD PTR DS:[ESI+10]
10089B25 . 52 PUSH EDX
10089B26 . 53 PUSH EBX
10089B27 . FFD1 CALL ECX
; jump to our code
-----/
The vulnerability exists in gldll32.dll module:
/-----
Executable modules, item 1
Base=10000000
Size=00A93000 (11087872.)
Entry=102162B0 gsdll32.<ModuleEntryPoint>
Name=gsdll32
Path=C:\Program Files\EPSViewer\gsdll32.dll
EAX 035126E0 ASCII
"TTEEEETTTTTTTTTTUVWXYZXYTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
ECX 00000000
EDX 00000028
EBX 0358A058
ESP 0012DA98
EBP 54545454
ESI 54544545
EDI 00000038
EIP 10089B10 gsdll32.10089B10
C 1 ES 0023 32bit 0(FFFFFFFF)
P 0 CS 001B 32bit 0(FFFFFFFF)
A 0 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 1 FS 003B 32bit 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000283 (NO,B,NE,BE,S,PO,L,LE)
ST0 empty 0.0
ST1 empty 2.5453186035156250000
ST2 empty 2.1025514602661132810
ST3 empty 320326.00000000000000
ST4 empty -312.81835937500000000
ST5 empty 0.0
ST6 empty 0.2500000000000000000
ST7 empty 250.96191406250000000
3 2 1 0 E S P U O Z D I
FST 0120 Cond 0 0 0 1 Err 0 0 1 0 0 0 0 0 (LT)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1
-----/
8. *Report Timeline*
. 2013-08-12:
Core attempts to contact the EPS Viewer team, no reply received.
Publication date is set for Aug 27th, 2013.
. 2013-08-20:
Core attempts to contact vendor.
. 2013-08-26:
Core attempts to contact vendor.
. 2013-08-27:
Release date missed.
. 2013-08-28:
After 3 attempts to contact vendor, the advisory CORE-2013-0808 is
published as 'user release'.
9. *References*
[3]