yeah, my email client wasn't quoting properly due to something about the original message I was replying to... so I had to cut n paste. sorry bout that!


------ Original Message ------
From: "Mark Andrews" <ma...@isc.org>
To: "Adrien de Croy" <adr...@qbik.com>
Cc: "Shane Kerr" <sh...@time-travellers.org>; "dnsop@ietf.org" <dnsop@ietf.org>
Sent: 5/05/2016 4:11:25 p.m.
Subject: Re: [DNSOP] Fwd: New Version Notification for draft-song-dns-wireformat-http-03.txt


Adrien, subtle font changes do not make for good communications.

Try reading the text/plain and see you can work out what points you
are trying to make.

Mark

In message <emaff75e18-2469-4abc-b7be-7456e3986423@bodybag>, "Adrien de Croy" writes:

 --===============5443949507881977805==
 Content-Type: multipart/alternative;
  boundary="------=_MB6D95EBBB-CA31-4278-834E-7A1D33BBAD44"


 --------=_MB6D95EBBB-CA31-4278-834E-7A1D33BBAD44
 Content-Type: text/plain; format=flowed; charset=utf-8
 Content-Transfer-Encoding: quoted-printable



 Can you explain this further?

TLS is designed to provide data integrity and privacy, even in the face
 of man-in-the-middle attacks.

I don't know if dnsop is the place to rehash old arguments about TLS=20
 everywhere.

 There are a few places in the archives of the http WG where it was=20
discussed heatedly (for IETF) at length, especially around the de facto=20 implementation of mandatory TLS everywhere in the context of http/2.0.

TLS was designed to provide data integrity and security, but not in the=20
 face of MitM attacks.  The only way to prevent these is with cert=20
pinning (so the client can recognise a spoofed cert) or client certs=20 which the intermediary can't spoof in a way that the server will trust.

 Google's push for https everywhere has in our experience provided=20
significant incentive for MitM deployment. We only added MitM features=20 to WinGate because google and facebook went https-only. Prior to that=20
 it was hard to morally justify deploying a MitM to spy on people's=20
 banking traffic.

 The other significant driver we see of MitM deployment was the=20
deplorable decision by browser vendors that they would no longer trust=20 non-200 responses to tunneling (CONNECT) requests. This meant the only=20 way to not have an awful (support incident generating) user experience=20 when blocking connections to https sites at a proxy, was to MitM it,=20 receive the request and send back a block response masquerading as the=20
 server.

The irony of this is completely wasted on the people who made these=20
 decisions.  The perceived threat was some page coming back from a=20
CONNECT request which could get a broken browser to follow a redirect,=20
 or display the body as if it came from the https server (thereby=20
 allowing through broken browser design a masquerade opportunity). =20
Instead of actually fixing the browsers, they all (FF, Chrome and IE and=
 =20
 probably others) chose instead to ignore the response, and show a=20
generic connectivity failure "friendly" page, which sends IT support=20 people into a frenzy looking for broken network equipment. The MitM=20 response to this requires the proxy to masquerade as the origin server,=20 which was exactly the issue the browser authors were trying to avoid by=20
 deciding to ignore non-200 responses in the first place, meanwhile=20
 causing proxy vendors and users significant pain.

 As for the issue with captive portals.  Since the client needs to=20
resolve names using DNS prior to making a connection, and since the=20 captive portal will intercept port 80 and redirect it to a challenge=20
 page etc until the portal has been satisfied, you have a bit of a=20
chicken and egg problem. A browser won't try to connect if it gets a=20 DNS lookup failure. DNS lookups will fail until the browser attempts a=20 connection and authenticates with the captive portal. This is where the=
 =20
 layering violation of DNS over HTTP is problematic.

It should be possible to detect that this is happening though, since the=
 =20
response won't contain an encapsulated DNS response in its message body.=
 =20
   One option then could be to return some fake A record to the DNS=20
 client, so that an attempt to connect will be made.

 I rather think this will increase the attack surface area rather than
decreasing it, because now you have an additional place processing DNS
 packets.

My main concern was that the HTTP <-> DNS gateway was likely behind the=20 firewall that was otherwise protecting the DNS server from malicious DNS=
 =20
