Patched Fix Follow Redirects improperly handles URLs in the url.parse() function #18
+3
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description Overview
Affected of this project
yahoo/verizon-media-open-source-project-portal
are vulnerable to Improper Input Validation due to the improper handling of URLs by theurl.parse()
function. When newURL()
throws an error, it can be manipulated to misinterpret the hostname. An attacker could exploit this weakness to redirect traffic to a malicious site, potentially leading to information disclosure, phishing attacks, or other security breaches.PoC:
Below is part of
follow-redirects's
.js code.It checks URL hostname which is startswith
[
character. Which means if the urlObject ishttp://[localhost]/
, then it converts tohttp://localhost/
.The problem comes from below code.
urlToOptions()
function is called after new URL().When new
URL('http://[localhost]')
it throws an error which is Invalid URL. Then it goescatch{ }
phrase.At the
catch{ }
phrase, there is vulnerable function which isurl.parse()
.url.parse('http://[localhost]')
sees URL tohttp://localhost
.Proof of Concept
CWE-20
CWE-601
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
I confirm that this contribution is made under the terms of the license found in the root directory of this repository's source tree and that I have the authority necessary to make this contribution on behalf of its copyright owner.