Lucene search
K

genstat <= 14.1.0.5943 - Multiple Vulnerabilities

🗓️ 01 Jul 2014 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 36 Views

GenStat <= 14.1.0.5943 - Multiple Vulnerabilities. Application providing ease of use and flexibility via menu system and programming language, vulnerable to array and heap overflow leading to arbitrary memory manipulation

Code

                                                #######################################################################

                             Luigi Auriemma

Application:  GenStat
              http://www.vsni.co.uk/software/genstat/
Versions:     &#60;= 14.1.0.5943
Platforms:    Windows
Bugs:         A] array overflow with write2
              B] heap overflow
Exploitation: file
Date:         01 Oct 2011
Author:       Luigi Auriemma
              e-mail: [email protected]
              web:    aluigi.org


#######################################################################


1) Introduction
2) Bugs
3) The Code
4) Fix


#######################################################################

===============
1) Introduction
===============


From vendor&#39;s homepage:
&#34;all embracing data analysis tool, offering ease of use via our
comprehensive menu system reinforced with the flexibility of a
sophisticated programming language.&#34;
&#34;For over 30 years we have employed, and continue to work with, leading
statisticians and scientists who help to create a package that succeeds
for both novice and expert users in academia, research and industry.&#34;


#######################################################################

=======
2) Bugs
=======

-----------------------------
A] array overflow with write2
-----------------------------

Array overflow during the handling of the GWB (GenStat book) files with
possibility of placing a NULL word in an arbitrary memory location:

  00630399  |&#62; 8B46 24        MOV EAX,DWORD PTR DS:[ESI+24] ; EAX controlled
  0063039C  |. 8B4E 08        MOV ECX,DWORD PTR DS:[ESI+8]
  0063039F  |. 8D0481         LEA EAX,DWORD PTR DS:[ECX+EAX*4]
  006303A2  |. 3938           CMP DWORD PTR DS:[EAX],EDI
  006303A4  |. 74 12          JE SHORT GenStat.006303B8
  006303A6  |. 8B00           MOV EAX,DWORD PTR DS:[EAX]
  006303A8  |. 05 A4040000    ADD EAX,4A4
  006303AD  |. 0FB708         MOVZX ECX,WORD PTR DS:[EAX]
  006303B0  |. 894D FC        MOV DWORD PTR SS:[EBP-4],ECX
  006303B3  |. 33C9           XOR ECX,ECX
  006303B5  |. 66:8908        MOV WORD PTR DS:[EAX],CX      ; write2


----------------
B] heap overflow
----------------

Through the text strings in the final part of the GSH (GenStat
SpreadSheet) files it&#39;s possible to cause a heap overflow with
consequent freeing of arbitrary memory (write4):

  0064D1C7  |&#62; 3BBE 78040000 /CMP EDI,DWORD PTR DS:[ESI+478]
  0064D1CD  |. 7F 74         |JG SHORT GenStat.0064D243
  0064D1CF  |. FF75 08       |PUSH DWORD PTR SS:[EBP+8]
  0064D1D2  |. 8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  0064D1D5  |. 6A 01         |PUSH 1
  0064D1D7  |. 6A 04         |PUSH 4
  0064D1D9  |. 50            |PUSH EAX
  0064D1DA  |. E8 2F3B2600   |CALL GenStat.008B0D0E             ; read 32bit
  0064D1DF  |. 83C4 10       |ADD ESP,10
  0064D1E2  |. 85C0          |TEST EAX,EAX
  0064D1E4  |.^0F84 06FFFFFF |JE GenStat.0064D0F0
  0064D1EA  |. 66:837D 0C 00 |CMP WORD PTR SS:[EBP+C],0
  0064D1EF  |. 74 0A         |JE SHORT GenStat.0064D1FB
  0064D1F1  |. 8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
  0064D1F4  |. 50            |PUSH EAX
  0064D1F5  |. E8 DD6AFFFF   |CALL GenStat.00643CD7
  0064D1FA  |. 59            |POP ECX
  0064D1FB  |&#62; 837D F4 00    |CMP DWORD PTR SS:[EBP-C],0
  0064D1FF  |. 7E 1E         |JLE SHORT GenStat.0064D21F        ; I use the first one equal to -1
  0064D201  |. FF75 08       |PUSH DWORD PTR SS:[EBP+8]
  0064D204  |. 8B46 58       |MOV EAX,DWORD PTR DS:[ESI+58]
  0064D207  |. 6A 01         |PUSH 1
  0064D209  |. FF75 F4       |PUSH DWORD PTR SS:[EBP-C]         ; 0x61616161
  0064D20C  |. 03C7          |ADD EAX,EDI
  0064D20E  |. 50            |PUSH EAX
  0064D20F  |. E8 FA3A2600   |CALL GenStat.008B0D0E             ; overflow/corruption
  0064D214  |. 83C4 10       |ADD ESP,10
  0064D217  |. 85C0          |TEST EAX,EAX
  0064D219  |.^0F84 D1FEFFFF |JE GenStat.0064D0F0
  0064D21F  |&#62; FF86 74040000 |INC DWORD PTR DS:[ESI+474]
  0064D225  |. 8B45 F4       |MOV EAX,DWORD PTR SS:[EBP-C]
  0064D228  |. 43            |INC EBX
  0064D229  |. 3B5D F8       |CMP EBX,DWORD PTR SS:[EBP-8]
  0064D22C  |. 8D7C07 01     |LEA EDI,DWORD PTR DS:[EDI+EAX+1]  ; 0 + -1 + 1 = 0
  0064D230  |.^7C 95         \JL SHORT GenStat.0064D1C7


#######################################################################

===========
3) The Code
===========


http://aluigi.org/poc/genstat_1.zip
http://www.exploit-db.com/sploits/17931.zip

A] modified 32bit field at offset 0x46
B] modified 32bit field at offset 0x302 and added &#39;a&#39;s


#######################################################################

======
4) Fix
======


No fix.


#######################################################################

                              

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