Re: [pcp] strengthening PCP with Mapping Nonce

"Zhangzongjian (Thomas)" <zhangzhongjian@huawei.com> Fri, 24 August 2012 08:10 UTC

Return-Path: <zhangzhongjian@huawei.com>
X-Original-To: pcp@ietfa.amsl.com
Delivered-To: pcp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4068221F86CB for <pcp@ietfa.amsl.com>; Fri, 24 Aug 2012 01:10:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.599
X-Spam-Level:
X-Spam-Status: No, score=-6.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IDMzeOpzUHns for <pcp@ietfa.amsl.com>; Fri, 24 Aug 2012 01:10:25 -0700 (PDT)
Received: from dfwrgout.huawei.com (dfwrgout.huawei.com [206.16.17.72]) by ietfa.amsl.com (Postfix) with ESMTP id 956FC21F86C8 for <pcp@ietf.org>; Fri, 24 Aug 2012 01:10:25 -0700 (PDT)
Received: from 172.18.9.243 (EHLO dfwdlp03-ep.huawei.com) ([172.18.9.243]) by dfwrg01-dlp.huawei.com (MOS 4.3.5-GA FastPath) with ESMTP id AKB00730; Fri, 24 Aug 2012 00:10:25 -0800 (PST)
Received: from DFWEML407-HUB.china.huawei.com (10.193.5.132) by dfweml201-edg.china.huawei.com (172.18.9.107) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 24 Aug 2012 01:06:18 -0700
Received: from SZXEML437-HUB.china.huawei.com (10.72.61.72) by dfweml407-hub.china.huawei.com (10.193.5.132) with Microsoft SMTP Server (TLS) id 14.1.323.3; Fri, 24 Aug 2012 01:06:24 -0700
Received: from SZXEML524-MBS.china.huawei.com ([169.254.5.83]) by szxeml437-hub.china.huawei.com ([10.72.61.72]) with mapi id 14.01.0323.003; Fri, 24 Aug 2012 16:06:17 +0800
From: "Zhangzongjian (Thomas)" <zhangzhongjian@huawei.com>
To: Dan Wing <dwing@cisco.com>, "pcp@ietf.org" <pcp@ietf.org>
Thread-Topic: [pcp] strengthening PCP with Mapping Nonce
Thread-Index: Ac1825YgdqnKbKRsQbGswo9PpQX9dgDXgBgwABEHyxAAFIZlwAAfravAAB3rq7A=
Date: Fri, 24 Aug 2012 08:06:18 +0000
Message-ID: <0B2F754289D27B449F7F1B95456B77544EDC53B3@szxeml524-mbs.china.huawei.com>
References: <028301cd7cdb$966780a0$c33681e0$@com> <0B2F754289D27B449F7F1B95456B77544EDC4FFE@szxeml524-mbs.china.huawei.com> <002301cd807d$e8d9fd40$ba8df7c0$@com> <0B2F754289D27B449F7F1B95456B77544EDC5131@szxeml524-mbs.china.huawei.com> <042601cd814f$421c41c0$c654c540$@com>
In-Reply-To: <042601cd814f$421c41c0$c654c540$@com>
Accept-Language: zh-CN, en-US
Content-Language: zh-CN
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.66.77.96]
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-CFilter-Loop: Reflected
Cc: 'Stuart Cheshire' <cheshire@apple.com>
Subject: Re: [pcp] strengthening PCP with Mapping Nonce
X-BeenThere: pcp@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: PCP wg discussion list <pcp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/pcp>, <mailto:pcp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/pcp>
List-Post: <mailto:pcp@ietf.org>
List-Help: <mailto:pcp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/pcp>, <mailto:pcp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Aug 2012 08:10:27 -0000

