Lucene search
K

GetGo Download Manager 4.x Stack Buffer Overflow

🗓️ 03 Mar 2014 00:00:00Reported by Julien AhrensType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 28 Views

GetGo Download Manager 4.x Stack Buffer Overflow identifie

Related
Code
`RCE Security Advisory  
http://www.rcesecurity.com  
  
  
1. ADVISORY INFORMATION  
-----------------------  
Product: GetGo Download Manager  
Vendor URL: www.getgosoft.com  
Type: Stack-based Buffer Overflow [CWE-121]  
Date found: 2014-02-20  
Date published: 2014-03-02  
CVSSv2 Score: 10,0 (AV:N/AC:L/Au:N/C:C/I:C/A:C)  
CVE: CVE-2014-2206  
  
  
2. CREDITS  
----------  
This vulnerability was discovered and researched by Julien Ahrens from  
RCE Security.  
  
  
3. VERSIONS AFFECTED  
--------------------  
GetGo Download Manager v4.9.0.1982 (latest)  
GetGo Download Manager v4.8.2.1346  
GetGo Download Manager v4.4.5.502  
and other older versions may be affected too.  
  
  
4. VULNERABILITY DESCRIPTION  
----------------------------  
A stack-based buffer overflow vulnerability has been identified in the  
GetGo Download Manager.  
  
When a website is requested for download, the application reads the HTTP  
Response Header values of the target page and copies the retrieved  
values to a temporary buffer, which is set to a fixed size of 4097  
bytes, but this size is not used by the application to limit the input  
to the buffer. Instead it fills the buffer byte by byte until the  
terminating sequence "\r\n" is found. Therefore the application writes  
outside the expected memory boundaries if the HTTP Response Header is  
greater than 4097 bytes.  
  
This leads to a stack-based buffer overflow with an overwritten SEH  
chain or return points, resulting in remote code execution. Successful  
exploits can allow remote attackers to execute arbitrary code with the  
privileges of the user running the application. Failed exploits will  
result in a denial-of-service condition.  
  
  
5. PROOF-OF-CONCEPT (DEBUG)  
---------------------------  
Registers:  
EAX 00000000  
ECX CCCCCCCC  
EDX 76F2B4AD ntdll.76F2B4AD  
EBX 00000000  
ESP 0474BD5C  
EBP 0474BD7C  
ESI 00000000  
EDI 00000000  
EIP CCCCCCCC  
C 0 ES 002B 32bit 0(FFFFFFFF)  
P 1 CS 0023 32bit 0(FFFFFFFF)  
A 0 SS 002B 32bit 0(FFFFFFFF)  
Z 1 DS 002B 32bit 0(FFFFFFFF)  
S 0 FS 0053 32bit 7EF94000(FFF)  
T 0 GS 002B 32bit 0(FFFFFFFF)  
D 0  
O 0 LastErr ERROR_SUCCESS (00000000)  
EFL 00010246 (NO,NB,E,BE,NS,PE,GE,LE)  
ST0 empty g  
ST1 empty g  
ST2 empty g  
ST3 empty g  
ST4 empty g  
ST5 empty g  
ST6 empty g  
ST7 empty g  
3 2 1 0 E S P U O Z D I  
FST 0000 Cond 0 0 0 0 Err 0 0 0 0 0 0 0 0 (GT)  
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1  
  
  
Stack:  
ESP-8 > 00286D30  
ESP-4 > FFFFFFFE  
ESP ==> > 76F2B499 RETURN to ntdll.76F2B499  
ESP+4 > 0474BE44  
ESP+8 > 0474D3A8  
[...]  
ESP+1648 > CCCCCCCC  
ESP+164C > CCCCCCCC Pointer to next SEH record  
ESP+1650 > CCCCCCCC SE handler  
ESP+1654 > CCCCCCCC  
  
  
6. VULNERABLE CODE PART  
-----------------------  
// GetGoDM.exe  
004A4CE1 PUSH ECX ; /Arg3  
004A4CE2 PUSH 1001 ; |Arg2 = 00001001  
004A4CE7 LEA EDX,DWORD PTR SS:[EBP-1024] ; |  
004A4CED PUSH EDX ; |Arg1  
004A4CEE MOV ECX,DWORD PTR SS:[EBP-1064] ; |  
004A4CF4 CALL GetGoDM.004A3A70 ; \GetGoDM.004A3A70  
  
  
004A3A70 PUSH EBP  
004A3A71 MOV EBP,ESP  
004A3A73 PUSH -1  
004A3A75 PUSH GetGoDM.00644153  
004A3A7A MOV EAX,DWORD PTR FS:[0]  
004A3A80 PUSH EAX  
004A3A81 SUB ESP,1C  
004A3A84 MOV EAX,DWORD PTR DS:[6E6FB8]  
004A3A89 XOR EAX,EBP  
004A3A8B PUSH EAX  
004A3A8C LEA EAX,DWORD PTR SS:[EBP-C]  
004A3A8F MOV DWORD PTR FS:[0],EAX  
004A3A95 MOV DWORD PTR SS:[EBP-28],ECX  
004A3A98 MOV DWORD PTR SS:[EBP-14],0  
004A3A9F MOV EAX,DWORD PTR SS:[EBP+C]  
004A3AA2 PUSH EAX  
004A3AA3 PUSH 0  
004A3AA5 MOV ECX,DWORD PTR SS:[EBP+8]  
004A3AA8 PUSH ECX  
004A3AA9 CALL GetGoDM.004EA0A0  
004A3AAE ADD ESP,0C  
004A3AB1 MOV DWORD PTR SS:[EBP-18],1  
004A3AB8 MOV DWORD PTR SS:[EBP-10],1  
004A3ABF MOV DWORD PTR SS:[EBP-20],0  
004A3AC6 PUSH GetGoDM.0066D7F6 ; /Arg1 = 0066D7F6  
004A3ACB LEA ECX,DWORD PTR SS:[EBP-1C] ; |  
004A3ACE CALL GetGoDM.004090A0 ; \GetGoDM.004090A0  
004A3AD3 MOV DWORD PTR SS:[EBP-4],0  
004A3ADA /MOV EDX,1  
004A3ADF |TEST EDX,EDX  
004A3AE1 |JE SHORT GetGoDM.004A3B5A  
004A3AE3 |MOV EAX,DWORD PTR SS:[EBP+10]  
004A3AE6 |PUSH EAX ; /Arg3  
004A3AE7 |PUSH 1 ; |Arg2 = 00000001  
004A3AE9 |MOV ECX,DWORD PTR SS:[EBP-10] ; |  
004A3AEC |MOV EDX,DWORD PTR SS:[EBP+8] ; |  
004A3AEF |LEA EAX,DWORD PTR DS:[EDX+ECX-1] ; |  
004A3AF3 |PUSH EAX ; |Arg1  
004A3AF4 |MOV ECX,DWORD PTR SS:[EBP-28] ; |  
004A3AF7 |ADD ECX,0C ; |  
004A3AFA |CALL GetGoDM.0049DF80 ; \GetGoDM.0049DF80  
004A3AFF |MOV DWORD PTR SS:[EBP-18],EAX  
004A3B02 |CMP DWORD PTR SS:[EBP-18],0  
004A3B06 |JNZ SHORT GetGoDM.004A3B11  
004A3B08 |MOV DWORD PTR SS:[EBP-14],0  
004A3B0F |JMP SHORT GetGoDM.004A3B5A  
004A3B11 |MOV ECX,DWORD PTR SS:[EBP+8]  
004A3B14 |ADD ECX,DWORD PTR SS:[EBP-10]  
004A3B17 |MOV BYTE PTR DS:[ECX],0  
004A3B1A |MOV EDX,DWORD PTR SS:[EBP+8]  
004A3B1D |PUSH EDX ; /Arg1  
004A3B1E |LEA ECX,DWORD PTR SS:[EBP-1C] ; |  
004A3B21 |CALL GetGoDM.004497C0 ; \GetGoDM.004497C0  
004A3B26 |PUSH 0 ; /Arg2 = 00000000  
004A3B28 |PUSH GetGoDM.0066D7F8 ; |Arg1 = 0066D7F8 ASCII ""  
004A3B2D |LEA ECX,DWORD PTR SS:[EBP-1C] ; |  
004A3B30 |CALL GetGoDM.00409560 ; \GetGoDM.00409560  
004A3B35 |MOV DWORD PTR SS:[EBP-20],EAX  
004A3B38 |CMP DWORD PTR SS:[EBP-20],-1  
004A3B3C |JE SHORT GetGoDM.004A3B4F  
004A3B3E |MOV EAX,DWORD PTR SS:[EBP+8]  
004A3B41 |ADD EAX,DWORD PTR SS:[EBP-20]  
004A3B44 |MOV BYTE PTR DS:[EAX],0  
004A3B47 |MOV ECX,DWORD PTR SS:[EBP-20]  
004A3B4A |MOV DWORD PTR SS:[EBP-14],ECX  
004A3B4D |JMP SHORT GetGoDM.004A3B5A  
004A3B4F |MOV EDX,DWORD PTR SS:[EBP-10]  
004A3B52 |ADD EDX,1  
004A3B55 |MOV DWORD PTR SS:[EBP-10],EDX  
004A3B58 \JMP SHORT GetGoDM.004A3ADA  
004A3B5A MOV EAX,DWORD PTR SS:[EBP-14]  
004A3B5D MOV DWORD PTR SS:[EBP-24],EAX  
004A3B60 MOV DWORD PTR SS:[EBP-4],-1  
004A3B67 LEA ECX,DWORD PTR SS:[EBP-1C]  
004A3B6A CALL GetGoDM.004091E0  
004A3B6F MOV EAX,DWORD PTR SS:[EBP-24]  
004A3B72 MOV ECX,DWORD PTR SS:[EBP-C]  
004A3B75 MOV DWORD PTR FS:[0],ECX  
004A3B7C POP ECX  
004A3B7D MOV ESP,EBP  
004A3B7F POP EBP  
004A3B80 RETN 0C  
  
  
7. SOLUTION  
-----------  
None  
  
  
8. REPORT TIMELINE  
------------------  
2014-02-23: Discovery of the vulnerability  
2014-02-23: Vendor Notification #1  
2014-02-26: MITRE assigns CVE-2014-2206  
2014-03-01: Project is dead  
2014-03-02: Full Disclosure  
  
  
9 . REFERENCES  
--------------  
http://www.rcesecurity.com/2014/03/cve-2014-2206-getgo-download-manager-http-response-header-buffer-overflow-remote-code-execution  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation