Re: [lmap] AD evaluation: draft-ietf-lmap-yang-10

Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> Wed, 08 February 2017 11:35 UTC

Return-Path: <j.schoenwaelder@jacobs-university.de>
X-Original-To: lmap@ietfa.amsl.com
Delivered-To: lmap@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0FFC51296C3 for <lmap@ietfa.amsl.com>; Wed, 8 Feb 2017 03:35:06 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RP_MATCHES_RCVD=-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 8lBrN_pzTvit for <lmap@ietfa.amsl.com>; Wed, 8 Feb 2017 03:35:03 -0800 (PST)
Received: from atlas3.jacobs-university.de (atlas3.jacobs-university.de [212.201.44.18]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 1E5D81295ED for <lmap@ietf.org>; Wed, 8 Feb 2017 03:35:03 -0800 (PST)
Received: from localhost (demetrius5.irc-it.jacobs-university.de [10.70.0.222]) by atlas3.jacobs-university.de (Postfix) with ESMTP id EB4037B6; Wed, 8 Feb 2017 12:35:01 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from atlas3.jacobs-university.de ([10.70.0.205]) by localhost (demetrius5.jacobs-university.de [10.70.0.222]) (amavisd-new, port 10030) with ESMTP id 5TrBxx3LRMsF; Wed, 8 Feb 2017 12:34:59 +0100 (CET)
Received: from hermes.jacobs-university.de (hermes.jacobs-university.de [212.201.44.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hermes.jacobs-university.de", Issuer "Jacobs University CA - G01" (verified OK)) by atlas3.jacobs-university.de (Postfix) with ESMTPS; Wed, 8 Feb 2017 12:35:01 +0100 (CET)
Received: from localhost (demetrius2.jacobs-university.de [212.201.44.47]) by hermes.jacobs-university.de (Postfix) with ESMTP id 33CEE200BE; Wed, 8 Feb 2017 12:35:01 +0100 (CET)
X-Virus-Scanned: amavisd-new at jacobs-university.de
Received: from hermes.jacobs-university.de ([212.201.44.23]) by localhost (demetrius2.jacobs-university.de [212.201.44.32]) (amavisd-new, port 10024) with ESMTP id ck3Z0E9uW8Ay; Wed, 8 Feb 2017 12:35:00 +0100 (CET)
Received: from elstar.local (elstar.jacobs.jacobs-university.de [10.50.231.133]) by hermes.jacobs-university.de (Postfix) with ESMTP id 7410E200BD; Wed, 8 Feb 2017 12:35:00 +0100 (CET)
Received: by elstar.local (Postfix, from userid 501) id 8E2AC3E6C2A5; Wed, 8 Feb 2017 12:35:02 +0100 (CET)
Date: Wed, 08 Feb 2017 12:35:02 +0100
From: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
To: Alissa Cooper <alissa@cooperw.in>
Message-ID: <20170208113501.GC97665@elstar.local>
Mail-Followup-To: Alissa Cooper <alissa@cooperw.in>, lmap@ietf.org
References: <49AB42C1-3DE5-4289-9B32-173B69C191DC@cooperw.in> <20170124202305.GA38068@elstar.local> <E2346FCD-B119-4385-BBF8-B97207DFB693@cooperw.in> <20170126101706.GD43055@elstar.local> <D6E49B78-0B0A-4DBD-A854-895B293493AD@cooperw.in>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
X-Clacks-Overhead: GNU Terry Pratchett
Content-Transfer-Encoding: 8bit
In-Reply-To: <D6E49B78-0B0A-4DBD-A854-895B293493AD@cooperw.in>
User-Agent: Mutt/1.6.0 (2016-04-01)
Archived-At: <https://mailarchive.ietf.org/arch/msg/lmap/Gp9cInFLjniFLQnsItCy5QnRM-E>
Cc: lmap@ietf.org
Subject: Re: [lmap] AD evaluation: draft-ietf-lmap-yang-10
X-BeenThere: lmap@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
Reply-To: Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de>
List-Id: Large Scale Measurement of Access network Performance <lmap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lmap>, <mailto:lmap-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lmap/>
List-Post: <mailto:lmap@ietf.org>
List-Help: <mailto:lmap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lmap>, <mailto:lmap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Feb 2017 11:35:06 -0000

On Tue, Feb 07, 2017 at 10:31:17AM -0500, Alissa Cooper wrote:
> 
> > On Jan 26, 2017, at 5:17 AM, Juergen Schoenwaelder <j.schoenwaelder@jacobs-university.de> wrote:
> > 
> > Trimming things down...
> > 
> > On Wed, Jan 25, 2017 at 01:25:26PM -0500, Alissa Cooper wrote:
> >>> 
> >>>> (4) "A queue is internally used to pass
> >>>>                 results to another schedule."
> >>>> 
> >>>> I thought it was up to the implementation to decide how to implement this?
> >>> 
> >>> OK. I meanwhile understand that the word 'queue' has too many
> >>> connotations. Is 'buffer' a less problematic term? The key here is
> >>> that the data producer and the data consumer are in general not
> >>> running at the time and hence data needs to be stored temporarily
> >>> somewhere.
> >> 
> >> Isn’t this implied though? Even with “buffer” it still seems like specifying an implementation detail. I’d prefer to see something like your last sentence above instead.
> > 
> > So I will replace 'buffer' with 'somewhere'. Oh boy. Here is the
> > new text:
> > 
> >               A set of schedules receiving the output produced
> >               by this action. The output is stored temporarily
> >               somewhere since the destination schedules will in
> >               general not be running when output is passed to
> >               them. The behaviour of an action passing data to
> >               its own schedule is implementation specific.
> 
> I don’t think you need to say “somewhere.” The output is temporarily stored since the destination ...
>

OK
 
> > Why would the controller necessarily even know where such executables reside on the file system? And I know there are a lot of things that could go wrong if a Controller gets compromised, but it just seems like making it so trivial for an MA implementation to literally just run the executable name specified by the Controller creates unnecessary risk.
> > 
> > Perhaps we need to add more explicit text to /tasks/task saying that a
> > configured LMAP task MUST resolve to a task listed in the capabilities.
> > This is in my view what matters most.
> 
> Agree.

Here is the new text:

      list task {
        key name;
	description
          "The list of tasks configured on the LMAP agent. Note
           that a configured task must resolve to a task listed
           in the capabilities. Attempts to execute a configured
           task that is not listed in the capabilities result in
           a runtime execution error.";
 
> >> If the task name on its own is not sufficient for the MA to be able to figure out which program is suitable to run, why not have the additional field defined as ‘program-name’ with some guidance about how to populate it, so that, e.g., what you end up with in that field is “mtr” or “fping” instead of "/usr/bin/mtr” or "/usr/bin/fping”?
> > 
> > I do not really see the logic here. An implementation that blindly
> > executes a program called 'mtr' by search a search PATH may actually
> > be worse than an implementation that executes /some/path/mtr.
> 
> But at least that leaves it up to the implementation to be implemented safely, rather than building an attack vector directly into the data model design.
>

I think the above proposed new text actually takes care of this.
Something not listed in the capabilities can't be executed.

> >>>> Nits and minor comments:
> >>> 
> >>>> (2) "Implementers MUST taken care that
> >>>>  option names and values are passed literally to programs.  In
> >>>>  particular, it MUST be avoided that any shell expansions are
> >>>>  performed that may alter the option names and values."
> >>>> 
> >>>> This text strikes me as a bit odd. Surely there are a whole selection of good programming practices that are necessary to ensure that things don't go haywire when implementing LMAP -- why call out these two with normative recommendations? Why does this guidance only apply to options? I would recommend having this text be non-normative, but if you do keep it I would suggest the following:
> >>>> 
> >>>> Implementers MUST take care that
> >>>>  option names and values are passed literally to programs.  In
> >>>>  particular, shell expansions that may alter the option names and values MUST NOT be performed.
> >>> 
> >>> I have no strong opinion on MUST vs must here and I usually happily
> >>> follow the advice of IESG members on RFC 2119 keywords. ;-)
> >> 
> >> Ok, my suggestion is to use non-normative “ought to” rather than 2119 MUST.
> > 
> > Seriously?
> 
> Yes, this comes up all the time in IESG eval and I would be willing to bet that another AD will comment on the use of lowercase must.

I do what you recommend.

> > I have left the 'must' in (there are other occurances of
> > must) and I leave it to the discretion of the IESG to discuss this if
> > needed - and then I do whatever comes out of it.
> 
> Ok.

There are now three lowercase 'must' left. So IESG members searching
for musts have something left to look at. ;-) If you want me to replace
some of them with 'ought to' or other phrases, let me know.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>