I may very well be wrong, but it seems like
CookieUtils::EmitCookieWarningsAndMetrics
<https://source.chromium.org/chromium/chromium/src/+/main:content/browser/renderer_host/cookie_utils.cc;l=97;drc=8afc9e45a7e96afda8f22ef044d1e7cdc5a6f75a;bpv=1;bpt=1>
has
the right plumbing to reach RenderFrameHost, and from it, get a
ReportingSource
<https://source.chromium.org/chromium/chromium/src/+/main:content/browser/renderer_host/render_frame_host_impl.cc;l=1730;drc=8afc9e45a7e96afda8f22ef044d1e7cdc5a6f75a?q=RenderFrameHost&ss=chromium%2Fchromium%2Fsrc>
that
can enable us to send
<https://source.chromium.org/chromium/chromium/src/+/main:content/browser/renderer_host/render_frame_host_impl.cc;l=10676;drc=8afc9e45a7e96afda8f22ef044d1e7cdc5a6f75a;bpv=1;bpt=1?q=RenderFrameHost&ss=chromium%2Fchromium%2Fsrc>
deprecation reports (even if through a different mechanism than
CountDeprecation).

Ian - thoughts on the above?

On Thu, Sep 9, 2021 at 9:21 PM Mike West <mk...@chromium.org> wrote:

