Re: [Doh] WG Review: DNS Over HTTPS (doh)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/15/17 14:25, Ted Hardie wrote:
On Fri, Sep 15, 2017 at 12:00 PM, Adam Roach <adam@xxxxxxxxxxx> wrote:
On 9/15/17 1:24 PM, Paul Hoffman wrote:
Yes, please. The charter should say "HTTP/2 over TLS". There is no reason for current browsers adding this feature to add it using an obsolete protocol.


I think you're assuming a tighter coupling between layers than actually exists.

In particular -- since you're talking about browsers -- it would easy to implement the current draft entirely in content _javascript_. In doing so, it would be impossible for the implementation to prevent its use over HTTP/1.1 (or QUIC): aside from some proprietary browser-specific APIs,

So, "the implementation" in your statement above--is that the _javascript_ or the browser?

In the scenario I'm describing, it's the _javascript_.

 
there's no way for such an implementation to even tell what version of HTTP is in use, much less prevent certain queries from going out over unwanted ones.


So, I think you have a usage in mind that is not the usage model that the draft talks about and is not really clear in the charter--the use of this within a _javascript_ application to collect DNS responses without going through the browser/OS cache and DNS method.  If that is a proposed use case, then I think there is a serious question of how the same origin policy applies here.

Given that (in this scenario), the browser wouldn't know this query from any _other_ HTTPS request, it applies the same way as it does to all other HTTPS requests.

Assume for a second that the resource in question mimics the current DNS URI structure (RFC 4501), but substitutes HTTPS as a scheme.   If Facebook _javascript_ has a call for https://dns.fb.com/www.google.com?type=AAAA, will that be within same origin policy or not?

You didn't say what the origin of the calling page was. If it's the same origin, then it's the same origin (modulo CORS behavior).

If it is within same origin, where does the resulting data go?  Just to the _javascript_ or into browser or system caches?

The scenario I'm posting above assumes no special browser behavior.

In addition to same origin questions, there are some privacy issues around this being used to signal external parties.  Imagine a query like this:

I don't know of any cross-site cookie watcher that would catch that, but it might be needed.

This is a fine point. I do wonder how the resolvers at 8.8.8.8 and 8.8.4.4 handle it. I suppose the API deployed at https://developers.google.com/speed/public-dns/docs/dns-over-https is probably closer to the use case we're contemplating, though.

To be clear, I'm not saying that these situations you describe aren't _bad_; I'm pointing out that they already exist with or without the mechanism under discussion. I would think the standard here is "don't make it worse," rather than "first, drain the swamp."

I'll also point out that this use case (the _javascript_-based one) is nice in that it allows applications to communicate with a known trusted site (e.g., their own origin) to prevent this kind of unintentional exfiltration of information. Of course, this is already possible today using proprietary mechanisms, but it would be nice if such apps could use standard libraries.

I agree that the working group has to tackle it if it is in scope.  The question we're discussing now is whether that use case is in scope.  If any potential solution must deal with that eventuality because they all *could* be done in _javascript_, like it or not, then the question is moot, but that's not personally clear to me yet.

I chose that example because it's easy to reason about without knowing the internal implementation architecture of browsers. If we instead turn to the *other* use case that you describe in which the browser (absent any special _javascript_ handling) chooses to use DNS-over-HTTPS, then a congruent problem arises. While it's not an area I've worked in closely, what I've seen of Firefox's network layer implementation leads me to believe that precluding a mechanism like this from working across all supported variations of HTTP would require additional code; and that the role of that code, in its entirety, would be to prevent from working that which otherwise would. Unless there are, say, security implications to doing so, I'd think we need better rationale for preventing it than "we don't want to think about it."

/a

[Index of Archives]     [IETF Annoucements]     [IETF]     [IP Storage]     [Yosemite News]     [Linux SCTP]     [Linux Newbies]     [Fedora Users]