On Wed, Aug 18, 2021 at 11:18 PM Matt Menke <[email protected]> wrote:

> On Wed, Aug 18, 2021 at 4:53 PM Yoav Weiss <[email protected]> wrote:
>
>>
>>
>> On Wed, Aug 18, 2021 at 8:47 PM 'Matt Menke' via blink-dev <
>> [email protected]> wrote:
>>
>>> Contact [email protected]
>>>
>>> ExplainerNone
>>>
>>> Specificationhttps://url.spec.whatwg.org/
>>>
>>> Summary
>>>
>>> Most hostnames that aren't valid IPv4 addresses, but end in numbers are
>>> treated as valid, and looked up via DNS (e.g., http://foo.127.1/). Per
>>> the Public Suffix List spec, the eTLD+1 of the hostname in that URL should
>>> be "127.1". If that is ever fed back into a URLs, "http://127.1/
>>> <http://127.0.0.1/>" is mapped to "http://127.0.0.1/"; by the URL spec,
>>> which seems potentially dangerous. "127.0.0.0.1" could also potentially be
>>> used to confuse users. We want to reject URLs with these hostnames.
>>>
>>>
>>> Blink componentInternals>Network>DNS
>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3EDNS>
>>>
>>> Motivation
>>>
>>> Most hostnames that aren't valid IPv4 addresses, but end in numbers are
>>> treated as valid hostnames, and looked up via DNS. Example hostnames:
>>> 127.0.0.0.1, foo.0.1, 10.0.0.09, 08.1.2.3. These can be problematic for the
>>> following reason: * "http://foo.127.1/"; has an eTLD+1 of "127.1", per
>>> the public suffix list spec. If that's ever used as the hostname in a new
>>> URL, however, as in "http://127.1 <http://127.0.0.1/>", it will then
>>> get mapped to "http://127.0.0.1/";, per the URL spec, which is a
>>> different host, which is not safe. * "http://127.0.0.0.1"; and "
>>> http://1.2.3.09";, both of which are looked up via DNS rather than
>>> failing or being treated as IPv4 hostnames, also seem potentially
>>> confusing. While no exploit is currently known here, we want to remove
>>> support for these as a preventative security measure. The URL spec has been
>>> updated so that any URL with a hostname ending in a number that's not an
>>> IPv4 address (including, e.g., http://foo.1./, but not http://foo.1../)
>>> is considered invalid. Since this is part of the URL spec, not the DNS
>>> spec, we want to reject these URLs are the GURL layer, for URLs with
>>> appropriate protocols (http, https, ws, wss, file). For consistency, we
>>> should also fail DNS lookup attempts of these sorts of hostnames.
>>>
>>>
>>> Initial public proposalhttps://github.com/whatwg/url/pull/619
>>>
>>> TAG reviewNot required for an Intent to Deprecate, I believe.
>>>
>>> TAG review statusNot applicable
>>>
>>> Risks
>>>
>>>
>>> Interoperability and Compatibility
>>>
>>> Any URL with an affected hostname will fail to load, and will need to be
>>> migrated to another hostname. URLs of this form do appear to be in use,
>>> though it's not clear under what circumstances. No entry in the public
>>> suffix list is affected. Affected URLs make up no more than 0.0003% of
>>> hostnames looked up via the host resolver on any platform, and are
>>> basically not used in any file URLs, according to our metrics.
>>>
>>
>> Do we have reason to believe these hostnames are not legitimate ones?
>>
>
> Unfortunately, we have no insight into them - they could be mistyped URLs
> sent to typo squatting ISPs that OSX lets through but the Windows host
> resolver blocks, and various flavors of Linux treat differently.  Or they
> could be mapped via a hosts file, or they could be hostnames that only
> resolve on public networks.  Could be some network tool that uses them when
> installed locally, but is only available on certain platforms.  No reason
> to think one possibility is more likely than the others.
>

Do we have UKM for them that would enable us to test a random sample?
I'm concerned about blocking those hostnames if they are legitimate, as
that's something that a web developer can't do anything about.
So even if the number of hosts is small, I'd like to get more certainty
that they are *not* legitimate hosts before blocking them.


>
>
>>
>>> On OSX and Android, about 90% of host resolver lookups for these
>>> hostnames succeed, 60% do on Linux, and 2% on Windows and ChromeOS.
>>>
>>
>> Do you know where those failures are coming from?
>>
>
> Could be typos, could be the Windows and ChromeOS host resolvers don't let
> them through.  Since we've had no filed bugs about them, I suspect the
> failures are not deliberate navigations or intended network requests.  I'm
> much more interested in where the successes are coming from, myself.
>
>
>>
>>
>>> To allow for emergency disabling in case of wider than expected
>>> breakage, I intend to add a feature for it, and do a 50% field trial on
>>> pre-release channels, though plan to just enable the feature, rather than
>>> do a gradual rollout to stable, given the low usage.
>>>
>>>
>>> Gecko: Positive (
>>> https://github.com/whatwg/url/pull/619#issuecomment-890826499
>>> <https://www.chromestatus.com/admin/features/launch/5679790780579840/1?intent=1>
>>> )
>>>
>>
>> Can you file an official position request? https://bit.ly/blink-signals
>>
>
> Done for Mozilla:
> https://github.com/mozilla/standards-positions/issues/568
>
> Should I also do this for WebKit as well?  They have in process CLs, so
> not sure if it's still needed.
>

Agree that in-flight patches for WebKit are a sufficient positive signal.


>
>
>>
>>
>>>
>>> WebKit: In development (https://bugs.webkit.org/show_bug.cgi?id=228826)
>>>
>>> Web developers: No signals
>>>
>>> Activation
>>>
>>> This breaks anything using one of these domains, and requires migrating
>>> to other hostnames.
>>>
>>>
>>> Security
>>>
>>> None
>>>
>>>
>>> Debuggability
>>>
>>> These will act like any other invalid URL. Behavior is context
>>> dependent. Since this is logic deep within GURL, and GURLs are created in a
>>> great many places, console warnings specifically for this seem not
>>> practical.
>>>
>>>
>>> Is this feature fully tested by web-platform-tests
>>> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
>>> ?No.  Javascript URL construction is tested, but URLs are used in a
>>> great many other places, which don't have test coverage, since DNS lookups
>>> for these domains must succeed in the first place for the tests to be
>>> meaningful.
>>>
>>> Flag name
>>>
>>> Requires code in //chrome?False
>>>
>>> Tracking bughttps://crbug.com/1237032
>>>
>>> Estimated milestones
>>> DevTrial on desktop 95
>>> DevTrial on Webview 95
>>>
>>> Link to entry on the Chrome Platform Status
>>> https://www.chromestatus.com/feature/5679790780579840
>>>
>>> This intent message was generated by Chrome Platform Status
>>> <https://www.chromestatus.com/>.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEK7mvq%2Bfnau%3DE%2BONhe0kr9HOpN84eCpoub84%3DswKzPkrGzi5A%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEK7mvq%2Bfnau%3DE%2BONhe0kr9HOpN84eCpoub84%3DswKzPkrGzi5A%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfVtseGpTWUS_Unu9SkAKdqFp7x6Ttk36oYhPipfej0FGA%40mail.gmail.com.

Reply via email to