Date: 29/11/2015
Credit: Nicholas Lemonias
.::PROFTPD v1.3.5a HEAP OVERFLOWS ::.
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:.__..:
`'.:::::::::::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_
}
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_
[2] Lemonias, N. (2015). SecurityFocus - Proftpd Heap Overflow.
[ONLINE] Securityfocus.com. Available at:
http://www.securityfocus.com/
[Accessed 29 November 2015].
[3] Cnvd.org.cn, (2015). China's Emergency Response Team, Proftpd 1.3.5a report - CERT.[online] Available at: http://www.cnvd.org.cn/flaw/
2015].
Komentarų nėra:
Rašyti komentarą