Re: [Int-area] Adam Roach's Discuss on draft-ietf-intarea-provisioning-domains-10: (with DISCUSS and COMMENT)

Tommy Pauly <tpauly@apple.com> Wed, 22 January 2020 15:52 UTC

Return-Path: <tpauly@apple.com>
X-Original-To: int-area@ietfa.amsl.com
Delivered-To: int-area@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 20DF012082C; Wed, 22 Jan 2020 07:52:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.002
X-Spam-Level:
X-Spam-Status: No, score=-2.002 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.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 7ulR_yrEKANQ; Wed, 22 Jan 2020 07:52:35 -0800 (PST)
Received: from nwk-aaemail-lapp02.apple.com (nwk-aaemail-lapp02.apple.com [17.151.62.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id ABFD2120137; Wed, 22 Jan 2020 07:52:35 -0800 (PST)
Received: from pps.filterd (nwk-aaemail-lapp02.apple.com [127.0.0.1]) by nwk-aaemail-lapp02.apple.com (8.16.0.27/8.16.0.27) with SMTP id 00MFkxFw017531; Wed, 22 Jan 2020 07:52:33 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=sender : content-type : mime-version : subject : from : in-reply-to : date : cc : content-transfer-encoding : message-id : references : to; s=20180706; bh=abeWvPdRHsfzoF72FLMVhbj2ltTMvl8Nwm73M0iECPM=; b=jXovZUakFXn637cvJhJa5wsjTSTYhDlagFuDDgKK4Cr5w/pCyVcuQZjAVHw++pWvEWDx qsI4maEQj8AoO42o1k5F6w7rirfTKdSy+vUZvI22An4FqdXnfSX9g9qEh/67jBHrYsO3 7INDpCnmpqPFnDnKemAd3knfigfcd+varPLWYPSxkWuDhRvj81lJlsQ0sYbJ4ZXj1YYG Btix5zugSqj6IY1Qm6nq7Wgta5Y+nWghN7ivELiqG6rPED7qUKO+PpdcYoA2iKBIssRt sXPy4FAiYpglb9GbEP1GbtyvKd1v7GxieKpgrFKH1rgy1qeePi/gJs7jZXDtLAGbscgD Kw==
Received: from ma1-mtap-s03.corp.apple.com (ma1-mtap-s03.corp.apple.com [17.40.76.7]) by nwk-aaemail-lapp02.apple.com with ESMTP id 2xkyfqkxru-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Wed, 22 Jan 2020 07:52:33 -0800
Received: from nwk-mmpp-sz11.apple.com (nwk-mmpp-sz11.apple.com [17.128.115.155]) by ma1-mtap-s03.corp.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPS id <0Q4I00K5PMRIAR30@ma1-mtap-s03.corp.apple.com>; Wed, 22 Jan 2020 07:52:32 -0800 (PST)
Received: from process_milters-daemon.nwk-mmpp-sz11.apple.com by nwk-mmpp-sz11.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) id <0Q4I00C00L9WHH00@nwk-mmpp-sz11.apple.com>; Wed, 22 Jan 2020 07:52:31 -0800 (PST)
X-Va-A:
X-Va-T-CD: fed544f7ebbef138a98d8d7739ec49c0
X-Va-E-CD: c9b617288523beb45e75434409806378
X-Va-R-CD: 8e0a95550bf21b93feeef59b2ad45954
X-Va-CD: 0
X-Va-ID: b7b3d501-8182-44a8-9adb-2643ff09013b
X-V-A:
X-V-T-CD: fed544f7ebbef138a98d8d7739ec49c0
X-V-E-CD: c9b617288523beb45e75434409806378
X-V-R-CD: 8e0a95550bf21b93feeef59b2ad45954
X-V-CD: 0
X-V-ID: db8eee5e-0f45-4525-898f-7d9b8ccbc44d
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2020-01-17_05:,, signatures=0
Received: from [17.234.112.109] by nwk-mmpp-sz11.apple.com (Oracle Communications Messaging Server 8.0.2.4.20190507 64bit (built May 7 2019)) with ESMTPSA id <0Q4I0098TMRILD80@nwk-mmpp-sz11.apple.com>; Wed, 22 Jan 2020 07:52:31 -0800 (PST)
Sender: tpauly@apple.com
Content-type: text/plain; charset="utf-8"
MIME-version: 1.0 (Mac OS X Mail 13.0 \(3594.4.17\))
From: Tommy Pauly <tpauly@apple.com>
In-reply-to: <CAHw9_iJM3+PGYJTOKR_RYpughCB5OOHfCjEQrt3wWn0L-Aguug@mail.gmail.com>
Date: Wed, 22 Jan 2020 07:52:28 -0800
Cc: The IESG <iesg@ietf.org>, Erik Kline <ek@loon.com>, draft-ietf-intarea-provisioning-domains@ietf.org, Internet Area <int-area@ietf.org>, intarea-chairs <intarea-chairs@ietf.org>
Content-transfer-encoding: quoted-printable
Message-id: <5D6F756D-16CB-430F-904C-7A5A21EE6AB9@apple.com>
References: <157967080772.28909.16443816599872682093.idtracker@ietfa.amsl.com> <CAHw9_iJM3+PGYJTOKR_RYpughCB5OOHfCjEQrt3wWn0L-Aguug@mail.gmail.com>
To: Warren Kumari <warren@kumari.net>, Adam Roach <adam@nostrum.com>
X-Mailer: Apple Mail (2.3594.4.17)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2020-01-17_05:, , signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/int-area/coWlJIv4xeHnWvaHSFaXRm9vkDo>
Subject: Re: [Int-area] Adam Roach's Discuss on draft-ietf-intarea-provisioning-domains-10: (with DISCUSS and COMMENT)
X-BeenThere: int-area@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: IETF Internet Area Mailing List <int-area.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/int-area>, <mailto:int-area-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/int-area/>
List-Post: <mailto:int-area@ietf.org>
List-Help: <mailto:int-area-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/int-area>, <mailto:int-area-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 22 Jan 2020 15:52:42 -0000


> On Jan 22, 2020, at 6:54 AM, Warren Kumari <warren@kumari.net> wrote:
> 
> On Wed, Jan 22, 2020 at 12:26 AM Adam Roach via Datatracker
> <noreply@ietf.org> wrote:
>> 
>> Adam Roach has entered the following ballot position for
>> draft-ietf-intarea-provisioning-domains-10: Discuss
>> 
>> When responding, please keep the subject line intact and reply to all
>> email addresses included in the To and CC lines. (Feel free to cut this
>> introductory paragraph, however.)
>> 
>> 
>> Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
>> for more information about IESG DISCUSS and COMMENT positions.
>> 
>> 
>> The document, along with other ballot positions, can be found here:
>> https://datatracker.ietf.org/doc/draft-ietf-intarea-provisioning-domains/
>> 
>> 
>> 
>> ----------------------------------------------------------------------
>> DISCUSS:
>> ----------------------------------------------------------------------
>> 
>> Thanks to the authors and working group for their work on this document.  I
>> have one major concern about the ability for this mechanism to be abused to
>> form DDoS attacks, described below. Unfortunately, while I have identified the
>> attack, I don't have an easy solution to propose that mitigates it satisfactorily.
>> 
>> I also have a handful of mostly editorial comments on the document.
>> 
>> ---------------------------------------------------------------------------
>> 
>> §6:
>> 
>> I was expecting to see a discussion of the DDoS attack that may result from a
>> large network (or a rogue host on such a network) sending out a PvD ID
>> containing the hostname of a victim machine, and setting the "H" flag.
>> 
>> Since the messages used to trigger these HTTP connections are extremely
>> lightweight, unauthenticated UDP messages, and the resulting HTTP connections
>> require the exchange of a significant number of packets in addition to a
>> number of cryptographic operations, this is a very high ratio amplification
>> attack, both in terms of network and CPU resources.
>> 
>> Given that the delay setting comes from the network instead of being
>> independently computed by the host, such an attack could be honed to be
>> particularly devastating.  Although it isn't a complete mitigation, one
>> approach to consider would be moving computation of the delay upper bound to
>> the host, or specifying a minimum upper bound of several minutes (where a
>> smaller value will cause the host to use this minimum upper bound).
>> 
> 
> Doh!
> 
> Yes, unless we are missing something, this *does* sound like an issue
> -- I like your minimum upper bound idea... but I'm also picturing
> something where the victim sends back some bad PvD info which makes
> the clients fall off the network, thereby stopping the attack :-P

There should certainly be a minimum time between fetches, which we can specify here.

Beyond this, I think there's actually a relatively straightforward solution that's latent in the text but needs to be called out in the security considerations.

The privacy considerations note that the Additional Information server should limit access to valid clients (and if it checks the client public address, this can prevent the NAT66 trick):

Network operators SHOULD restrict access to PvD Additional
Information to only expose it to hosts that are connected to the local
network... [this] can be implemented by
whitelisting access from the addresses and prefixes that the router provides
for the PvD, which will match the prefixes contained in the PvD Additional
Information.

In addition, the client is told to "abandon" requests and consider that a PvD has no additional info if it receives HTTP 400 errors:

If the HTTP status of the answer is greater than or equal to 400
the host MUST abandon and consider that there is no additional PvD
information.

My thought is to specify that the server rejects clients with a 400-level if they are not indeed from its own PvD; and similarly to specify that clients don't retry and effectively blacklist the PvD Additional Info in this case, or if they don't get valid JSON back.

Thoughts?

Thanks!
Tommy

> 
>> Regardless of how this is ultimately handled, I think this is a pretty severe
>> risk that needs addressing in the document prior to publication.
> 
> Yah.
> W
> 
>> 
>> 
>> ----------------------------------------------------------------------
>> COMMENT:
>> ----------------------------------------------------------------------
>> 
>>> This document also introduces a mechanism for hosts to retrieve
>>> optional additional information related to a specific PvD by means of
>>> an HTTP over TLS query using an URI derived from the PvD ID.
>> 
>> Nit: "...a URI..."
>> 
>> ---------------------------------------------------------------------------
>> 
>> §3.4.1:
>> 
>>> This is intended to
>>> resolve backward compatibility issues with rare deployments choosing
>>> to assign addresses with DHCPv6 while not sending any matching PIO.
>> 
>> It seems that this set of circumstances could also arise due to a
>> misconfiguration of DHCPv6. If this is expected to be only rarely
>> intended, perhaps some oprationational/implementation guidance to log
>> a warning or otherwise alert the operator would be helpful.
>> 
>> ---------------------------------------------------------------------------
>> 
>> §4.1:
>> 
>>> HTTP requests and responses for PvD additional information use the
>>> "application/pvd+json" media type (see Section 8).  Clients SHOULD
>>> include this media type as an Accept header in their GET requests,
>> 
>> Nit: "...Accept header field..."
>> 
>> ---------------------------------------------------------------------------
>> 
>> §4.1:
>> 
>>> If the HTTP
>>> status of the answer is between 200 and 299, inclusive, the host MAY
>>> get a file containing a single JSON object.
>> 
>> This is very confusing phrasing. The sentence -- and the use of a normative
>> "MAY" in particular -- indicates that the host is given permission to take
>> some additional action that "gets" a JSON object from somewhere. I think it's
>> intending to say that a 200-class HTTP response will contain such an object.
>> 
>> Consider rephrasing.
>> 
>> ---------------------------------------------------------------------------
>> 
>> §4.3:
>> 
>>> Private-use or experimental keys MAY be used in the JSON dictionary.
>>> In order to avoid such keys colliding with IANA registry keys,
>>> implementers or vendors defining private-use or experimental keys
>>> MUST create sub-dictionaries, where the sub-dictionary is added into
>>> the top-level JSON dictionary with a key of the format "vendor-*"
>>> where the "*" is replaced by the implementer's or vendor's
>>> identifier.  For example, keys specific to the FooBar organization
>>> could use "vendor-foobar".  Upon receiving such a sub-dictionary,
>>> host MUST ignore this sub-dictionary if it is unknown.  When the
>>> vendor or implementer is part of an IANA URN namespace [URN], the URN
>>> namespace SHOULD be used rather than the "vendor-*" format.
>> 
>> This is kind of a minor nit, but this paragraph is a bit confusing.  It
>> starts off with a less-preferred convention ("vendor-*") and discusses
>> it as if it were the only way to do things; and then it throws in a
>> SHOULD-strength different encoding at the end as a surprise twist.
>> I would suggest reworking the paragraph so that the preferred encoding
>> (URNs) are mentioned first, as a SHOULD-strength statement, followed by
>> the less-preferred "vendor-*" as a fallback.
>> 
>> ---------------------------------------------------------------------------
>> 
>> §4.3:
>> 
>>> +------------+-----------------+-----------+------------------------+
>>> | JSON key   | Description     | Type      | Example                |
>>> +------------+-----------------+-----------+------------------------+
>>> | identifier | PvD ID FQDN     | String    | "pvd.example.com."     |
>> 
>> ....
>> 
>>> {
>>>   "identifier": "cafe.example.com",
>>>   "expires": "2017-07-23T06:00:00Z",
>>>   "prefixes": ["2001:db8:1::/48", "2001:db8:4::/48"],
>>> }
>> 
>> I'm concerned about the variation in the identifier field alternately
>> containing and not containing the terminal dot of the FQDN. If the
>> intention that these are to be equivalent, it would probably head off
>> some implementation incompatibilities if the document were to say so
>> explicitly.
>> 
>> ---------------------------------------------------------------------------
>> 
>> §7:
>> 
>>> without leaking identity information, SHOULD make use of an IPv6
>>> Privacy Address and SHOULD NOT include any privacy sensitive data,
>>> such as User Agent header or HTTP cookie, while performing the HTTP
>> 
>> Nit: "...User-Agent header field..."
>>             ^             ^^^^^
>> 
>> 
> 
> 
> -- 
> I don't think the execution is relevant when it was obviously a bad
> idea in the first place.
> This is like putting rabid weasels in your pants, and later expressing
> regret at having chosen those particular rabid weasels and that pair
> of pants.
>   ---maf