packets. By putting in the gateway, you may be providing a back door=20 for attacks on the DNS server. Sure, DNS servers should be hardened,=20
 but they may not realise they can't trust requests from the gateway.


 Adrien




 ------ Original Message ------
 From: "Shane Kerr" <sh...@time-travellers.org>
 To: "Adrien de Croy" <adr...@qbik.com>
 Cc: "dnsop@ietf.org" <dnsop@ietf.org>
 Sent: 5/05/2016 2:18:24 a.m.
 Subject: Re: [DNSOP] Fwd: New Version Notification for=20
 draft-song-dns-wireformat-http-03.txt

 >Adrien,
 >
 >Thanks for your comments.
 >
 >At 2016-05-03 05:14:31 +0000
 >"Adrien de Croy" <adr...@qbik.com> wrote:
 >
 >>  Some general comments:
 >>
 >>  I don't think you can claim that https provides data integrity or
 >>  privacy any more, since MitM proxies are abundant.
 >
 >Can you explain this further?
 >
>TLS is designed to provide data integrity and privacy, even in the face
 >of man-in-the-middle attacks.
 >
>> I think some thought should be given to how a DNS stub might deal=20
 >>with a
 >>  captive portal or http proxy authentication.
 >
 >I guess this makes sense. I don't know that we can offer much help
 >though. Perhaps something like this:
 >
> A captive portal or any other middlebox that interferes with HTTP > may break this protocol, and DNS over HTTP will have to be disabled
 >     until HTTP is restored.
 >
 >>  I think also that any HTTP server that receives such a request=20
 >>probably
>> ought to be validating the encapsulated binary data before forwarding=
 =20
 >>it
 >>  to any DNS server.
 >
>I rather think this will increase the attack surface area rather than >decreasing it, because now you have an additional place processing DNS
 >packets.
 >
>> I wonder why you'd want to keep truncation, as the request should be >> able to benefit from the fact that fundamentally it's made over TCP=20
 >>to
 >>  the HTTP agent.
 >
>If the client side is acting as a DNS proxy then we need to look like
 >DNS. The stub resolvers will send UDP packets and expect normal
>truncation behavior. While it may be possible for the client DNS proxy
 >to perform truncation and send responses back to the stub resolvers,
 >this is a significantly more complicated design.
 >
 >>  I would also suggest looking into how such requests might be best
>> blocked by an http proxy, because this will be a requirement of proxy >> operators, and it would be good to consider user experience for when >> this happens, so that a consistent approach can be taken (rather than
 >>  every different proxy blocking it some other way so that the user
 >>  experience becomes awful).
 >
>In the case of unencrypted HTTP (not recommended), then the proxy can
 >look for the well-known URI, right?
 >
>In the case of TLS, then the proxy cannot block the traffic, can it? It >doesn't know the URI that the site is visiting, nor the contents of the
 >query or answer....
 >
 >Cheers,
 >
 >--
 >Shane
 --------=_MB6D95EBBB-CA31-4278-834E-7A1D33BBAD44
 Content-Type: text/html; charset=utf-8
 Content-Transfer-Encoding: quoted-printable

