[<prev] [next>] [day] [month] [year] [list]
Message-ID: <CA+CewVAZd-uWQPcceEhKccUumqwrezEsVh_qT6RZPWMdRfikyA@mail.gmail.com>
Date: Sun, 29 Nov 2015 13:46:39 +0000
From: "Nicholas Lemonias." <lem.nikolas@...glemail.com>
To: bugtraq@...urityfocus.com
Subject: Proftpd 1.3.5a LATEST 0day Follow-up report (Part 2), Patch
released!! 29/11/2015 --- Advanced Information Security Corporation
========================================================
.::PROFTPD v1.3.5a Heap / Malloc Vulnerabilities ::.
ADVANCED INFORMATION SECURITY CORPORATION
Credit: Nicholas Lemonias
Date: 29/11/2015
=========================================================
a888b.
d888888b.
8P"YP"Y88
888|o||o|88
888' .888
888`._.' Y8.
d/ `8b.
dP . Y88b.
d8:' " `::888b
d8" 'Y88b
:8P ' :888
888a. : _888P
._/"Yaa_: .| 88P|
\ YE" `| 8H `.
/ \.___.d| .'
`--..__)888P`._.'
Keeping Things Simple!
==================
INTRODUCTION
==================
ProFTPD is Free and open-source software, compatible with Unix-like
systems and Microsoft Windows (via Cygwin). Along with vsftpd and
Pure-FTPd, ProFTPD is among the most popular FTP servers in Unix-like
environments today. Compared to those, which focus e.g. on simplicity,
speed or security, ProFTPD's primary design goal is to be a highly
feature rich FTP server, exposing a large amount of configuration
options to the user
====================================================
Description: During a manual source code audit of ProFTPD latest,
various security issues were discovered.
=====================================================
===========================
CODE SNIPPET (PoC 1)
===========================
../../mod_sftp/fxp.c:1217-1251
static struct fxp_extpair *fxp_msg_read_extpair(pool *p, unsigned char **buf,
uint32_t *buflen) {
uint32_t namelen, datalen;
unsigned char *name, *data;
struct fxp_extpair *extpair;
namelen = sftp_msg_read_int(p, buf, buflen);
if (*buflen < namelen) {
(void) pr_log_writefile(sftp_logfd, MOD_SFTP_VERSION,
"SFTP message format error: unable to read %lu bytes of extpair name "
"data (buflen = %lu)", (unsigned long) namelen, (unsigned long) *buflen);
SFTP_DISCONNECT_CONN(SFTP_SSH2_DISCONNECT_BY_APPLICATION, NULL);
}
name = palloc(p, namelen + 1);
memcpy(name, *buf, namelen);
(*buf) += namelen;
(*buflen) -= namelen;
name[namelen] = '\0';
datalen = sftp_msg_read_int(p, buf, buflen);
if (datalen > 0) {
data = sftp_msg_read_data(p, buf, buflen, datalen);
} else {
data = NULL;
}
extpair = palloc(p, sizeof(struct fxp_extpair));
extpair->ext_name = (char *) name;
extpair->ext_datalen = datalen;
extpair->ext_data = data;
return extpair;
}
=====================
RATIONALE
=====================
Part of the SFTP handshake involves "extensions", which are key/value
pairs, comprised of strings. In SSH, strings are encoded for network
transport as a 32-bit length, followed by the bytes.
The mod_sftp module has no manual bounds/length metrics / limitations
when reading SFTP extension key/value data from the network.
A malicious attacker might attempt to encode large values, and
allocate more memory than is necessary, cause memory exhaustion.
=======================
CONCLUSION
=======================
To avoid undue resource exhaustion by a remote client, mod_sftp should
include a patch on the maximum length of acceptable extension
keys/values, as reported by our earlier Proftpd report.
==============================
REPORT TIMELINE
==============================
22/11/2015 Reported to vendor. (Initial Report)
25/11/2015 Second report to vendor.
29/11/2015 Bug Report / Patch circulation.
==============================
ACKNOWLEDGEMENTS
==============================
PacketStorm Security,
TEAM TESO, w00w00, Netric, b0iler (eyeonsecurity), wootehfoot,
badpack3t (SP), Vandal (Vic), s0kket, mantis, Big_Al , ELFQrin, bob
(dtors), epic for their ~ legendary mark.
Big Thanks to TJ from Proftpd for the prompt response to the issue,
and excellent cooperation in security
matters.
====================
REFERENCES
====================
[1] Proftpd. 2015. Proftpd Bug Report , MOD_SFTP Heap Overflow.
[ONLINE] Available at:
http://bugs.proftpd.org/show_bug.cgi?id=4210. [Accessed 29 November 2015].
[2] Lemonias, N. (2015). SecurityFocus - Proftpd Heap Overflow. [ONLINE]
Securityfocus.com. Available at:
http://www.securityfocus.com/archive/1/536953/30/0/threaded
[Accessed 29 November 2015].
Powered by blists - more mailing lists