home *** CD-ROM | disk | FTP | other *** search
- ###### ## ## ######
- ## ### ## ##
- ###### ## # ## ##
- ## ## ### ##
- ###### . ## ## . ######.
-
- Secure Networks Inc.
-
- Security Advisory
- January 12, 1997
-
- Vulnerabilities in the Apache httpd
-
- There is a serious vulnerability in the cookies module of the Apache httpd,
- version 1.1.1 and earlier, which makes it possible for remote individuals
- to obtain access to systems running the Apache httpd. Only sites which
- enabled mod_cookies, a nondefault option, are vulnerable.
-
- Technical Details
- ~~~~~~~~~~~~~~~~~
- The function make_cookie, in mod_cookies.c uses a 100 byte buffer,
- new_cookie to store information used to track web site users. The
- hostname, which with even the most cautious of resolver libraries, can be
- up to 255 characters long, is stuffed into this buffer, along with the
- string "apache=" and a number. The offending code reads:
-
- void make_cookie(request_rec *r)
- {
- struct timeval tv;
- char new_cookie[100]; /* blurgh */
- char *dot;
- const char *rname = pstrdup(r->pool,
- get_remote_host(r->connection, r->per_dir_config,
- REMOTE_NAME));
- struct timezone tz = { 0 , 0 };
- if ((dot = strchr(rname,'.'))) *dot='\0'; /* First bit of hostname */
- gettimeofday(&tv, &tz);
- sprintf(new_cookie,"%s%s%d%ld%d; path=/",
- COOKIE_NAME, rname,
- (int)getpid(),
- (long)tv.tv_sec, (int)tv.tv_usec/1000 );
- table_set(r->headers_out,"Set-Cookie",new_cookie);
- return;
- }
-
- Note that although the get_remote_host() function converts all uppercase
- letters to lowercase letters, there is at least one way in which a
- determined attacker can still exploit the overflow.
-
-
- Impact
- ~~~~~~
- Remote individuals can obtain access to the web server. If the httpd
- services requests as user root, attackers can obtain root access. If the
- httpd is run in a chroot() environment, the attacker will be restricted to
- the chrooted environment. We strongly advise adminstrators to run their
- web servers as an unpriviliged user in an chrooted environment whenever
- possible.
-
-
- Vulnerable Systems
- ~~~~~~~~~~~~~~~~~~
- Any system running the Apache httpd 1.1.1 or earlier, with the compile-time
- option mod_cookies enabled is vulnerable. To tell which web server
- software you are using, telnet to port 80 of the web server, and issue the
- command:
- GET / HTTP/1.0
- to the web server, followed by two carriage returns. You should see
- something which looks like:
-
- $ telnet localhost 80
- Trying 127.0.0.1...
- Connected to localhost.
- Escape character is '^]'.
- GET / HTTP/1.0
-
- HTTP/1.0 200 OK
- Date: Tue, 07 Jan 1997 18:59:31 GMT
- Server: Apache/1.1.1
- Content-type: text/html
- Set-Cookie: Apache=localhost9185266357164; path=/
- .
- .
- .
- The important lines to look at are the Server: lines, and the Set-Cookie:
- lines. The Server: line tells you which web server software you are
- running, and the Set-Cookie line appears only if your web server is
- using cookies to track users. If the Set-Cookie: line appears, and the
- Server: line reads Apache/1.1.1, or a number smaller than 1.1.1, then you
- are vulnerable.
-
- Apache versions 1.2b0 and later do not appear to be vulnerable. This is
- because of the changes made to the cookie handling code when it was moved
- to mod_usertrack. As part of these changes, the buffer in the make_cookie
- function was moved off of the stack. Therefore although the overflow is
- still present, and prevents users with long host names from accessing the
- web server, it is not likely to be exploitable.
-
- In addition to the Apache httpd, some commercial web servers derived from
- the Apache httpd are likely to be vulnerable. In particular, Thawte
- Consulting's Sioux server, and Community ConneXion's Stronghold server
- appear likely to be vulnerable. In both cases, as in the Apache httpd, a
- nondefault compile-time option must be enabled. Exploitability of web
- server software other than the Apache httpd has not been verified. Users
- of Apache derived web servers should disable mod_cookies if enabled, and
- contact their vendors for further information.
-
-
-
- Fix Information
- ~~~~~~~~~~~~~~~
- We suggest increasing the buffer length to handle 255 character hostnames,
- and verifying that hostname length is within acceptable limits.
-
- The Apache group suggests that Apache 1.1.1 users do one of the following:
- 1. Upgrade to Apache 1.1.2, which can be obtained at
- http://www.apache.org/dist/, compile the new version, then kill
- your currently-running httpd, and start the new version.
- 2. Apply the attached patch to mod_cookies.c, recompile, and kill
- and restart your httpd.
- 3. Discontinue the use of mod_cookies, by editing the Configuration
- file, and recommpiling.
- 4. Upgrade to the current Apache 1.2 beta.
-
- Note that options 2 and 3 do not fix an unrelated hole which allows
- remote users to obtain directory indexes even when an index.html is
- present.
-
- *** mod_cookies.c Tue Jan 7 14:38:15 1997
- --- /usr/tmp/mod_cookies.c Tue Jan 7 14:38:11 1997
- ***************
- *** 119,125 ****
- void make_cookie(request_rec *r)
- {
- struct timeval tv;
- ! char new_cookie[100]; /* blurgh */
- char *dot;
- const char *rname = pstrdup(r->pool,
- get_remote_host(r->connection, r->per_dir_config,
- --- 119,125 ----
- void make_cookie(request_rec *r)
- {
- struct timeval tv;
- ! char new_cookie[1024]; /* blurgh */
- char *dot;
- const char *rname = pstrdup(r->pool,
- get_remote_host(r->connection, r->per_dir_config,
- ***************
- *** 128,133 ****
- --- 128,136 ----
- struct timezone tz = { 0 , 0 };
-
- if ((dot = strchr(rname,'.'))) *dot='\0'; /* First bit of hostname */
- + if (strlen (rname) > 255)
- + rname[256] = 0;
- +
- gettimeofday(&tv, &tz);
- sprintf(new_cookie,"%s%s%d%ld%d; path=/",
- COOKIE_NAME, rname,
-
-
- Users of the Stronghold web server will be able to obtain a fix at
- http://stronghold.c2.net/support/ups_and_bugs.php. There will be a
- new release of Stronghold on Monday, fixing the problem.
-
-
- Additional Information
- ~~~~~~~~~~~~~~~~~~~~~~
- If you have any questions about this advisory, feel free to mail me at
- davids@secnet.com. Past Secure Networks advisories can be found at
- ftp://ftp.secnet.com/pub/advisories, and Secure Networks papers can be
- found at ftp://ftp.secnet.com/pub/papers.
-
- The following PGP key is for davids@secnet.com, should you wish to encrypt
- any message traffic to me.:
-
- -----BEGIN PGP PUBLIC KEY BLOCK-----
- Version: 2.6.2
-
- mQCNAzJ4qJAAAAEEAOgB7mooQ6NgzcUSIehKUufGsyojutC7phVXZ+p8FnHLLZNB
- BLQEtj5kmfww2A2pR29q4rgPeqEUOjWPlLNdSLby3NI8yKz1AQSQLHAwIDXt/lku
- 8QXClaV6pNIaQSN8cnyyvjH6TYF778yZhYz0mwLqW6dU5whHtP93ojDw1UhtAAUR
- tCtEYXZpZCBTYWNlcmRvdGUgPGRhdmlkc0BzaWxlbmNlLnNlY25ldC5jb20+
- =LtL9
- -----END PGP PUBLIC KEY BLOCK-----
-
- Many thanks to Ramsey Dow (ramseyd@secnet.com) for helping find vulnerable
- Apache derivatives.
-
- For further information about the Apache httpd, see http://www.apache.org
-
- For further information about the Sioux web server, see
- http://www.thawte.com/products/sioux
-
- For further information about the Stronghold web server, see
- http://stronghold.c2.net/support/ups_and_bugs.php and
- http://stronghold.c2.net
-
- Many thanks to the Apache group and vendors of Apache derived web servers
- for an extremely prompt response.
-
- Copyright Notice
- ~~~~~~~~~~~~~~~~
- The contents of this advisory are Copyright (C) 1997 Secure Networks Inc,
- and may be distributed freely provided that no fee is charged for
- distribution, and that proper credit is given.
-
- Apache httpd source code distributed in this advisory falls under the
- following license:
- Copyright (c) 1995, 1996 The Apache Group. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in
- the documentation and/or other materials provided with the
- distribution.
-
- 3. All advertising materials mentioning features or use of this
- software must display the following acknowledgment:
- "This product includes software developed by the Apache Group
- for use in the Apache HTTP server project
- (http://www.apache.org/)."
-
- 4. The names "Apache Server" and "Apache Group" must not be used to
- endorse or promote products derived from this software without
- prior written permission.
-
- 5. Redistributions of any form whatsoever must retain the following
- acknowledgment:
- "This product includes software developed by the Apache Group
- for use in the Apache HTTP server project
- (http://www.apache.org/)."
-
- THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
- EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
- ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
-
-