This sounds like a change that would disproportionately affect "enterprise" so it's probably best to involve the Chrome enterprise team sooner rather than later. The numbers are higher than I would have expected. Makes me wonder if there is some specific source of those. I would have expected it to be rarer than that to embed a resource from a private network.

/Daniel

On 2021-12-01 14:42, 'Titouan Rigoudy' via blink-dev wrote:
Thanks for the response Yoav, answers inline.

On Wed, Dec 1, 2021 at 1:22 PM Yoav Weiss <yoavwe...@chromium.org> wrote:



    On Monday, November 29, 2021 at 4:37:24 PM UTC+1 Titouan Rigoudy
    wrote:


                Contact emails

        tito...@chromium.org, v...@chromium.org, cl...@chromium.org


                Explainer

        https://github.com/WICG/private-network-access/blob/main/explainer.md


                Specification

        https://wicg.github.io/private-network-access/


                Design docs


        
https://docs.google.com/document/d/1FYPIeP90MQ_pQ6UAo0mCB3g2Z_AynfPWHbDnHIST6VI/edit


                Summary

        Sends a CORS preflight request ahead of any private network
        requests for subresources, asking for explicit permission from
        the target server. A private network request is any request
        from a public website to a private IP address or localhost, or
        from a private website (e.g. intranet) to localhost. Sending a
        preflight request mitigates the risk of cross-site request
        forgery attacks against private network devices such as
        routers, which are often not prepared to defend against this
        threat.



                Blink component

        Blink>SecurityFeature>CORS>PrivateNetworkAccess
        
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ESecurityFeature%3ECORS%3EPrivateNetworkAccess>


                TAG review

        https://github.com/w3ctag/design-reviews/issues/572


                TAG review status

        Pending


                Risks



                Interoperability and Compatibility

        The main interoperability risk, as always, is if other browser
        engines do not implement this. Compat risk is straightforward:
        web servers that do not handle the new preflight requests will
        eventually break, once the feature ships. The plan to address
        this is as follows: 1. Send preflight request, ignore result,
        always send actual request. Failed preflight requests will
        result in a warning being shown in devtools.


    Would that include deprecation reports?


Not so far. Blink is not made aware of the warnings yet, they go from the network service to the browser process and then straight to devtools. More wiring would be needed for Blink to notice the warning and send a deprecation report.

        2. Wait for 3 milestones. 3. Gate actual request on preflight
        request success, with deprecation trial for developers to buy
        some more time.


    We'd also need to communicate this widely in order to get relevant
    developers to sign up for the deprecation trial. UKM investigation
    can help us focus efforts on that front.


That is true. I am planning to write a blog post on web.dev <http://web.dev> or the chrome blog to help raise awareness.

        4. End deprecation trial 4 milestones later. UseCounters:
        https://chromestatus.com/metrics/feature/timeline/popularity/3753
        https://chromestatus.com/metrics/feature/timeline/popularity/3755
        https://chromestatus.com/metrics/feature/timeline/popularity/3757


    That's a lot of usage :/ I remember you did a bunch of UKM
    investigations in the past. Did that include this case as well?


I did not look at these metrics during my previous UKM analysis - I was focusing on non-secure contexts initiating private network requests. I can look into them again however, and try to reach out to the biggest users before enforcement is turned on.

Cheers,
Titouan

        The above measure pages that make at least one private network
        request for which we would now send a preflight request.



        Gecko: Worth prototyping
        (https://github.com/mozilla/standards-positions/issues/143)

        WebKit: No signal
        
(https://lists.webkit.org/pipermail/webkit-dev/2021-November/032040.html)
        Pending response.

        Web developers: No signals Anecdotal evidence so far suggests
        that most web developers are OK with this new requirement,
        though some do not control the target endpoints and would be
        negatively impacted.

        Other signals:


                Ergonomics

        None.



                Activation

        Gating access to the private network overnight on preflight
        requests would likely result in widespread breakage. This is
        why the plan is to first send requests but not act on their
        result, giving server developers time to implement code
        handling these requests. Deprecation warnings will be surfaced
        in DevTools to alert web/client developers when the potential
        for breakage later on is detected. Enforcement will be turned
        on later (aiming for 3 milestones), along with a deprecation
        trial for impacted web developers to buy themselves some more
        time. Experience suggests a large fraction of developers will
        not notice the advance deprecation warnings until things break.



                Security

        This change aims to be security-positive, preventing CSRF
        attacks against soft and juicy targets such as router admin
        interfaces. DNS rebinding threats were of particular concern
        during the design of this feature:
        
https://docs.google.com/document/d/1FYPIeP90MQ_pQ6UAo0mCB3g2Z_AynfPWHbDnHIST6VI/edit#heading=h.189j5gnadts9



                Debuggability

        Relevant information (client and resource IP address space) is
        already piped into the DevTools network panel. Deprecation
        warnings and errors will be surfaced in the DevTools issues
        panel explaining the problem when it arises.



                Is this feature fully tested by web-platform-tests
                
<https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>?

        Yes


                DevTrial instructions

        https://github.com/WICG/private-network-access/blob/main/HOWTO.md


                Flag name

        PrivateNetworkAccessRespectPreflightResults


                Requires code in //chrome?

        False


                Tracking bug

        https://crbug.com/591068


                Launch bug

        https://crbug.com/1274149


                Estimated milestones

        DevTrial on desktop     98

        DevTrial on android     98



                Link to entry on the Chrome Platform Status

        https://chromestatus.com/feature/5737414355058688


                Links to previous Intent discussions

        Intent to prototype:
        
https://groups.google.com/a/chromium.org/g/blink-dev/c/PrB0xnNxaHs/m/jeoxvNjXCAAJ


        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+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPATO9f6QS%3D4oJqnJg6NR%3DpoKcT149h8LeiSzkfd%3Dqq8qV6pLA%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPATO9f6QS%3D4oJqnJg6NR%3DpoKcT149h8LeiSzkfd%3Dqq8qV6pLA%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/360ea552-dab4-8bcf-a679-d8be8d5e041f%40gmail.com.

Reply via email to