Re: [v6ops] new draft: draft-ietf-v6ops-ra-guard-implementation

Fernando Gont <fgont@si6networks.com> Fri, 24 February 2012 16:37 UTC

Return-Path: <fgont@si6networks.com>
X-Original-To: v6ops@ietfa.amsl.com
Delivered-To: v6ops@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1471A21F87F7 for <v6ops@ietfa.amsl.com>; Fri, 24 Feb 2012 08:37:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.488
X-Spam-Level:
X-Spam-Status: No, score=0.488 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, DATE_IN_PAST_12_24=0.992, HELO_EQ_NL=0.55, HOST_EQ_NL=1.545]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id lX2DfFEu7n6P for <v6ops@ietfa.amsl.com>; Fri, 24 Feb 2012 08:37:55 -0800 (PST)
Received: from srv01.bbserve.nl (srv01.bbserve.nl [46.21.160.232]) by ietfa.amsl.com (Postfix) with ESMTP id A941721F87F1 for <v6ops@ietf.org>; Fri, 24 Feb 2012 08:37:47 -0800 (PST)
Received: from [186.137.77.114] (helo=[192.168.1.104]) by srv01.bbserve.nl with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.77) (envelope-from <fgont@si6networks.com>) id 1S0y9I-0003nk-Uc; Fri, 24 Feb 2012 17:37:37 +0100
Message-ID: <4F4712D2.4050202@si6networks.com>
Date: Fri, 24 Feb 2012 01:32:18 -0300
From: Fernando Gont <fgont@si6networks.com>
Organization: SI6 Networks
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.27) Gecko/20120216 Thunderbird/3.1.19
MIME-Version: 1.0
To: Ray Hunter <v6ops@globis.net>
References: <201202141455.q1EEt1C04893@ftpeng-update.cisco.com> <4F4286A0.6040203@globis.net>
In-Reply-To: <4F4286A0.6040203@globis.net>
X-Enigmail-Version: 1.1.2
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 7bit
Cc: draft-ietf-v6ops-ra-guard-implementation@tools.ietf.org, v6ops@ietf.org
Subject: Re: [v6ops] new draft: draft-ietf-v6ops-ra-guard-implementation
X-BeenThere: v6ops@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: v6ops discussion list <v6ops.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/v6ops>, <mailto:v6ops-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/v6ops>
List-Post: <mailto:v6ops@ietf.org>
List-Help: <mailto:v6ops-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/v6ops>, <mailto:v6ops-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 24 Feb 2012 16:37:56 -0000

Hi, Ray,

Thanks so much for your feedback! -- Please find my comments inline...

On 02/20/2012 02:45 PM, Ray Hunter wrote:
> One thing I do not find satisfactory is one of the MUST drop rules:
> 
>> 3.  If the layer-2 device is unable to identify whether the packet is
>>        an ICMPv6 Router Advertisement message or not (i.e., the packet
>>        is a fragment, and the necessary information is missing), the
>>        IPv6 Source Address of the packet is a link-local address or the
>>        unspecified address (::), and the Hop Limit is 255, silently drop
>>        the packet.
> I understand the logic of the rule. But to me this suggests that the RA
> Guard filtering mechanism may well exceed its raison d'etre of layer 2
> filtering of unauthorized RA messages. 

Filtering RA messages at layer-2 has a number of challenges:

1) RFC4861 allows fragmentation of ND packets. Even if we eventually
change this (as proposed in draft-gont-6man-nd-extension-headers),
RA-Guard must still be able to deal with the deployed base (i.e., it
could never assume that such packets will be dropped)

2) IPv6 first-fragments that do not include the entire header chain are
currently legitimate (please see
draft-gont-6man-oversized-header-chain). Therefore, an attacker could
always conceal the payload by including lots of extension headers, and
fragmenting the packets.

So the rule above should be read as:
"Pathological fragments that do not include the entire IPv6 header chain
are still legitimate (specs-wise)... we could rather ban them in
RA-Guard... but let's be more conservative, and just filter the ones
that could hurt what we are meaning to protect"

The above rule will only filter first-fragments that fail to contain the
entire IPv6 header chain (i.e., the upper-layer protocol cannot be
determined). In order to avoid false positives, we also check the Hop
Limit and the Source Address.

Note, however, that my take is that such packets would likely be
filtered by any deployed IPv6 firewalls, so legitimate traffic shouldn't
rely on them.


> I get the feeling therefore that
> the detection/definition of what is an unauthorized RA message may
> currently be underspecified. Or else the RA message itself is currently
> specified in such a way that the RA Guard filtering approach is not
> viable, as it may be circumvented by other yet-to-be-discovered cloaking
> mechanisms.

There are two different problems here, which kind of overlap:
1) Support of fragmentation in ND traffic: this should be forbidden (I'd
argue that it should be forbidden even if SEND is deployed). Supporting
fragmentation makes it much harder to produce feature parity with IPv4:
ND traffic monitoring is virtually impossible.

2) First-fragments that do not contain the entire IPv6 header chain bein
legitimate: As far as RA-Guard is concerned, if the entire header chain
is present in the first-fragment, then we can "cleanly" filter the
packets. If the header chain is split into multiple fragments, then we
must rely on the heuristics above.



> This rule we may also be in danger of heralding in a "drop all source
> <link-local-address> hop-limit 255 unless" layer-2 filter to cover a
> multitude of evils for various protocols and messages.
> 
> What other legitimate traffic would/could this rule potentially break?

As noted above, I really doubt that any protocol that relies on
"oversized header chains" (draft-gont-6man-oversized-header-chain) as
IPv6 firewalls get widely deployed -- the only way to firewall such
traffic would be to reassemble-filter-fragment... and that's undesirable
in many cases.

Thanks,
-- 
Fernando Gont
SI6 Networks
e-mail: fgont@si6networks.com
PGP Fingerprint: 6666 31C6 D484 63B2 8FB1 E3C4 AE25 0D55 1D4E 7492