Phoenix Arbitrary URL Redirect
Moderate severity
GitHub Reviewed
Published
Apr 12, 2022
to the GitHub Advisory Database
•
Updated Sep 7, 2023
Package
Affected versions
< 1.0.6
>= 1.1.0, < 1.1.8
>= 1.2.0, < 1.2.3
Patched versions
1.0.6
1.1.8
1.2.3
Description
Published to the GitHub Advisory Database
Apr 12, 2022
Reviewed
Apr 12, 2022
Last updated
Sep 7, 2023
The Phoenix team designed
Phoenix.Controller.redirect/2
to protect against redirects allowing user input to redirect to an external URL where your application code otherwise assumes a local path redirect. This is why the:to
option is used for “local” URL redirects and why you must pass the:external
option to intentionally allow external URLs to be redirected to. It has been disclosed that carefully crafted user input may be treated by some browsers as an external URL. An attacker can use this vulnerability to aid in social engineering attacks. The most common use would be to create highly believable phishing attacks. For example, the following user input would pass local URL validation, but be treated by Chrome and Firefox as external URLs:http://localhost:4000/?redirect=/\nexample.com
Not all browsers are affected, but latest Chrome and Firefox will issue a get request for
example.com
and successfully redirect externallyReferences