Internet DRAFT - draft-ietf-httpbis-cookie-alone
draft-ietf-httpbis-cookie-alone
HTTP Working Group M. West
Internet-Draft Google, Inc
Updates: 6265 (if approved) September 5, 2016
Intended status: Standards Track
Expires: March 9, 2017
Deprecate modification of 'secure' cookies from non-secure origins
draft-ietf-httpbis-cookie-alone-01
Abstract
This document updates RFC6265 by removing the ability for a non-
secure origin to set cookies with a 'secure' flag, and to overwrite
cookies whose 'secure' flag is set. This deprecation improves the
isolation between HTTP and HTTPS origins, and reduces the risk of
malicious interference.
Note to Readers
Discussion of this draft takes place on the HTTP working group
mailing list (ietf-http-wg@w3.org), which is archived at
https://lists.w3.org/Archives/Public/ietf-http-wg/ .
Working Group information can be found at http://httpwg.github.io/ ;
source code and issues list for this draft can be found at
https://github.com/httpwg/http-extensions/labels/cookie-alone .
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 9, 2017.
West Expires March 9, 2017 [Page 1]
Internet-Draft Leave Secure Cookies Alone September 2016
Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Terminology and notation . . . . . . . . . . . . . . . . . . 3
3. Recommendations . . . . . . . . . . . . . . . . . . . . . . . 3
4. Security Considerations . . . . . . . . . . . . . . . . . . . 4
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 4
5.1. Normative References . . . . . . . . . . . . . . . . . . 4
5.2. Informative References . . . . . . . . . . . . . . . . . 5
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 5
Appendix B. Changes . . . . . . . . . . . . . . . . . . . . . . 5
B.1. Since -00 . . . . . . . . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
Section 8.5 and Section 8.6 of [RFC6265] spell out some of the
drawbacks of cookies' implementation: due to historical accident,
non-secure origins can set cookies which will be delivered to secure
origins in a manner indistinguishable from cookies set by that origin
itself. This enables a number of attacks, which have been recently
spelled out in some detail in [COOKIE-INTEGRITY].
We can mitigate the risk of these attacks by making it more difficult
for non-secure origins to influence the state of secure origins.
Accordingly, this document recommends the deprecation and removal of
non-secure origins' ability to write cookies with a 'secure' flag,
and their ability to overwrite cookies whose 'secure' flag is set.
West Expires March 9, 2017 [Page 2]
Internet-Draft Leave Secure Cookies Alone September 2016
2. Terminology and notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
The "scheme" component of a URI is defined in Section 3 of [RFC3986].
3. Recommendations
This document updates Section 5.3 of [RFC6265] as follows:
1. After step 8 of the current algorithm, which sets the cookie's
"secure-only-flag", execute the following step:
1. If the "scheme" component of the "request-uri" does not
denote a "secure" protocol (as defined by the user agent),
and the cookie's "secure-only-flag" is "true", then abort
these steps and ignore the newly created cookie entirely.
2. Before step 11, execute the following step:
1. If the newly created cookie's "secure-only-flag" is not set,
and the "scheme" component of the "request-uri" does not
denote a "secure" protocol, then abort these steps and ignore
the newly created cookie entirely if the cookie store
contains one or more cookies that meet all of the following
criteria:
1. Their "name" matches the "name" of the newly created
cookie.
2. Their "secure-only-flag" is set.
3. Their "domain" domain-matches the "domain" of the newly
created cookie, or vice-versa.
4. The "path" of the newly created cookie path-matches the
"path" of the existing cookie.
Note: The "path" comparison is not symmetric, ensuring only
that a newly-created non-secure cookie does not overlay an
existing secure cookie, providing some mitigation against
cookie fixing attacks. That is, given an existing secure
cookie named "a" with a "path" of "/login", a non-secure
cookie named "a" could be set for a "path" of "/" or "/foo",
but not for a "path" of "/login" or "/login/en".
Note: This allows "secure" pages to override "secure" cookies
with non-secure variants. Perhaps we should restrict that as
well?
West Expires March 9, 2017 [Page 3]
Internet-Draft Leave Secure Cookies Alone September 2016
3. In order to ensure that a non-secure site can never cause a
"secure" cookie to be evicted, adjust the "remove excess cookies"
priority order at the bottom of Section 5.3 to be the following:
1. Expired cookies.
2. Cookies whose "secure-only-flag" is not set and which share a
"domain" field with more than a predetermined number of other
cookies.
3. Cookies that share a "domain" field with more than a
predetermined number of other cookies.
4. All cookies.
Note that the eviction algorithm specified here is triggered only
after insertion of a cookie which causes the user agent to exceed
some predetermined upper bound. Conforming user agents MUST
ensure that inserting a non-secure cookie does not cause a secure
cookie to be removed.
4. Security Considerations
This specification increases a site's confidence that secure cookies
it sets will remain unmodified by insecure pages on hosts which it
domain-matches. Ideally, sites would use HSTS as described in
[RFC6797] to defend more robustly against the dangers of non-secure
transport in general, but until adoption of that protection becomes
ubiquitous, this deprecation this document recommends will mitigate a
number of risks.
The mitigations in this document do not, however, give complete
confidence that a given cookie was set securely. If an attacker is
able to impersonate a response from "http://example.com/" before a
user visits "https://example.com/", the user agent will accept any
cookie that the insecure origin sets, as the "secure" cookie won't
yet be present in the user agent's cookie store. An active network
attacker may still be able to use this ability to mount an attack
against "example.com", even if that site uses HTTPS exclusively.
The proposal in [COOKIE-PREFIXES] could mitigate this risk, as could
"preloading" HSTS for "example.com" into the user agent
[HSTS-PRELOADING].
5. References
5.1. Normative References
West Expires March 9, 2017 [Page 4]
Internet-Draft Leave Secure Cookies Alone September 2016
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<http://www.rfc-editor.org/info/rfc3986>.
[RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265,
DOI 10.17487/RFC6265, April 2011,
<http://www.rfc-editor.org/info/rfc6265>.
5.2. Informative References
[COOKIE-INTEGRITY]
Zheng, X., Jiang, J., Liang, J., Duan, H., Chen, S., Wan,
T., and N. Weaver, "Cookies Lack Integrity: Real-World
Implications", August 2015,
<https://www.usenix.org/conference/usenixsecurity15/
technical-sessions/presentation/zheng>.
[COOKIE-PREFIXES]
West, M., "Cookie Prefixes", 2016,
<https://tools.ietf.org/html/draft-ietf-httpbis-cookie-
prefixes>.
[HSTS-PRELOADING]
"HSTS Preload Submission", n.d.,
<https://hstspreload.appspot.com/>.
[RFC6797] Hodges, J., Jackson, C., and A. Barth, "HTTP Strict
Transport Security (HSTS)", RFC 6797,
DOI 10.17487/RFC6797, November 2012,
<http://www.rfc-editor.org/info/rfc6797>.
Appendix A. Acknowledgements
Richard Barnes encouraged a formalization of the deprecation
proposal. [COOKIE-INTEGRITY] was a useful exploration of the issues
[RFC6265] described.
Appendix B. Changes
West Expires March 9, 2017 [Page 5]
Internet-Draft Leave Secure Cookies Alone September 2016
B.1. Since -00
o Issue 223 addressed by adding a path-match constraint to the
storage algorithm for non-secure cookies. This ensures that non-
secure cookies cannot overlay secure cookies for a given path, but
allows secure and non-secure cookies with the same name to exist
on distinct paths.
Author's Address
Mike West
Google, Inc
Email: mkwst@google.com
URI: https://mikewest.org/
West Expires March 9, 2017 [Page 6]