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/CAEa0%2BkVXcVihrkHbp5s9SH2y1BsYVgyMBqPTcZ1fy7vAz8DUfw%40mail.gmail.com.

Reply via email to