<<< Date Index >>>     <<< Thread Index >>>

Local buffer-overflow in W32Dasm 8.93



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

                             Luigi Auriemma

Application:  W32Dasm
              (was http://www.expage.com/page/w32dasm)
Versions:     <= 8.93 (8.94???)
Platforms:    Windows
Bug:          buffer-overflow
Exploitation: local
Date:         24 Jan 2005
Author:       Luigi Auriemma
              e-mail: aluigi@xxxxxxxxxxxxx
              web:    http://aluigi.altervista.org


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


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


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

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


W32Dasm is a cool and famous disassembler/debugger developed by URSoft.
It has tons of functions and, also if it is no longer supported by long
time, it is still widely used by a lot of people.


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

======
2) Bug
======


The program uses the wsprintf() function to copy the name of the
imported/exported functions of the analyzed file into a buffer of only
256 bytes, with the possibility for an attacker to execute malicious
code.


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

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


Exploiting the bug is very simple, all you need is to get an executable
and searching for the name of an imported or exported function to
modify.

I have written a very simple proof-of-concept that overwrites the
return address with 0xdeadc0de:

  http://aluigi.altervista.org/poc/w32dasmbof.disasm_me


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

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


No fix.
This program is no longer supported.


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


--- 
Luigi Auriemma
http://aluigi.altervista.org