>Number:         1203
>Category:       mod_include
>Synopsis:       possible ../ attack in mod_include
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    apache (Apache HTTP Project)
>State:          open
>Class:          sw-bug
>Submitter-Id:   apache
>Arrival-Date:   Mon Oct  6 21:50:02 1997
>Originator:     [EMAIL PROTECTED]
>Organization:
apache
>Release:        1.2, 1.3
>Environment:
n/a
>Description:
This code in handle_include:

                /* be safe; only files in this directory or below allowed */
                char tmp[MAX_STRING_LEN + 2];
                ap_snprintf(tmp, sizeof(tmp), "/%s/", parsed_string);
                if (parsed_string[0] == '/' || strstr(tmp, "/../") != NULL) {
                    error_fmt = "unable to include file \"%s\" "
                        "in parsed file %s";
                }

Is broken if parsed_string overflows that buffer.  It's possible to put
whatever crap at the beginning then loads of ../../../ after that, and they
won't be detected.

It also needs os_is_absolute_path abstraction.

It shouldn't use a tmp buffer to do this.  It should be replaced by an
intelligent os abstracted function that checks for leading ../ and trailing
/.., and /../ anywhere else, and doesn't bother copying things around.
>How-To-Repeat:

>Fix:
see descriptio
>Audit-Trail:
>Unformatted:


Reply via email to