On Jun 28, 2008, at 2:33 PM, Jonas Sicking wrote:

Maciej Stachowiak wrote:
On Jun 27, 2008, at 2:18 PM, Jonas Sicking wrote:
What is the threat model this defends against? Since any server using Access-Control that does not check HOST is vulnerable to a conventional XHR DNS rebinding attack. If browsers provide defense against DNS rebinding through some form of DNS pinning they can apply it to Access-Control too, but I don't understand the benefit of pinning only for Access-Control.

To some extent I agree.

It does provide protection for Access-Control implementations outside of
the web-platform. And for vendors that have expressed concern about
deploying the spec without DNS protection (such as microsoft) this could
be an alternative.

Vendors that wanted to do an IP-based restriction already can (unless the spec language somehow makes using the cached OPTIONS result mandatory, which it should not).

I'm not sure what you mean by "Access-Control implementations outside of the web-platform". Can you describe a specific scenario where this mechanism would actually be an effective defense?


Also, there may be future client-side defenses based on something other than DNS pinning, in which case this pinning requirement could be problematic.

This is technically not DNS pinning. But one possibility would be to add
language to say that if a client deploys some other type of defense
against DNS rebinding attacks, then this section of the spec is optional.

I think it should be optional in any case. Since, as you admit, it is an ineffective defense in the browser context (I assume this is what you mean by "outside of the web-platform"), I don't want to waste engineering time and security review time implementing it. I would rather save that for effective defenses. I think it would be wrong for the spec to mandate a security policy that does not provide any actual protection.

In general I am concerned that we are adding a lot of complexity to the spec to supposedly improve security but the measures in question seem ineffective. This will significantly increase cost of deployment and the risk of implementation error, and that may end up harming security instead of helping.

I think any security measure added to the spec must be justified with a real threat model and an explanation of how it would defend against the threat.


Since this is a lot of client implementation complexity and may generate extra traffic in the face of DNS-based load balancers, I'd like to understand the benefit we get for this cost.
This requires no changes on the server side. It does call for a somewhat
more complex solution on the client side.

Also note that a server can (and should for reasons other than Access-Control) protect itself from DNS rebinding attacks by checking the 'Host' header.
Given this very simple total server-side defense, I am leery of adding a complex (and ultimately ineffective) client-side mitigation.

This unfortunately only works for servers that are accessed through a
DNS name, this is commonly not the case for for example personal routers
with builtin firewalls.

How are such servers accessed instead? By IP address? (If so, wouldn't the IP address be in the Host header?)

Regards,
Maciej


Reply via email to