Thanks for the feedback Mike, Yoav, and Ian. I will explore the feasibility of using CountDeprecation (or something similar) from the cookie-related code and will report back once I have an update on this.
-Andrew On Fri, Sep 10, 2021 at 10:11 AM Ian Clelland <iclell...@chromium.org> wrote: > That looks right -- that code path won't get you anywhere near adding a > console message, as far as I can tell, but you would be able to queue a > report that way. Ideally, we'd have something like deprecation.cc for > browser-side that would handle the UMA as well as formatting the report > body consistently. As a first pass, until we have more that one > browser-generated deprecation report, just generating and queuing it would > work. > > On Fri, Sep 10, 2021 at 6:42 AM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> 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/CAEa0%2BkU0ibxik4Zy3JYUNKkAFAMicC7KY6U4TvFufZdPft7QsQ%40mail.gmail.com.