I'm planning to ship it behind a feature (enabled by default, after
experimenting on pre-release channels) to allow emergency disabling.

On Fri, Aug 20, 2021 at 12:53 AM Yoav Weiss <yoavwe...@chromium.org> wrote:

> OK, I'm convinced that these are not "real" hosts, and that breaking them
> will not result in actual user-visible breakage. Would it be possible to
> ship this with a server-side flag that'd enable us to quickly revert in
> case we're wrong?
>
> On Thu, Aug 19, 2021 at 6:09 PM Matt Menke <mme...@google.com> wrote:
>
>> So given information on this thread, I think the ways these can succeed
>> are possibly:
>> 1)  Entries in the HOSTS file.
>> 2)  Intermediary DNS servers or MitMs typo squatting, or actively
>> attacking the user.
>> 3)  Local DNS servers providing additional DNS results.
>> 4)  Suffix search (which would trigger on, e.g., "1533.67.89" but not
>> "67.89.1533")
>> 5)  mDNS
>> 6)  Local tools injecting DNS lookup results.
>>
>> Unfortunately, we don't have a good way to gather hard data on which are
>> more common.  Given that there are potential security implications here,
>> I'm reluctant to wait for another round of data gathering, though we could
>> probably distinguish cases 4) and 5) from the others, and 1) as well, at
>> least on some platforms.  Also not sure how useful just knowing about those
>> cases would be.
>> On Thursday, August 19, 2021 at 11:54:29 AM UTC-4 Harald Alvestrand wrote:
>>
>>> Thanks - I misremembered which end of the class B network got jammed
>>> together. 67.89.31533 is indeed the one that is "legal" syntax, and so of
>>> course 67.89.1 is too.
>>>
>>>
>>> On Thu, Aug 19, 2021 at 3:20 PM Matt Menke <mme...@google.com> wrote:
>>>
>>>> Note that 127.0.1 is mapped to 127.0.0.1 by GURL, following the URL
>>>> spec, so that would generally not make it to the DNS resolver (unless
>>>> something tried to resolve it directly).  Per the URL spec, "31533.67.89"
>>>> would not be normalized by GURL, but "67.89.31533" would be converted to
>>>> 67.89.123.45.  My instrumentation was at the DNS layer, so "127.0.1" and
>>>> "67.89.31533" would not show up as problematic hostnames in my metrics,
>>>> though "31533.67.89" would.
>>>>
>>>> On Thu, Aug 19, 2021 at 9:10 AM Harald Alvestrand <h...@google.com>
>>>> wrote:
>>>>
>>>>> An interesting property of all-numeric hostnames is that they *may* be
>>>>> legitimate IPv4 addresses using highly archaic IP address formats - we're
>>>>> so used to the 123.45.67.89 syntax that we forget that 31533.67.89 once 
>>>>> was
>>>>> regarded as a legitimate way to encode the same address (class B 
>>>>> notation).
>>>>>
>>>>> There are also certain resolvers that will "helpfully" map an
>>>>> all-numeric hostname presented in DNS to an IP address without asking
>>>>> anyone.
>>>>> So if those two bugs (or "archaic features") occur together, the
>>>>> result may be a successful resolution.
>>>>>
>>>>> No idea why it would occur more often on Android than on Windows,
>>>>> though. And my Linux boxes don't resolve 127.0.1 to anything.
>>>>>
>>>>>
>>>>>
>>>>> On Thu, Aug 19, 2021 at 2:42 PM Yoav Weiss <yoav...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> Interesting! What happens then in the "successful resolution" case
>>>>>> Matt mentioned?
>>>>>>
>>>>>> On Thu, Aug 19, 2021 at 2:39 PM Harald Alvestrand <h...@google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Department of odd facts:
>>>>>>>
>>>>>>> - The ICANN rules for new TLDs forbid all top level domain names
>>>>>>> that start with a digit
>>>>>>> - The IDNA rules for bidirectional scripts forbid domain names that
>>>>>>> start with a digit (Unicode bidi afficandoes will know why)
>>>>>>> - The only real reason why leading digits aren't outlawed in domain
>>>>>>> names at the second level is 3com.
>>>>>>>
>>>>>>> It seems safe to say that no legitimate fully qualified hostname
>>>>>>> will ever have a last component consisting only of digits.
>>>>>>> That means the only time we could get a legitimate hostname is for
>>>>>>> something that has to be resolved via a search path.
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Aug 19, 2021 at 2:33 PM Yoav Weiss <yoav...@chromium.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Aug 19, 2021 at 2:28 PM Matt Menke <mme...@google.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I created the title using Chrome Status's deprecation template, so
>>>>>>>>> any confusion should be blamed on that.
>>>>>>>>>
>>>>>>>>
>>>>>>>> +Jason Robbins - on the title issues.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> I used the "Draft Intent to Deprecate and Remove email" button,
>>>>>>>>> and assume I'd need to do a "Draft Intent to Ship email" before 
>>>>>>>>> shipping to
>>>>>>>>> stable, after a 50% trial on prerelease channels.
>>>>>>>>>
>>>>>>>>
>>>>>>>> There's no need for 2 emails for removals. We can discuss the full
>>>>>>>> deprecation, experimentation/trials and removal on stable here.
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Aug 19, 2021 at 3:15 AM Yoav Weiss <yoav...@chromium.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, Aug 18, 2021 at 11:36 PM Matt Menke <mme...@google.com>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Aug 18, 2021 at 5:23 PM Yoav Weiss <yoav...@chromium.org>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, Aug 18, 2021 at 11:18 PM Matt Menke <mme...@google.com>
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Aug 18, 2021 at 4:53 PM Yoav Weiss <
>>>>>>>>>>>>> yoav...@chromium.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wed, Aug 18, 2021 at 8:47 PM 'Matt Menke' via blink-dev <
>>>>>>>>>>>>>> blin...@chromium.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Contact emailsmme...@google.com
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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 proposal
>>>>>>>>>>>>>>> https://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.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> We have UKM on their number (0.0003% of DNS lookups on OSX, less
>>>>>>>>>>> elsewhere - we can't meaningfully instrument percent of created 
>>>>>>>>>>> GURLs), but
>>>>>>>>>>> we don't have their hostnames, what they resolve to, or know 
>>>>>>>>>>> anything else
>>>>>>>>>>> about them, unfortunately.
>>>>>>>>>>>
>>>>>>>>>>> Navigation to a subset of these as frame URLs were broken at one
>>>>>>>>>>> point - I'm pretty sure the breakage even made it to stable:
>>>>>>>>>>> https://crbug.com/1173238.  There were no reports of problems.
>>>>>>>>>>> Only non-IPv4 URLs where the last two components were broken, 
>>>>>>>>>>> though, and
>>>>>>>>>>> it didn't affect subresources.  On OSX and Android, over 99% of
>>>>>>>>>>> successfully resolved problematic hostnames fit into that bucket, 
>>>>>>>>>>> though on
>>>>>>>>>>> Linux, only about 2% do.
>>>>>>>>>>>
>>>>>>>>>>> That doesn't give us any hard conclusions, except they're either
>>>>>>>>>>> not deliberate navigations on OSX/Android, or they're not 
>>>>>>>>>>> navigations.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> :|
>>>>>>>>>>
>>>>>>>>>> One more question: Is this an intent to Prototype or an intent to
>>>>>>>>>> deprecate? The title is a bit unclear..
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 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 blink-dev+...@chromium.org.
>>>>>>>>>>>>>>> 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 blink-dev+...@chromium.org.
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfWB4wVuGshgPaLVXp%3DYsWUiXgJhUABD3ZFJ9xbhg1J3ww%40mail.gmail.com
>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfWB4wVuGshgPaLVXp%3DYsWUiXgJhUABD3ZFJ9xbhg1J3ww%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 blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEK7mvoZMrGiAo_TjaDSdjPt51084ZRbEA1Pn3NOKJ66d%2BcRqQ%40mail.gmail.com.

Reply via email to