mod_ntlm is the Apache module for versions 1.3 and 2.0 which gives Apache the ability to authenticate users via the NTLM authentication technology that is largely specific to Microsoft IIS. The log() function contains two remotely exploitable vulnerabilities. Both a heap overflow and an incorrect call to ap_log_rerror() allow for arbitrary code execution.
802cd05c619e98126a7d5192a17c55f423eeb343fb55248fd94b28417e566c3d
Product Description
mod_ntlm is an Apache module (originially designed for Apache 1.3, now
available for Apache 2.0) that provides the ability for Apache services to
authenticate users via the NTLM authentication technology that is largely
specific to Microsoft IIS.
Home page: https://www.sourceforge.net/projects/modntlm
Vulnerability Description
mod_ntlm contains a pair of remotely-exploitable vulnerabilities in its data
logging routine. The vulnerabilities occur in a default build. The
mod_ntlm "log()" function contains a pair of exploitable error conditions:
static void
log(const request_rec * r, const char *format,...)
{
va_list ap;
char *s;
if ((s = (char *) malloc(2048)) == NULL)
return;
va_start(ap, format);
vsprintf(s, format, ap);
va_end(ap);
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO | APLOG_NOTICE, r, s);
free(s);
}
The function is called with user-supplied input in various locations in the
code. The first vulnerability is a heap overflow -- if any user-supplied
input is greater than 2048 characters, memory management structures are
overwritten, and arbitrary code execution is possible. Secondly, an
incorrect call to ap_log_rerror(). The last parameter to ap_log_rerror() is
not a log line, but a format string. Due to the previous decoding
operation, it becomes possible to pass format specifiers to ap_log_rerror().
A carefully crafted format string may allow code execution.
Proof-of-Concept
Either of the following two sessions will cause httpd to exit due to a
segmentation fault:
GET / HTTP/1.0
Authorization: [Ax3000]
OR
GET / HTTP/1.0
Authorization: %n%n%n%n
Similarly, a proxy server can be exploited by using an external URL
(https://www.yahoo.com/, for instance), in place of "/", and using
Proxy-Authorization, in place of Authorization in the examples above.
Vulnerable Versions
Apache 1.3: mod_ntlm v0.4 and prior
Apache 2.0: mod_ntlmv2 v0.1
Vendor Status
The vulnerability was submitted to the vendor via SourceForge at:
https://sourceforge.net/tracker/index.php?func=detail&aid=723468&group_id=490
6&atid=104906
The vendor has not responded to the bug report as of the time of writing of
this advisory.