[cap-talk] Security considerations for cookies
Adam Barth
cap-talk at adambarth.com
Fri Feb 12 21:28:56 PST 2010
Thanks. I cheated and got input from Mark Miller before emailing this list. :)
Adam
On Fri, Feb 12, 2010 at 2:01 AM, Toby Murray
<toby.murray at comlab.ox.ac.uk> wrote:
> Dear Adam,
>
> Your section on ambient authority is an excellent summary, as no doubt
> you intended it to be, of much of the philosophy shared by many on
> this list. Thanks for taking the time to distil it out so clearly.
>
> Others on this list with more web savvy can probably give more useful
> feedback on specifics so I'll leave it to them.
>
> Cheers
>
> Toby
>
> On 11 February 2010 23:39, Adam Barth <cap-talk at adambarth.com> wrote:
>> People of cap-talk,
>>
>> As some of you know, I'm working on a specification for how cookie
>> work in practice. As part of writing the spec, I'd like to add a
>> section on the security perils of using cookies. I was hoping that
>> this group could give me some feedback on what I have so far.
>>
>> Thanks,
>> Adam
>>
>>
>> 7. Security Considerations
>>
>> 7.1. General Recommendations
>>
>> The cookie protocol is NOT RECOMMENDED for new applications.
>>
>> For applications that do use the cookie protocol, servers SHOULD NOT
>> rely upon cookies for security.
>>
>> For servers that do use cookies for security, servers SHOULD use a
>> redundant form of authentication, such as HTTP authentication or TLS
>> client certificates.
>>
>> 7.2. Ambient Authority
>>
>> If a server uses cookies to authenticate users, a server might suffer
>> security vulnerabilities because user agents occasionally issue HTTP
>> requests on behalf of remote parties (e.g., because of HTTP redirects
>> or HTML forms). When issuing those requests, user agent attaches
>> cookies even if the entity does not know the contents of the cookies,
>> possibly letting the remote entity exercise authority at an unwary
>> server. User agents can mitigate this issue to some degree by
>> providing APIs for suppressing the Cookie header on outgoing
>> requests.
>>
>> Although this security concern goes by a number of names (e.g.,
>> cross-site scripting and cross-site request forgery), the issue stems
>> from cookies being a form of ambient authority. Cookies encourage
>> server operators to separate designation (in the form of URLs) from
>> authorization (in the form of cookies). Disentangling designation
>> and authorization can cause the server and its clients to become
>> confused deputies and undertake undesirable actions.
>>
>> Instead of using cookies for authorization, server operators might
>> wish to consider entangling designation and authorization by treating
>> URLs as object-capabilities. Instead of storing secrets in cookies,
>> this approach stores secrets in URLs, requiring the remote entity to
>> supply the secret itself. ALthough this approach is not a panacea,
>> judicious use of these principles can lead to more robust security.
>>
>> 7.3. Clear Text
>>
>> The information in the Set-Cookie and Cookie headers is transmitted
>> in the clear.
>>
>> 1. All sensitive information conveyed in these headers is exposed to
>> an eavesdropper.
>>
>> 2. A malicious intermediary could alter the headers as they travel
>> in either direction, with unpredictable results.
>>
>> 3. A malicious client could alter the Cookie header before
>> transmission, with unpredictable results.
>>
>> Servers SHOULD encrypt and sign their cookies. However, encrypting
>> and signing cookies does not prevent an attacker from transplanting a
>> cookie from one user agent to another.
>>
>> In addition to encrypting and signing the contents of every cookie,
>> servers that require a higher level of security SHOULD use the cookie
>> protocol only over a secure channel.
>>
>> 7.4. Weak Confidentiality
>>
>> Cookies do not provide isolation by port. If a cookie is readable by
>> a service running on one port, the cookie is also readable by a
>> service running on another port of the same server. If a cookie is
>> writable by a service on one port, the cookie is also writable by a
>> service running on another port of the same server. For this reason,
>> servers SHOULD NOT both run mutually distrusting services on
>> different ports of the same machine and use cookies to store
>> security-sensitive information.
>>
>> Cookies do not provide isolation by scheme. Although most commonly
>> used with the http and https schemes, the cookies for a given host
>> are also available to other schemes, such as ftp and gopher. This
>> lack of isolation is most easily seen when a user agent retrieves a
>> URI with a gopher scheme via HTTP, but the lack of isolation by
>> scheme is also apparent via non-HTTP APIs that permit access to
>> cookies, such as HTML's document.cookie API.
>>
>> 7.5. Weak Integrity
>>
>> Cookies do not provide integrity guarantees for sibling domains (and
>> their subdomains). For example, consider foo.example.com and
>> bar.example.com. The foo.example.com server can set a cookie with a
>> Domain attribute of ".example.com", and the user agent will include
>> that cookie in HTTP requests to bar.example.com. In the worst case,
>> bar.example.com will be unable to distinguish this cookie from a
>> cookie it set itself. The foo.example.com server might be able to
>> leverage this ability to mount an attack against bar.example.com.
>>
>> Similarly, an active network attacker can inject cookies into the
>> Cookie header sent to https://example.com/ by impersonating a
>> response from http://example.com/ and injecting a Set-Cookie header.
>> The HTTPS server at example.com will be unable to distinguish these
>> cookies from cookies that it set itself in an HTTPS response. An
>> active network attacker might be able to leverage this ability to
>> mount an attack against example.com even if example.com uses HTTPS
>> exclusively.
>>
>> Servers can partially mitigate these attacks by encrypting and
>> signing their cookies. However, using cryptography does not mitigate
>> the issue completely because an attacker can replay a cookie he or
>> she received from the authentic example.com server in the user's
>> session, with unpredictable results.
>>
>> 7.6. Reliance on DNS
>>
>> The cookie protocol relies upon the Domain Name System (DNS) for
>> security. If the DNS is partially or fully compromised, the cookie
>> protocol might fail to provide the security properties required by
>> applications.
>> _______________________________________________
>> cap-talk mailing list
>> cap-talk at mail.eros-os.org
>> http://www.eros-os.org/mailman/listinfo/cap-talk
>>
> _______________________________________________
> cap-talk mailing list
> cap-talk at mail.eros-os.org
> http://www.eros-os.org/mailman/listinfo/cap-talk
>
More information about the cap-talk
mailing list