> I don't think `countDeprecation` is going to work here, insofar as that's
> a Blink-layer concept, and the network stack isn't going to have an
> understanding of page views or use counters or etc. If we've wired things
> up such that deprecation reports can be triggered from the network stack,
> lovely, but I'm not sure that's the case.
>
> Another approach that might be reasonable to approach might be to roll
> this out on a percentage-basis, starting with a substantial portion of
> beta, then rolling to stable iff we're confident in that experience?
>
> This feels like both the right directional and philosophical thing to do
> with cookies. I'd like to see it ship, and a staged rollout might well be a
> reasonable way of gaining confidence in our ability to do so?
>
> -mike
>
>
> On Thu, Sep 9, 2021 at 1:03 PM Yoav Weiss <yoavwe...@chromium.org> wrote:
>
>> Sounds good! Can you please ping this thread once results start coming
>> in? Thanks! :)
>>
>> On Wednesday, September 8, 2021 at 3:59:36 AM UTC+2 Andrew Williams wrote:
>>
>>> Sounds good - we will add the CountDeprecation metrics. Thanks for the
>>> suggestion, Yoav, and thank you Ian for the additional info.
>>>
>>> -Andrew
>>>
>>> On Fri, Sep 3, 2021 at 10:07 AM Ian Clelland <iclell...@chromium.org>
>>> wrote:
>>>
>>>>
>>>>
>>>> On Fri, Sep 3, 2021 at 4:55 AM Yoav Weiss <yoavwe...@chromium.org>
>>>> wrote:
>>>>
>>>>> Hey Andrew,
>>>>>
>>>>> Given that the metrics are not a superset of what you're trying to
>>>>> deprecate, could you please add CountDeprecation
>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/deprecation.cc;drc=f6f22e82bcd0d50f390b23ee9688c58de5ae0bdc;bpv=1;bpt=1;l=702?q=deprecation&ss=chromium>
>>>>> metrics of the case you are intending to deprecate? That would ensure .e.g
>>>>> deprecation reports are sent to folks that happen to have such cookies.
>>>>> Even though you haven't really asked, from my perspective, it's also
>>>>> fine to add a console deprecation message at this point, in parallel to 
>>>>> the
>>>>> metrics.
>>>>>
>>>>
>>>> FYI, CountDeprecation will take care of adding that console message for
>>>> you, as well as:
>>>>  - Generating a report object which can be seen with a
>>>> ReportingObserver,
>>>>  - Sending that report to any configured endpoints for the document, and
>>>>  - Counting the usage for UMA, so that we can track the (hopefully)
>>>> declining usage of the deprecated feature.
>>>>
>>>> Ian
>>>>
>>>>
>>>>> Cheers :)
>>>>> Yoav
>>>>>
>>>>> On Wednesday, September 1, 2021 at 5:05:44 PM UTC+2 Andrew Williams
>>>>> wrote:
>>>>>
>>>>>> Here is the percentage for the metric mentioned in my last email:
>>>>>> over a 7 day period, 0.00004% of cookies seen in the stable version of
>>>>>> Chrome had truncated names and/or values.
>>>>>>
>>>>>> Ultimately our plan is to ship this feature behind a kill switch that
>>>>>> we could flip if major issues are reported. With that in mind, and given
>>>>>> the low number of truncated cookie names/values observed via our existing
>>>>>> metrics, would it make sense to implement and collect the new metrics in
>>>>>> parallel with rolling out the changes described in this I2P&S? Or do you
>>>>>> think taking the more cautious approach and implementing/collecting the 
>>>>>> new
>>>>>> metrics before landing this change is a better way forward (despite 
>>>>>> taking
>>>>>> more time)?
>>>>>>
>>>>>> -Andrew
>>>>>>
>>>>>> On Fri, Aug 27, 2021 at 1:45 PM Andrew Williams <awil...@chromium.org>
>>>>>> wrote:
>>>>>>
>>>>>>> Thanks for the feedback/questions Yoav and Daniel.
>>>>>>>
>>>>>>> We have some metrics
>>>>>>> <https://source.chromium.org/chromium/chromium/src/+/700dc7fe1578ab5e0e50a6304f2a1960005b8f8b:tools/metrics/histograms/metadata/cookie/histograms.xml;l=56;bpv=1;bpt=0>
>>>>>>> on Chrome's existing behavior to truncate cookie lines containing \x00,
>>>>>>> \x0d, and \x0a (specifically, in cases where the truncation affects the
>>>>>>> cookie name or the cookie value).  The percentage of cookies with 
>>>>>>> truncated
>>>>>>> names or values is quite low, although I'm still waiting on approval to
>>>>>>> release the exact percentage.  We don't have any metrics for cases where
>>>>>>> truncation affected cookie attribute parsing (for example, the malicious
>>>>>>> case this intent aims to address) or where truncation was harmless (for
>>>>>>> example, a newline as the last character in the cookie line), though.
>>>>>>> Especially for the latter case, it does seem plausible that certain 
>>>>>>> sites
>>>>>>> could be constructing cookie lines in such a way that control characters
>>>>>>> slip in unnoticed.  We will add new metrics to cover these cases so 
>>>>>>> that we
>>>>>>> can better predict the level of breakage that these changes may have.
>>>>>>>
>>>>>>> -Andrew
>>>>>>>
>>>>>>> On Thu, Aug 26, 2021 at 2:22 PM Daniel Bratell <bratel...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Even if browsers are currently slightly incompatible, it seems this
>>>>>>>> change will short term make them more incompatible. As Yoav said, it 
>>>>>>>> would
>>>>>>>> be good to have an idea about how common this is, i.e. how often will
>>>>>>>> cookies that are today truncated instead be rejected?
>>>>>>>>
>>>>>>>> /Daniel
>>>>>>>>
>>>>>>>> On 2021-08-25 16:18, Yoav Weiss wrote:
>>>>>>>>
>>>>>>>> Hey Andrew! Thanks for working on this, this seems like a
>>>>>>>> significant compatibility gap (with security implications) that would 
>>>>>>>> be
>>>>>>>> great to close.
>>>>>>>>
>>>>>>>> On Tuesday, August 24, 2021 at 3:45:50 PM UTC+2 Andrew Williams
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Contact emails awil...@chromium.org, miketa...@chromium.org Explainer
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://github.com/httpwg/http-extensions/issues/1531
>>>>>>>>>
>>>>>>>>> https://github.com/httpwg/http-extensions/pull/1589
>>>>>>>>>
>>>>>>>>> Specification
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://github.com/httpwg/http-extensions/blob/main/draft-ietf-httpbis-rfc6265bis.md
>>>>>>>>>
>>>>>>>>> Summary
>>>>>>>>>
>>>>>>>>> Updates how control characters in cookie data are handled.
>>>>>>>>> Specifically, the tab character is now permitted, but all other 
>>>>>>>>> control
>>>>>>>>> characters cause the entire cookie to be rejected (previously the 
>>>>>>>>> \x00,
>>>>>>>>> \x0D, and \x0A characters in a cookie line caused it to be truncated
>>>>>>>>> instead of rejected entirely, which could have enabled malicious 
>>>>>>>>> behavior
>>>>>>>>> in certain circumstances). This behavior is also in line with the 
>>>>>>>>> latest
>>>>>>>>> drafts of RFC6265bis.
>>>>>>>>> Blink component
>>>>>>>>>
>>>>>>>>> Internals>Network>Cookies
>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Internals%3ENetwork%3ECookies>
>>>>>>>>>
>>>>>>>>> Motivation
>>>>>>>>>
>>>>>>>>> In the case where attacker controlled data is used to set a new
>>>>>>>>> cookie, having certain control characters truncate the cookie line 
>>>>>>>>> could
>>>>>>>>> result in security-related cookie attributes being ignored.  This 
>>>>>>>>> behavior
>>>>>>>>> may also lead to cookie data corruption when control characters are
>>>>>>>>> introduced, which may cause unpredictable behavior on the application 
>>>>>>>>> side
>>>>>>>>> (more so than cookies not being set, which is a case that applications
>>>>>>>>> should already handle). Having control characters result in the whole
>>>>>>>>> cookie being rejected helps mitigate these concerns and aligns Chrome 
>>>>>>>>> with
>>>>>>>>> RFC6265bis.  For the tab character, although it falls in the control
>>>>>>>>> character range (\x00 - \x1F, \x7F), it’s a printable character and 
>>>>>>>>> allowed
>>>>>>>>> by other browsers. Treating it the same way that the space character 
>>>>>>>>> is
>>>>>>>>> treated makes sense intuitively, eliminates a potential fingerprinting
>>>>>>>>> vector, and aligns Chrome with RFC6265bis.
>>>>>>>>>
>>>>>>>>
>>>>>>>> In the past, moving to a stricter models that forbade certain
>>>>>>>> characters resulted in at least some breakage of non-malicious 
>>>>>>>> content. I
>>>>>>>> doubt this one would be significantly different.
>>>>>>>> Do you have a sense of the resulting breakage? If not, I think it'd
>>>>>>>> make sense to add metrics to our cookie parsing algorithm and see what 
>>>>>>>> that
>>>>>>>> breakage would look like.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Initial public proposal TAG review
>>>>>>>>>
>>>>>>>>> N/A
>>>>>>>>> <https://groups.google.com/a/chromium.org/g/blink-api-owners-discuss/c/uBxq9uCpKx0/m/A5LI0NbyAAAJ>:
>>>>>>>>> this change is already specified in RFC 6265bis and is a relatively 
>>>>>>>>> minor
>>>>>>>>> change to what's already implemented in Chrome (to improve spec 
>>>>>>>>> compliance).
>>>>>>>>>
>>>>>>>>
>>>>>>>> I agree that this change is in lower layers than those the TAG
>>>>>>>> usually deals with.
>>>>>>>>
>>>>>>>>
>>>>>>>>> TAG review status Not applicable
>>>>>>>>> Risks
>>>>>>>>>
>>>>>>>>> N/A
>>>>>>>>> Interoperability and Compatibility
>>>>>>>>>
>>>>>>>>> WebKit / Safari:
>>>>>>>>>
>>>>>>>>>  - All control characters except the tab character cause the
>>>>>>>>> cookie to be rejected if present in the name and cause the rest of the
>>>>>>>>> cookie line to be truncated if present in the value
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Gecko / Firefox:
>>>>>>>>>
>>>>>>>>>  - 0x00 in the cookie value causes the rest of the value to be
>>>>>>>>> truncated (but subsequent attributes are preserved)
>>>>>>>>>
>>>>>>>>>  - 0x00 in the cookie name causes the rest of the name and the
>>>>>>>>> value to be truncated (but subsequent attributes are preserved)
>>>>>>>>>
>>>>>>>>>  - 0x0d and 0x0a cause the entire cookie line to be truncated
>>>>>>>>> (attributes ignored)
>>>>>>>>>
>>>>>>>>>  - 0x01 through 0x09 (the tab character), 0x0b through 0x0c, and
>>>>>>>>> 0x0e through 0x1f cause the cookie to be rejected if they are present 
>>>>>>>>> in
>>>>>>>>> the name, but are allowed in the cookie value
>>>>>>>>>
>>>>>>>>>  - 0x7f is allowed in the cookie name and cookie value
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> The following issues exist reporting these differences:
>>>>>>>>>
>>>>>>>>>    -
>>>>>>>>>
>>>>>>>>>    Firefox -
>>>>>>>>>    https://bugzilla.mozilla.org/show_bug.cgi?id=1702031#c1
>>>>>>>>>    -
>>>>>>>>>
>>>>>>>>>    WebKit - https://bugs.webkit.org/show_bug.cgi?id=229088
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Allowing tab characters in cookie names aligns Chrome with Safari
>>>>>>>>> but not Firefox, and allowing tabs in the cookie value aligns Chrome 
>>>>>>>>> with
>>>>>>>>> both.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Regarding control characters (not including tab), what will change
>>>>>>>>> in Chrome is the handling of 0x00, 0x0d, and 0x0a characters.  Today,
>>>>>>>>> Chrome truncates cookie lines when these characters are encountered, 
>>>>>>>>> and
>>>>>>>>> this intent proposes having these characters result in cookie 
>>>>>>>>> rejection
>>>>>>>>> instead.  Rejecting cookie names containing these characters aligns 
>>>>>>>>> Chrome
>>>>>>>>> with Safari but not Firefox, but rejecting cookie values containing 
>>>>>>>>> these
>>>>>>>>> characters is inconsistent with existing Safari or Firefox behavior.
>>>>>>>>> However, these changes unify Chrome’s control character handling 
>>>>>>>>> behavior,
>>>>>>>>> better align Chrome with RFC6265bis, and also help prevent a class of
>>>>>>>>> cookie attribute removal attacks (when malicious input is used to 
>>>>>>>>> build a
>>>>>>>>> cookie line under certain conditions).
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Gecko: N/A - these changes seem too small to justify this effort 
>>>>>>>>> WebKit:
>>>>>>>>> N/A - these changes seem too small to justify this effort
>>>>>>>>>
>>>>>>>>
>>>>>>>> I somewhat agree that asking for a position here would be an
>>>>>>>> overkill, but would love to get a signal from both Mozilla and Safari 
>>>>>>>> on
>>>>>>>> their intents to align with the RFC. (the former seems more likely 
>>>>>>>> than the
>>>>>>>> latter, as this seems like a CFNetwork issue)
>>>>>>>> At the same time, the issues seem sufficient for that purpose,
>>>>>>>> assuming folks there respond.
>>>>>>>>
>>>>>>>> Web developers: N/A - these changes are relatively small and are in
>>>>>>>>> alignment with the RFC, other browsers, and/or existing behavior
>>>>>>>>>
>>>>>>>>
>>>>>>>> Yeah, developers are unlikely to be happy about this from a
>>>>>>>> breakage perspective, even if it'd reduce compat issues. The main 
>>>>>>>> thing we
>>>>>>>> can do about that is ensure breakage is minimal before shipping.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Debuggability
>>>>>>>>>
>>>>>>>>> DevTools debugging support will be implemented along with this
>>>>>>>>> change. Rejected response cookies are already shown in DevTools in the
>>>>>>>>> Network panel, with a status explaining why they were rejected. 
>>>>>>>>> Another
>>>>>>>>> status will be added to annotate cookies rejected due to control 
>>>>>>>>> characters.
>>>>>>>>>
>>>>>>>>> Is this feature fully tested by web-platform-tests
>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
>>>>>>>>> ?
>>>>>>>>>
>>>>>>>>> In Progress -
>>>>>>>>> https://chromium-review.googlesource.com/c/chromium/src/+/3084521
>>>>>>>>> Flag name
>>>>>>>>>
>>>>>>>>> UpdatedCookieControlCharacterChecks
>>>>>>>>> Requires code in //chrome?
>>>>>>>>>
>>>>>>>>> False
>>>>>>>>> Tracking bug
>>>>>>>>>
>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1233602
>>>>>>>>>
>>>>>>>>> Estimated milestones
>>>>>>>>>
>>>>>>>>> M96
>>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>>
>>>>>>>>> https://www.chromestatus.com/feature/5709264560586752
>>>>>>>>>
>>>>>>>>> Requesting approval to ship?
>>>>>>>>>
>>>>>>>>> Yes
>>>>>>>>>
>>>>>>>>> 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/e2de8b96-8878-47fe-99e2-5497b96c9adcn%40chromium.org
>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e2de8b96-8878-47fe-99e2-5497b96c9adcn%40chromium.org?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/44805dc7-edd8-218d-dcbe-9c589509b633%40gmail.com
>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/44805dc7-edd8-218d-dcbe-9c589509b633%40gmail.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/fcb32661-cecb-4f5a-a29d-9f3cdfbc5395n%40chromium.org
>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fcb32661-cecb-4f5a-a29d-9f3cdfbc5395n%40chromium.org?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/984b9bba-57f7-4145-9e1e-ee50601aae68n%40chromium.org
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/984b9bba-57f7-4145-9e1e-ee50601aae68n%40chromium.org?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/CAL5BFfXEPR2PWchN93%3DhewcX4eiia%3D7Kouic6B295u55OYRndQ%40mail.gmail.com.

Reply via email to