Re: [quicwg/base-drafts] Address validation for connection migration (#732)
ianswett <notifications@github.com> Mon, 02 October 2017 01:39 UTC
Return-Path: <bounces+848413-a050-quic-issues=ietf.org@sgmail.github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 60543134BE8 for <quic-issues@ietfa.amsl.com>; Sun, 1 Oct 2017 18:39:36 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.019
X-Spam-Level:
X-Spam-Status: No, score=-2.019 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Iz57Dm9rf17G for <quic-issues@ietfa.amsl.com>; Sun, 1 Oct 2017 18:39:34 -0700 (PDT)
Received: from o9.sgmail.github.com (o9.sgmail.github.com [167.89.101.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5E07F134BB8 for <quic-issues@ietf.org>; Sun, 1 Oct 2017 18:39:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=github.com; h=from:reply-to:to:cc:in-reply-to:references:subject:mime-version:content-type:content-transfer-encoding:list-id:list-archive:list-post:list-unsubscribe; s=s20150108; bh=eK8VaAFrTPuWqPoriUVSqQ2T4xQ=; b=cZPMLTQ0kyDJqVyr I6Zr3PLAqTIMBpFLQ6kKP9MBo9sTJJfJnBxWHtHyOsU7xWf3UJg0Yx3Tk9TR6C73 IHE8CMfbEjt0W+zQgQgSLEROfCeJUJo1VIy1kqjbwhVzFgjMib0Io8VXquYbplhk YX1+rLgK1E0z1hS6BSfkMapO6us=
Received: by filter1153p1mdw1.sendgrid.net with SMTP id filter1153p1mdw1-31710-59D198D5-11 2017-10-02 01:39:33.440575039 +0000 UTC
Received: from github-smtp2b-ext-cp1-prd.iad.github.net (github-smtp2b-ext-cp1-prd.iad.github.net [192.30.253.17]) by ismtpd0007p1iad2.sendgrid.net (SG) with ESMTP id X-Yx7CuzQeGC9dm5ettqjA for <quic-issues@ietf.org>; Mon, 02 Oct 2017 01:39:33.625 +0000 (UTC)
Date: Mon, 02 Oct 2017 01:39:33 +0000
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab40dcb1a1af1d302e3c79b417a919e75736e12bbb92cf0000000115e95ad592a169ce0ee9dd49@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/732/review/66353942@github.com>
In-Reply-To: <quicwg/base-drafts/pull/732@github.com>
References: <quicwg/base-drafts/pull/732@github.com>
Subject: Re: [quicwg/base-drafts] Address validation for connection migration (#732)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_59d198d53c943_5b5e3fa2e7adcf2c1019e9"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
X-SG-EID: l64QuQ2uJCcEyUykJbxN122A6QRmEpucztpreh3Pak12WA9by9YA05kMhfsGEZxr19GKUOBxSeu4RK UsLDvLRczIn9BBmOENRqwHSH+nInRZh/WIsXD5DiS+Oel7D8UqfKO8AgDgrmXqVmG/MOK5822ssrmJ NUehwPfB5UH77u4Y3idTRaP2QUz6e53Zk1mSEzleoZdBKz5+GaZ/Za5VIdUQ36B8gyGvBowQZr3uOT I=
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/cMZNzr-l_irpVuTGyETcck0lK6Q>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.22
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 02 Oct 2017 01:39:36 -0000
ianswett commented on this pull request.
A few comments, but this looks good overall.
>
-TODO: see issue #161
+An endpoint that see a new source IP address and port (or just a new source
see/sees
>
-TODO: see issue #161
+An endpoint that see a new source IP address and port (or just a new source
+port) on packets from its peer is likely seeing a connection migration at the
+peer.
+
+However, it is also possible that the peer is spoofing its source address in
+order to cause the endpoint to send excessive amounts of data to an unwilling
+host. If the endpoint sends significantly more data than the peer, connection
+migration might be used to amplify the volume of data that an attacker can
+generate toward a victim.
+
+Thus, when seeing a new remote transport address, an endpoint MUST verify that
+its peer can receive and respond to packets at that new address. By providing
+copies of the frames that it receives, the peer proves that it is receiving
nit: Technically, they're not copies of the frames.
> +of data and packets that it sends to its peer. At a minimum, this needs to
+consider the possibility that packets are sent without congestion feedback.
+
+Once a connection is established, address validation is relatively simple (see
+{{address-validation}} for the process that is used during the handshake). An
+endpoint validates a remote address by sending a PING frame containing a payload
+that is hard to guess. This frame MUST be sent in a packet that is sent to the
+new address. Once a PONG frame containing the same payload is received, the
+address is considered to be valid. The PONG frame can use any path on its
+return. A PING frame containing 12 randomly generated {{?RFC4086}} octets is
+sufficient to ensure that it is easier to receive the packet than it is to guess
+the value correctly.
+
+Note:
+
+: Retransmissions of the PING frame MUST also use the same remote address.
Should we be retransmitting the same PING frame or a different PING frame?
> +
+Once a connection is established, address validation is relatively simple (see
+{{address-validation}} for the process that is used during the handshake). An
+endpoint validates a remote address by sending a PING frame containing a payload
+that is hard to guess. This frame MUST be sent in a packet that is sent to the
+new address. Once a PONG frame containing the same payload is received, the
+address is considered to be valid. The PONG frame can use any path on its
+return. A PING frame containing 12 randomly generated {{?RFC4086}} octets is
+sufficient to ensure that it is easier to receive the packet than it is to guess
+the value correctly.
+
+Note:
+
+: Retransmissions of the PING frame MUST also use the same remote address.
+
+If validation of the new remote address fails, after allowing enough time for
What if other packets continue to arrive from the old address? Shouldn't the connection just stay on the old address?
> +## Spurious Connection Migrations
+
+A connection migration could be triggered by an attacker that is able to capture
+and forward a packet such that it arrives before the legitimate copy of that
+packet. Such a packet will appear to be a legitimate connection migration and
+the legitimate copy will be dropped as a duplicate.
+
+After a spurious migration, validation of the source address will fail because
+the entity at the source address does not have the necessary cryptographic keys
+to read or respond to the PING frame that is sent to it, even if it wanted to.
+Such a spurious connection migration could result in the connection being
+dropped when the source address validation fails. This grants an attacker the
+ability to terminate the connection.
+
+Receipt of packets with higher packet numbers from the legitimate address will
+trigger another connection migration. This will cause the validation of the
Thanks, this makes sense. Possibly allude to it earlier in the text?
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/732#pullrequestreview-66353942
- Re: [quicwg/base-drafts] Address validation for c… ianswett
- [quicwg/base-drafts] Address validation for conne… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Marten Seemann
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… ianswett
- Re: [quicwg/base-drafts] Address validation for c… Mike Bishop
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… ianswett
- Re: [quicwg/base-drafts] Address validation for c… Ryan Hamilton
- Re: [quicwg/base-drafts] Address validation for c… Mike Bishop
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… MikkelFJ
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Christian Huitema
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Christian Huitema
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… Martin Thomson
- Re: [quicwg/base-drafts] Address validation for c… janaiyengar