<html><head><style id=3D"eMClientCss">blockquote.cite { margin-left: 5px;= margin-right: 0px; padding-left: 10px; padding-right:0px; border-left: = 1px solid #cccccc }=0Ablockquote.cite2 {margin-left: 5px; margin-right: = 0px; padding-left: 10px; padding-right:0px; border-left: 1px solid #cccccc;= margin-top: 3px; padding-top: 0px; }=0A.plain pre, .plain tt { font-family= : monospace; font-size: 100%; font-weight: normal; font-style: normal;}=0A= a img { border: 0px; }body {font-family: Tahoma;font-size: 12pt;}=0A.plain= pre, .plain tt {font-family: Tahoma;font-size: 12pt;}=0A</style><style></s= tyle>=0A<meta http-equiv=3D"Content-Type" content=3D"text/html;charset=3D= utf-8">=0A</head>=0A<body scroll=3D"auto" class=3D""><div>&nbsp;</div><div>= &nbsp;</div><div><span id=3D"xc0cf9ede73494b998358d57572c98064"><tt><div>Ca= n you explain this further?</div><div>&nbsp;</div><div>TLS is designed to= provide data integrity and privacy, even in the face</div><div>of man-in-t= he-middle attacks.</div></tt></span></div><div>&nbsp;</div><div>I don't = know if dnsop is the place to rehash old arguments about TLS everywhere.</d= iv><div>&nbsp;</div><div>There are a few places in the archives of the http= WG&nbsp;where it was discussed heatedly (for IETF) at length, especially= around the de facto implementation of mandatory TLS everywhere in the cont= ext of http/2.0.</div><div>&nbsp;</div><div>TLS was designed to provide = data integrity and security, but not in the face of MitM attacks.&nbsp; = The only way to prevent these is with cert pinning (so the client can recog= nise a spoofed cert)&nbsp;or client certs which the intermediary can't spoo= f in a way that the server will trust.</div><div>&nbsp;</div><div>Google's= push for https everywhere has in our experience provided significant incen= tive for MitM deployment.&nbsp; We only added MitM features to WinGate beca= use google and facebook went https-only.&nbsp; Prior to that it was hard= to morally justify deploying a MitM to spy on people's banking traffic.&nb= sp; </div><div>&nbsp;</div><div>The other significant driver we see of MitM= deployment was the deplorable decision by browser vendors that they would= no longer trust non-200 responses to tunneling (CONNECT) requests.&nbsp;= This meant the only way to not have an awful (support incident generating)= user experience when blocking connections to https sites at a&nbsp;proxy,= was to MitM it, receive the request and send back a block response masquer= ading as the server.&nbsp; </div><div>&nbsp;</div><div>The irony of this= is completely wasted on the people who made these decisions.&nbsp; The = perceived threat was some page coming back from a CONNECT request which = could get a broken browser to follow a redirect, or display the body as = if it came from the https server (thereby allowing through broken browser= design a masquerade opportunity).&nbsp; Instead of actually&nbsp;fixing= the browsers, they all (FF, Chrome and IE and probably others) chose inste= ad to ignore the response, and show a generic connectivity failure "friendl= y" page, which sends IT support people into a frenzy looking for broken = network equipment.&nbsp; The MitM response to this requires the proxy to= masquerade as the origin server, which was exactly the issue the browser= authors&nbsp;were trying to avoid by deciding to ignore non-200 responses= in the first place, meanwhile causing proxy vendors and&nbsp;users signifi= cant pain.</div><div>&nbsp;</div><div>As for the issue with captive portals= .&nbsp; Since the client needs to resolve names using DNS prior to making= a connection, and since the captive portal will intercept port 80 and redi= rect it to a challenge page etc until the portal has been satisfied, you= have a bit of a chicken and egg problem.&nbsp; A browser won't try to conn= ect if it gets a DNS lookup failure.&nbsp; DNS lookups will fail until the= browser attempts a connection and authenticates with the captive portal.&n= bsp; This is where the layering violation of DNS over HTTP is problematic.<= /div><div>&nbsp;</div><div>It should be possible to detect that this is = happening though, since the response won't contain an encapsulated DNS resp= onse in its message body.&nbsp; One option then could be to return some = fake A record to the DNS client, so that an attempt to connect will be made= .</div><div>&nbsp;</div><div><span id=3D"xcb9999ba2d4841499709412d57cc6986"= ><tt><div>I rather think this will increase the attack surface area rather= than</div><div>decreasing it, because now you have an additional place = processing DNS</div><div>packets.</div><div>&nbsp;</div></tt></span></div><= div>My main concern was that the HTTP &lt;-&gt; DNS gateway was likely behi= nd the firewall that was otherwise protecting the DNS server from malicious= DNS packets.&nbsp; By putting in the gateway, you may be providing a back= door for attacks on the DNS server.&nbsp; Sure, DNS servers should be hard= ened, but they may not realise they can't trust requests from the gateway.<= /div><div>&nbsp;</div><div>&nbsp;</div><div>Adrien</div><div>&nbsp;</div><d= iv>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div>=0A<div>------ Original= Message ------</div>=0A<div>From: "Shane Kerr" &lt;<a href=3D"mailto:shane= @time-travellers.org">sh...@time-travellers.org</a>&gt;</div>=0A<div>To:= "Adrien de Croy" &lt;<a href=3D"mailto:adr...@qbik.com";>adr...@qbik.com</a= >&gt;</div>=0A<div>Cc: "dnsop@ietf.org" &lt;<a href=3D"mailto:dn...@ietf.or= g">dnsop@ietf.org</a>&gt;</div>=0A<div>Sent: 5/05/2016 2:18:24 a.m.</div>= =0A<div>Subject: Re: [DNSOP] Fwd: New Version Notification for draft-song-d= ns-wireformat-http-03.txt</div><div>&nbsp;</div>=0A<div class=3D"plain" = id=3D"x9b5db85066b1495a90de3c5461bbe4a3"><blockquote class=3D"cite2" cite= =3D"20160504161824.25db8...@pallas.home.time-travellers.org" type=3D"cite">= =0A<tt><div>Adrien,</div>=0A<div>&nbsp;</div>=0A<div>Thanks for your commen= ts.</div>=0A<div>&nbsp;</div>=0A<div>At 2016-05-03 05:14:31 +0000</div>=0A= <div>"Adrien de Croy" &lt;<a href=3D"mailto:adr...@qbik.com";>adr...@qbik.co= m</a>&gt; wrote:</div>=0A<div>&nbsp;</div>=0A<blockquote class=3D"cite2"= type=3D"cite">=0A<div>&nbsp;Some general comments:</div>=0A<div>&nbsp;</di= v>=0A<div>&nbsp;I don't think you can claim that https provides data integr= ity or</div>=0A<div>&nbsp;privacy any more, since MitM proxies are abundant= .</div>=0A</blockquote>=0A<div>&nbsp;</div>=0A<div>Can you explain this = further?</div>=0A<div>&nbsp;</div>=0A<div>TLS is designed to provide data= integrity and privacy, even in the face</div>=0A<div>of man-in-the-middle= attacks.</div>=0A<div>&nbsp;</div>=0A<blockquote class=3D"cite2" type=3D= "cite">=0A<div>&nbsp;I think some thought should be given to how a DNS stub= might deal with a</div>=0A<div>&nbsp;captive portal or http proxy authenti= cation.</div>=0A</blockquote>=0A<div>&nbsp;</div>=0A<div>I guess this makes= sense. I don't know that we can offer much help</div>=0A<div>though. Perha= ps something like this:</div>=0A<div>&nbsp;</div>=0A<div>&nbsp;&nbsp;&nbsp;= &nbsp;A captive portal or any other middlebox that interferes with HTTP</di= v>=0A<div>&nbsp;&nbsp;&nbsp;&nbsp;may break this protocol, and DNS over = HTTP will have to be disabled</div>=0A<div>&nbsp;&nbsp;&nbsp;&nbsp;until= HTTP is restored.</div>=0A<div>&nbsp;</div>=0A<blockquote class=3D"cite2"= type=3D"cite">=0A<div>&nbsp;I think also that any HTTP server that receive= s such a request probably</div>=0A<div>&nbsp;ought to be validating the = encapsulated binary data before forwarding it</div>=0A<div>&nbsp;to any = DNS server.</div>=0A</blockquote>=0A<div>&nbsp;</div>=0A<div>I rather think= this will increase the attack surface area rather than</div>=0A<div>decrea= sing it, because now you have an additional place processing DNS</div>=0A= <div>packets.</div>=0A<div>&nbsp;</div>=0A<blockquote class=3D"cite" type= =3D"cite">=0A<div>&nbsp;I wonder why you'd want to keep truncation, as the= request should be</div>=0A<div>&nbsp;able to benefit from the fact that= fundamentally it's made over TCP to</div>=0A<div>&nbsp;the HTTP agent.</di= v>=0A</blockquote>=0A<div>&nbsp;</div>=0A<div>If the client side is acting= as a DNS proxy then we need to look like</div>=0A<div>DNS. The stub resolv= ers will send UDP packets and expect normal</div>=0A<div>truncation behavio= r. While it may be possible for the client DNS proxy</div>=0A<div>to perfor= m truncation and send responses back to the stub resolvers,</div>=0A<div>th= is is a significantly more complicated design.</div>=0A<div>&nbsp;</div>= =0A<blockquote class=3D"cite2" type=3D"cite">=0A<div>&nbsp;I would also = suggest looking into how such requests might be best</div>=0A<div>&nbsp;blo= cked by an http proxy, because this will be a requirement of proxy</div>= =0A<div>&nbsp;operators, and it would be good to consider user experience= for when</div>=0A<div>&nbsp;this happens, so that a consistent approach= can be taken (rather than</div>=0A<div>&nbsp;every different proxy blockin= g it some other way so that the user</div>=0A<div>&nbsp;experience becomes= awful).</div>=0A</blockquote>=0A<div>&nbsp;</div>=0A<div>In the case of= unencrypted HTTP (not recommended), then the proxy can</div>=0A<div>look= for the well-known URI, right?</div>=0A<div>&nbsp;</div>=0A<div>In the = case of TLS, then the proxy cannot block the traffic, can it? It</div>=0A= <div>doesn't know the URI that the site is visiting, nor the contents of= the</div>=0A<div>query or answer....</div>=0A<div>&nbsp;</div>=0A<div>Chee= rs,</div>=0A<div>&nbsp;</div>=0A<div>--</div>=0A<div>Shane</div>=0A</tt>=
 =0A=0A</blockquote></div>=0A</body></html>
 --------=_MB6D95EBBB-CA31-4278-834E-7A1D33BBAD44--


 --===============5443949507881977805==
 Content-Type: text/plain; charset="us-ascii"
 MIME-Version: 1.0
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline

 _______________________________________________
 DNSOP mailing list
 DNSOP@ietf.org
 https://www.ietf.org/mailman/listinfo/dnsop

 --===============5443949507881977805==--

--
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET: ma...@isc.org

_______________________________________________
DNSOP mailing list
DNSOP@ietf.org
https://www.ietf.org/mailman/listinfo/dnsop

Reply via email to