> In -27, we have tentatively added:
> 
>   When such
>   an intervening non-PCP-aware inner NAT is detected, mappings must
>   first be created by some other means in the inner NAT, before
>   mappings can be usefully created in the outer PCP-controlled NAT.
>   Having created mappings in the inner NAT by some other means, the PCP
>   client should then use the inner NAT's External Address as the Client
>   IP Address, to signal to the outer PCP-controlled NAT that the client
>   is aware of the inner NAT, and has taken steps to create mappings in
>   it by some other means, so that mappings created in the outer NAT
>   will not be a pointless waste of state.
>

Dear Wing

I think I understand your proposal, but there still are some questions.

1. How did PCP client (host) detect that there are two levels NAT (Inner NAT and Out NAT)?   PCP client need to know this first of all.
  How could the PCP client know the inner NAT is an unsupported PCP device.  If inner NAT supports PCP, it will find the PCP request is a malformed packet. It may discard the packet as the error packet or packet from an attacker.
  PCP client also need to know the Out NAT support PCP.

2. You said that " mappings must first be created by some other means in the inner NAT". What is the means? Manually or dynamically?
 I am afraid there will be a coincident lifetime problem.  For example the lifetime of MAP in Out NAT is 12 hour, but the lifetime of MAP in inner NAT is 1  hour. What will happen when inner NAT MAP's lifetime expired.

3. The Inner NAT function on CPE may be shut down for some reasons, how could the PCP client know the dynamic change on CPE?

4.How could the PCP client know the external IP address on inner NAT? 

5.Is it possible that there are more than one external IP address (maybe a private IP address) on inner NAT external Pool? For example, different external IP for different service.

Regards
Thomas



