Re: [Last-Call] Tsvart last call review of draft-ietf-6man-icmp-limits-07

Benjamin Kaduk <kaduk@mit.edu> Tue, 25 February 2020 19:34 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: ipv6@ietfa.amsl.com
Delivered-To: ipv6@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 761F23A142A; Tue, 25 Feb 2020 11:34:15 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 vb1njon1886j; Tue, 25 Feb 2020 11:34:14 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (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 4C42C3A1421; Tue, 25 Feb 2020 11:34:10 -0800 (PST)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id 01PJY4WH029312 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 25 Feb 2020 14:34:06 -0500
Date: Tue, 25 Feb 2020 11:34:03 -0800
From: Benjamin Kaduk <kaduk@mit.edu>
To: Bernard Aboba <bernard.aboba@gmail.com>
Cc: tsv-art@ietf.org, last-call@ietf.org, ipv6@ietf.org, draft-ietf-6man-icmp-limits.all@ietf.org
Subject: Re: [Last-Call] Tsvart last call review of draft-ietf-6man-icmp-limits-07
Message-ID: <20200225193403.GC56312@kduck.mit.edu>
References: <158205974177.14048.8752559981047005317@ietfa.amsl.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <158205974177.14048.8752559981047005317@ietfa.amsl.com>
User-Agent: Mutt/1.12.1 (2019-06-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ipv6/0A7Lo8lcOud1TXZod62cwQ3yc7M>
X-BeenThere: ipv6@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IPv6 Maintenance Working Group \(6man\)" <ipv6.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ipv6>, <mailto:ipv6-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ipv6/>
List-Post: <mailto:ipv6@ietf.org>
List-Help: <mailto:ipv6-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ipv6>, <mailto:ipv6-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 25 Feb 2020 19:34:16 -0000

On Tue, Feb 18, 2020 at 01:02:21PM -0800, Bernard Aboba via Datatracker wrote:
> Reviewer: Bernard Aboba
> Review result: Ready with Issues
> 
> TSV-ART Review of draft-ietf-6man-icmp-limits
> Bernard Aboba
> 
> Result: Ready with Issues
> 
> This document specifies several new ICMPv6 errors that can be sent
> when a node discards a packet due to it being unable to process the
> necessary protocol headers because of processing constraints or
> limits.  Reasons include:
> 
>       Code (pertinent to this specification)
>          1 - Unrecognized Next Header type encountered
>          TBA - Extension header too big
>          TBA - Extension header chain too long
>          TBA - Too many options in extension header
>          TBA - Option too big
> 
> ICMP Reliability
> 
> Section 5.2 states: 
> 
> "  ICMP is fundamentally an unreliable protocol and in real deployment
>    it may consistently fail over some paths. As with any other use of
>    ICMP, it is assumed that the errors defined in this document are only
>    best effort to be delivered. No protocol should be implemented that
>    relies on reliable delivery of ICMP messages. If necessary,
>    alternative or additional mechanisms may used to augment the
>    processes used to to deduce the reason that packets are being
>    discarded. Such alternative mechanisms are out of scope of this
>    specification."
> 
> [BA] The last sentence is a bit vague. My assumption is that this is
> referring to techniques such as are used in Path MTU discovery (e.g.
> tweaking of packets so as to determine potential reasons why packets
> are being discarded).  However, a reference might be helpful.
> 
> Security Concerns
> 
> Pointer field
> 
> In Section 3.1, the description of the Pointer field states: 
> 
> "      Pointer
>          Identifies the octet offset within the invoking packet where
>          the problem occurred.
> 
>          The pointer will point beyond the end of the ICMPv6 packet if
>          the field having a problem is beyond what can fit in the
>          maximum size of an ICMPv6 error message."
> 
> [BA] I worry about attackers using the Pointer field for
> mischief, such as buffer overflows.  The draft currently
> does not provide advice to implementers about validating
> the Pointer field (e.g. checking it against the length of
> the offending packet). Do we really need a 32-bit Pointer field? 

Very reminiscent of heartbleed, even with the note that "The pointer will
point beyond the end of the ICMPv6 packet if the field having a problem is
beyond what can fit in the maximum size of an ICMPv6 error message."

-Ben

> Use by attackers
> 
> Section 4.2 states: 
> 
> "  A host MAY modify its usage of protocol headers in subsequent packets
>    to avoid repeated occurrences of the same error."
> 
> [BA] While this response is optional, I do worry about the potential for
> spoofed ICMP packets to modify the host's security posture. Are there any
> types of usage modifications that a host should be particularly wary
> of?
> 
> Section 6 states: 
> 
> "  In some circumstances, the sending of ICMP errors might conceptually
>    be exploited for denial of service attack or as a means to covertly
>    deduce processing capabilities of nodes. As such, an implementation
>    SHOULD allow configurable policy to withhold sending of the ICMP
>    errors described in this specification in environments where security
>    of ICMP errors is a concern."
> 
> [BA] This concern seems quite realistic to me, and as a result, it would
> not surprise me if implementations either do not send these ICMP errors,
> or withhold them by default. Do you have a position on that? 
> 
> 
> 
> -- 
> last-call mailing list
> last-call@ietf.org
> https://www.ietf.org/mailman/listinfo/last-call