Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

cgi.force_redirect configuration is bypassable due to the environment variable collision

Moderate
bukka publishedGHSA-94p6-54jq-9mwpSep 27, 2024

Package

No package listed

Affected versions

< 8.1.30
< 8.2.24
< 8.3.12

Patched versions

8.1.30
8.2.24
8.3.12

Description

Summary

According tohttps://www.php.net/manual/en/security.cgi-bin.force-redirect.php, the configuration directivecgi.force_redirect prevents anyone from calling PHP directly with a URL likehttp://host.example/cgi-bin/php/secretdir/script.php.
The default value ofcgi.force_redirect is1.

But there is a bug that can cause attackers to bypass restrictions and access php-cgi directly.

Details

BothREDIRECT_STATUS orHTTP_REDIRECT_STATUS are considered legal environment variable whilecgi.force_redirect is turned on:

https://github.com/php/php-src/blob/master/sapi/cgi/cgi_main.c#L1905

/* check force_cgi after startup, so we have proper output */if (cgi&&CGIG(force_redirect)) {/* Apache will generate REDIRECT_STATUS, * Netscape and redirect.so will generate HTTP_REDIRECT_STATUS. * redirect.so and installation instructions available from * http://www.koehntopp.de/php. *   -- kk@netuse.de */if (!getenv("REDIRECT_STATUS")&&!getenv ("HTTP_REDIRECT_STATUS")&&/* this is to allow a different env var to be configured * in case some server does something different than above */(!CGIG(redirect_status_env)|| !getenv(CGIG(redirect_status_env)))) {zend_try {SG(sapi_headers).http_response_code=400;PUTS("<b>Security Alert!</b> The PHP CGI cannot be accessed directly.\n\n\<p>This PHP CGI binary was compiled with force-cgi-redirect enabled.  This\n\means that a page will only be served up if the REDIRECT_STATUS CGI variable is\n\set, e.g. via an Apache Action directive.</p>\n\<p>For more information as to <i>why</i> this behaviour exists, see the <a href=\"http://php.net/security.cgi-bin\">\manual page for CGI security</a>.</p>\n\<p>For more information about changing this behaviour or re-enabling this webserver,\n\consult the installation file that came with this distribution, or visit \n\<a href=\"http://php.net/install.windows\">the manual page</a>.</p>\n");}zend_catch {}zend_end_try();#if defined(ZTS)&& !defined(PHP_DEBUG)/* XXX we're crashing here in msvc6 debug builds at * php_message_handler_for_zend:839 because * SG(request_info).path_translated is an invalid pointer. * It still happens even though I set it to null, so something * weird is going on. */tsrm_shutdown();#endiffree(bindpath);returnFAILURE;}}

Unexpectedly,Redirect-Status header is converted to theHTTP_REDIRECT_STATUS environment variable, allowing the attacker to bypass thecgi.force_redirect variable through HTTP headers.

Impact

Thecgi.force_redirect configuration can be bypassed.

While this does not pose significant security risks in most common configurations, certain configurations that modifies theSCRIPT_FILENAME environment variable may allow the arbitrary file inclusion.

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector:More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity:More severe for the least complex attacks.
Privileges required:More severe if no privileges are required.
User interaction:More severe when no user interaction is required.
Scope:More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality:More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity:More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability:More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

CVE ID

CVE-2024-8927

Weaknesses

No CWEs

Credits


[8]ページ先頭

©2009-2025 Movatter.jp