Core Security - Corelabs Advisory
Publish-It Buffer Overflow Vulnerability
1. *Advisory Information*
Title: Publish-It Buffer Overflow Vulnerability
Advisory ID: CORE-2014-0001
Advisory URL:
Date published: 2014-02-05
Date of last update: 2014-02-05
Vendors contacted: Poster Software
Release mode: User release
2. *Vulnerability Information*
Class: Buffer overflow [CWE-119]
Impact: Code execution
Remotely Exploitable: No
Locally Exploitable: Yes
CVE Name: CVE-2014-0980
3. *Vulnerability Description*
Publish-It [1] is prone to a (client side) security vulnerability when
processing .PUI files. This vulnerability could be exploited by a remote
attacker to execute arbitrary code on the target machine, by enticing
the user of Publish-It to open a specially crafted .PUI file.
4. *Vulnerable Packages*
. Publish-It v3.6d for Win XP.
. Publish-It v3.6d for Win 7.
. Other versions are probably affected too, but they were not checked.
5. *Vendor Information, Solutions and Workarounds*
There was no official answer from vendor 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 .PUI
files. Contact vendor for further information.
6. *Credits*
This vulnerability was discovered and researched by Daniel Kazimirow
from Core Exploit Writers Team.
7. *Technical Description / Proof of Concept Code*
Below is shown the result of opening the Proof of concept file [2] on
Windows XP SP3 (EN).
/-----
EAX 04040404
ECX 00000325
EDX FFFFFF99
EBX 77F15B70 GDI32.SelectObject
ESP 0012F5D4
EBP 77F161C1 GDI32.GetStockObject
ESI 0103A1E8
EDI A50107D3
EIP 04040404
C 0 ES 0023 32bit 0(FFFFFFFF)
P 0 CS 001B 32bit 0(FFFFFFFF)
A 1 SS 0023 32bit 0(FFFFFFFF)
Z 0 DS 0023 32bit 0(FFFFFFFF)
S 0 FS 003B 32bit 7FFDF000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_SUCCESS (00000000)
EFL 00000212 (NO,NB,NE,A,NS,PO,GE,G)
ST0 empty -??? FFFF 00000001 00010002
ST1 empty -??? FFFF 00000043 004F007A
ST2 empty -??? FFFF 7590A3E7 FDBDC8F2
ST3 empty -??? FFFF 00000043 0050007B
ST4 empty 1.0000000000000000000
ST5 empty -9.2233720368547758080e+18
-----/
The arbitrary value 0x04040404 is stored in the EIP register where our
shellcode starts (just a software breakpoint 0xCC):
/-----
04040404 CC INT3
04040405 CC INT3
04040406 CC INT3
04040407 CC INT3
04040408 CC INT3
04040409 CC INT3
0404040A CC INT3
0404040B CC INT3
...
-----/
As a result, the normal execution flow can be altered in order to
execute arbitrary code.
8. *Report Timeline*
. 2013-12-20:
Core Security Technologies attempts to contact vendor. Publication date
is set for Jan 21st, 2014.
. 2014-01-06:
Core attempts to contact vendor.
. 2014-01-15:
Core asks for confirmation of the initial contact e-mail.
. 2014-01-15:
Vendor sends an e-mail with a single word: "Confirmed".
. 2014-01-16:
Core sends a technical description and asks for an estimated release
date. No reply received.
. 2014-01-21:
First release date missed.
. 2014-01-27:
Core attempts to contact vendor. No reply received.
. 2014-02-05:
After one month and a half trying to contact vendor the only reply from
them was the word "Confirmed" and the advisory CORE-2014-0001 is
published as 'User release'.