Description: Fix possible redirection on Chrome An insufficient check allowed users of the Google Chrome browser to be redirected to external domains (e.g. on login). [CVE-2015-3880] Author: Marc Alexander , Joas Schilling Origin: upstream, https://github.com/phpbb/phpbb/commit/1a3350619f428d9d69d196c52128727e27ef2f04 Reviewed-by: Andreas Fischer Last-Update: 2015-05-09 --- a/includes/functions.php +++ b/includes/functions.php @@ -2492,7 +2492,7 @@ // Attention: only able to redirect within the same domain if $disable_cd_check is false (yourdomain.com -> www.yourdomain.com will not work) if (!$disable_cd_check && $url_parts['host'] !== $user->host) { - $url = generate_board_url(); + trigger_error('Tried to redirect to potentially insecure url.', E_USER_ERROR); } } else if ($url[0] == '/') @@ -2579,6 +2579,12 @@ } } + // Make sure we don't redirect to external URLs + if (!$disable_cd_check && strpos($url, generate_board_url(true) . '/') !== 0) + { + trigger_error('Tried to redirect to potentially insecure url.', E_USER_ERROR); + } + // Make sure no linebreaks are there... to prevent http response splitting for PHP < 4.4.2 if (strpos(urldecode($url), "\n") !== false || strpos(urldecode($url), "\r") !== false || strpos($url, ';') !== false) {