> -----Original Message-----
> From: Dan Wing [mailto:dwing@cisco.com]
> Sent: Friday, August 24, 2012 12:49 AM
> To: Zhangzongjian (Thomas); pcp@ietf.org
> Cc: 'Stuart Cheshire'
> Subject: RE: [pcp] strengthening PCP with Mapping Nonce
> 
> > -----Original Message-----
> > From: Zhangzongjian (Thomas) [mailto:zhangzhongjian@huawei.com]
> > Sent: Wednesday, August 22, 2012 6:59 PM
> > To: Dan Wing; pcp@ietf.org
> > Cc: 'Stuart Cheshire'
> > Subject: RE: [pcp] strengthening PCP with Mapping Nonce
> ...
> > Thomas=>
> > Do you mean that the home NAT does not support PCP client, PCP proxy
> > and upnp-pcp interworking?
> 
> 
> Correct -- the home NAT, in this attack scenario, is the home NAT
> that is currently for sale at the local computer store, which do
> not support PCP and do not know anything about PCP.
> 
> 
> > But, how could the victim host create the MAP entries?
> 
> The victim's host supports PCP in its application (or its
> operating system), which sends the PCP request to the CGN
> directly.
> 
> 
> > As you know the home NAT will change the source IP address of PCP
> > request from hosts. This will result to mis-match with " PCP Client's
> > IP Address" in PCP request heard. Then  PCP server will return an
> > ADDRESS_MISMATCH error without creating MAP entry.
> 
> The PCP client in the (victim) host can overcome that by placing the
> WAN address of the NAT into the PCP Client IP Address field of the
> PCP packet.
> 
> In -27, we have tentatively added:
> 
>   When such
>   an intervening non-PCP-aware inner NAT is detected, mappings must
>   first be created by some other means in the inner NAT, before
>   mappings can be usefully created in the outer PCP-controlled NAT.
>   Having created mappings in the inner NAT by some other means, the PCP
>   client should then use the inner NAT's External Address as the Client
>   IP Address, to signal to the outer PCP-controlled NAT that the client
>   is aware of the inner NAT, and has taken steps to create mappings in
>   it by some other means, so that mappings created in the outer NAT
>   will not be a pointless waste of state.
> 
> -d
> 
> 
> > Draft-ietf-pcp-base-26 tells something about mis-match. Below are
> > copied from last paragraph of chart 8.2 for reference.
> >
> > The PCP server compares the source IP address (from the received IP
> >    header) with the field PCP Client IP Address.  If they do not match,
> >    the error ADDRESS_MISMATCH MUST be returned.  This is done to
> detect
> >    and prevent accidental use of PCP where a non-PCP-aware NAT exists
> >    between the PCP client and PCP server.  If the PCP client wants such
> >    a mapping it needs to ensure the PCP field matches its apparent IP
> >    address from the perspective of the PCP server.
> >
> >
> >
> > > -d
> > >
> > > > When home NAT receives a PCP MAP request with lifetime=0 from
> > attacker,
> > > > it should add a third party option with the attacker's IP address
> > in
> > > > this option. When CGN gets the PCP request, it will use the third
> > party
> > > > option address as the source address to search the MAP entries.
> > Then
> > > > the attacker can't delete the MAP entry created by victim.
> > > >
> > > >
> > > > > address spoofing.  120 seconds later (per REQ-8 of
> > > > > draft-ietf-behave-lsn-requirements-09), the attacker sends a new
> > PCP
> > > > MAP
> > > > > request to try to acquire the (old) mapping of the victim host.
> > In
> > > > this
> > > > > way, the attacker steals incoming traffic intended to go to the
> > > > victim host.
> > > > >
> > > > >
> > > > > Diagram:
> > > > >
> > > > >                   +-------------+    +----------+
> > > > >   attacker -------+             |    |          |
> > > > >   (guest network) |             |    |          |
> > > > >                   |   home NAT  +----+    CGN
> +----{Internet}
> > > > >   victim ---------+(without PCP)|    |(with PCP)|
> > > > >   (wired network) |             |    |          |
> > > > >                   +-------------+    +----------+
> > > > >
> > > > >
> > > > > Please provide us feedback.  I expect to publish -27 soon with
> > these
> > > > > changes, but we are doing some text coordination before
> > publishing -
> > > > 27.
> > > > >
> > > > > -d
> > > > >
> > > > > -----
> > > > >
> > > > >    REQ-9:  A CGN MUST implement a protocol giving subscribers
> > > > explicit
> > > > >            control over NAT mappings.  That protocol SHOULD be
> > the
> > > > Port
> > > > >            Control Protocol [I-D.ietf-pcp-base], in which case
> > the
> > > > PCP
> > > > >            server MUST obey the following constraints on its
> > > > behavior:
> > > > >
> > > > >            A.  It MUST NOT permit the lifetime of a mapping to be
> > > > >                reduced beyond its current life or be set to zero
> > > > >                (deleted).
> > > > >
> > > > >            B.  It MUST NOT permit a NAT mapping to be created
> > with a
> > > > >                lifetime less than the lifetime used for implicit
> > > > >                mappings.
> > > > >
> > > > >            C.  It MUST NOT support the THIRD_PARTY option
> except
> > > for
> > > > >                requests received from "trusted" sources where it
> > is
> > > > >                impractical for those sources to be spoofed.
> > > > >
> > > > >            D.  The MAP opcode MAY be permitted if the
> > > recommendation
> > > > > of
> > > > >                endpoint independent filtering behavior described
> > in
> > > > >                REQ-7 is adopted; the map opcode MUST NOT be
> > > permitted
> > > > > in
> > > > >                other circumstances.  These constraints MAY be
> > > relaxed
> > > > if
> > > > >                a security mechanism consistent with PCP's
> > Advanced
> > > > >                Threat Model (see Section 17.2 of [I-D.ietf-pcp-
> > base])
> > > > is
> > > > >                used; this is expected to be rare for CGN
> > deployments.
> > > > >
> > > > >            E.  Mappings created by PCP MUST follow the same
> > > > deallocation
> > > > >                behavior (REQ-8) as implicitly mapped traffic.
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > pcp mailing list
> > > > > pcp@ietf.org
> > > > > https://www.ietf.org/mailman/listinfo/pcp
> > > >
> > > > Best regards
> > > > Thomas