W3C home > Mailing lists > Public > whatwg@whatwg.org > March 2011

[whatwg] PeerConnection: encryption feedback

From: Glenn Maynard <glenn@zewt.org>
Date: Sat, 19 Mar 2011 00:41:32 -0400
Message-ID: <AANLkTikXaN8YP-1gxt2jfuOGgcAfd4=pWRFsRTq+=M_H@mail.gmail.com>
On Fri, Mar 18, 2011 at 11:28 PM, Ian Hickson <ian at hixie.ch> wrote:

> The other ICE peer, the STUN server, the TURN server (if any), and the
> signaling channel are all under the control of the attacker in a worst
> case scenario (the user being directed to a hostile or hijacked site). The
> attacker essentially has perfect knowledge; the only thing we can add that
> the attacker doesn't know is a random number with each packet.
>

The attack, as I understand it, is to trick a user's browser into talking to
an innocent third party (for example, his local DNS server) on a desired IP
and port, and to use the API to send constructed packets at that IP and
port.  The random nonce is intended to prevent the second stage of that:
assume that the protocol can be tricked into sending data to an arbitrary IP
and port, and protect it by preventing arbitrary packets.  (Stop here and
correct me if I'm misunderstanding at this point.)

There are two other parties involved: L, the user whose browser is being
used to send packets, and R, the third-party that the hostile site is
attempting to trick A into sending packets to.

If the attacker can sniff UDP packets sent from L->R, then he does indeed
have perfect knowledge.  However, if an attacker can do that, then he can
also spoof UDP packets from L->R.  This attack is only interesting when the
attacker can't sniff and spoof packets from L->R, eg. when they're behind a
firewall.

If the attacker can't sniff packets from L->R, then L's ICE agent can verify
that R is a real ICE peer, and not a third-party, by sending a packet
containing a random block of data to R.  If that data is echoed back intact,
then L knows R is an actual ICE peer and not an unrelated third party.

ICE does seem to perform this check.  ICE's "basic connectivity check"
(RFC5245 sec2.2) is a STUN packet each peer sends to the other.  That packet
contains a 96-bit transaction ID (RFC5389 sec6) which is echoed back in the
other peer's STUN response.  I could be misinterpreting the protocol.

-- 
Glenn Maynard
Received on Friday, 18 March 2011 21:41:32 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 16:59:31 UTC