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

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

 



In-line.

On Fri, Sep 15, 2017 at 1:19 PM, Adam Roach <adam@xxxxxxxxxxx> wrote:
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.


You're making an assumption that I don't think is established, that the requests using HTTPS for DNS are not distinguishable from other resources.  If they were keyed by something like dnsh://authority/query-target?RR (to pick on poor old RFC 4501 again), they would be in _javascript_ *even if they were not on the wire*.
 
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.

Sorry, when I said "Facebook _javascript_" I meant to imply that facebook was the origin and that fb.com would same origin.
 
If it's the same origin, then it's the same origin (modulo CORS behavior).


I'm frankly a bit worried that the GET version of Paul's draft would not trigger the CORS pre-flight checks.  If it is consumed by _javascript_ and never otherwise cached, that's not so big a deal, but if it is populating a browser or system cache, it's a problem.

 
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.


I'm not sure "no special browser behavior" answers my question.  Is the default the browser behavior when it gets a DNS response or the browser behavior for content _javascript_ requests in-line? 
 
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.


(I wasn't involved developing that, so the view from the outside); that looks very much like it would take the JSON records returned and populate the standard cache(s) with them.

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.


The trust relationship you mention is important (the _javascript_ trusting its source), but we also have to consider the user's trust in the _javascript_.  A malicious piece of _javascript_ is not so hard to introduce into the world, and if it can influence the DNS mapping, it may be well worth the time of phishers and others to do so.

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."

I assume that you have code that would let you say "not unless protected by TLS", though, so that portion of the charter presumption matches reality?

Thanks for your insight into this,

Ted
 

/a


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