===============================================
Credit: Nicholas Lemonias

.::PROFTPD v1.3.5a HEAP OVERFLOWS / MALLOC CORRUPTION ::.

ADVANCED INFORMATION SECURITY CORPORATION

Keeping Things Simple!

======================================================

.88888888:.
88888888.88888.
.8888888888888888.
888888888888888888
888' _`888'_ `88888
888 888 888 88888
888_888_::_888_:888
888:::,::,:::::8888
888`:::::::::'`8888
.888 `::::' 8:88.
8888 `8:888.
.8888' `888888.
.8888:.. .::. ...:'8888888:.
.8888.' :' `'::`88:88888
.8888 ' `.888:8888.
888:8 . 888:88888
.888:88 .: 888:88888:
8888888. :: 88:888888
`.::.888. :: .88888888
.::::::.888. :: :::`888'.:.
::::::::::.888 ' .::::::::::::
::::::::::::.8 ' .:8::::::::::::.
.::::::::::::::. .:888:::::::::::::
:::::::::::::::888:.__..:88888:::::::::::'
`'.:::::::::::88888888888.888:::::::::'
`':::_:' -- '' -'-' `':_::::'`.

==================
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. [3]
=====================================================

===========================
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, resulting in uncontrollable
memory exhaustion / and resource consumption.

=======================
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) [3]
25/11/2015 Second report to vendor.

29/11/2015 Bug Report / Patch circulation.

Big thanks to TJ from Proftpd for the prompt response to the issue,
and excellent cooperation in security.

==============================
ACKNOWLEDGEMENTS
==============================

PacketStorm Security
TEAM TESO, w00w00, Netric, b0iler (eyeonsecurity), wootehfoot,
badpack3t (SP), Vandal (Vic), s0kket, mantis, Big_Al , ELFQrin, bob
(dtors), epic, RaT for their ~ legendary mark.

====================
REFERENCES
====================

[1] Proftpd. 2015. Proftpd Bug Report , MOD_SFTP Bug Report.
[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].

[3] Cnvd.org.cn, (2015). China's Emergency Response Team - CERT.
[online] Available at:
http://www.cnvd.org.cn/flaw/show/CNVD-2015-07798 [Accessed 29 November 2015].
2015].

Reply via email to