what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

wuftpd-skey.txt

wuftpd-skey.txt
Posted Oct 30, 2003
Authored by Michael Hendrickx

Wu-ftpd v2.6.2 contains a remote root vulnerability if SKEY support has been enabled. Patch included.

tags | advisory, remote, root
SHA-256 | 40a0ce3539a007074bcdc02b3be11b15fc0feb8fb09046d9beabf48081bace89

wuftpd-skey.txt

Change Mirror Download

wuftpd v2.6.2 skey stack overflow vulnerability
by <michael@scanit.be>

--------------------------------------------------------------------------

Affected: Washington University FTP deamon, version 2.6.2 and
possibly below (not tested), with SKEY support enabled.

Not affected: NetBSD machines running wu-ftpd

Impact: Severe (remote code execution) if skey support is enabled.


General:
--------

The Washington University FTP deamon (hereafter reffered to as "wuftpd") is
a replacement FTP server for POSIX systems. Wuftpd supports skey
authentication to provide secure logins. However, the code that 'handles'
this has an exploitable stack based buffer overflow. Providing specially
crafted authentication credentials, it is possible to crash the deamon or
execute user-supplied code, running with root privileges.


Technical details:
------------------

A statically allocated buffer is filled using the sprintf() function in the
skey_challenge() function (src/ftpd.c).

char *skey_challenge(char *name, struct passwd *pwd, int pwok)
{
static char buf[128];
...
if (pwd == NULL || skeychallenge(&skey, pwd->pw_name, sbuf))
sprintf(buf, "Password required for %s.", name);
else
sprintf(buf, "%s %s for %s.", sbuf,
pwok ? "allowed" : "required", name);
return (buf);
}

The variable *name is never subject to any boundries checking.

It is possible to write beyond the buf[] array, overwriting the return address
of the function, modifying the path of execution flow.


Fix/Workaround:
---------------

To protect you from this vulnerability, disable skey support, or apply
the following patch:

--- ftpd.c 2001-11-29 17:56:11.000000000 +0100
+++ ftpd.c 2003-10-20 20:43:58.000000000 +0200
@@ -1662,9 +1662,9 @@
/* Display s/key challenge where appropriate. */

if (pwd == NULL || skeychallenge(&skey, pwd->pw_name, sbuf))
- sprintf(buf, "Password required for %s.", name);
+ snprintf(buf, 128-1, "Password required for %s.", name);
else
- sprintf(buf, "%s %s for %s.", sbuf,
+ snprintf(buf, 128-1, "%s %s for %s.", sbuf,
pwok ? "allowed" : "required", name);
return (buf);
}


This information has been provided by Michael Hendrickx <michael@scanit.be>
Login or Register to add favorites

File Archive:

August 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Aug 1st
    15 Files
  • 2
    Aug 2nd
    22 Files
  • 3
    Aug 3rd
    0 Files
  • 4
    Aug 4th
    0 Files
  • 5
    Aug 5th
    15 Files
  • 6
    Aug 6th
    11 Files
  • 7
    Aug 7th
    43 Files
  • 8
    Aug 8th
    42 Files
  • 9
    Aug 9th
    36 Files
  • 10
    Aug 10th
    0 Files
  • 11
    Aug 11th
    0 Files
  • 12
    Aug 12th
    0 Files
  • 13
    Aug 13th
    0 Files
  • 14
    Aug 14th
    0 Files
  • 15
    Aug 15th
    0 Files
  • 16
    Aug 16th
    0 Files
  • 17
    Aug 17th
    0 Files
  • 18
    Aug 18th
    0 Files
  • 19
    Aug 19th
    0 Files
  • 20
    Aug 20th
    0 Files
  • 21
    Aug 21st
    0 Files
  • 22
    Aug 22nd
    0 Files
  • 23
    Aug 23rd
    0 Files
  • 24
    Aug 24th
    0 Files
  • 25
    Aug 25th
    0 Files
  • 26
    Aug 26th
    0 Files
  • 27
    Aug 27th
    0 Files
  • 28
    Aug 28th
    0 Files
  • 29
    Aug 29th
    0 Files
  • 30
    Aug 30th
    0 Files
  • 31
    Aug 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close