[secdir] Re: draft-ietf-rtgwg-qos-model-15 ietf last call Secdir review

Prachi Jain <prachi.jain1288@gmail.com> Mon, 10 August 2026 14:22 UTC

Return-Path: <prachi.jain1288@gmail.com>
X-Original-To: secdir@mail2.ietf.org
Delivered-To: secdir@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id BBB7D1272ED59 for <secdir@mail2.ietf.org>; Mon, 10 Aug 2026 07:22:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1786371774; bh=nXl8Qn36fI4FllnDpkfr9dGLIyKEHoiaXrt1SFAJELs=; h=References:In-Reply-To:From:Date:Subject:To:Cc; b=MgRlomVsOdOW+8ygski2JvnDcR1uhDUUZrr9BR65/v0JDopaNhH1Hbgd20XLn+COI Hyb2Ya6tfjoS08hIfDSpYg6w3iIyEa/oyDuD0/pC2VTqilJX9ne/ShBnFRoUHxqK9Z iwfAKDnYVBXj7d4ELXol+htxoa5g/D4G7QvHL1os=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.848
X-Spam-Level:
X-Spam-Status: No, score=-1.848 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CQ5jOGiUHzn6 for <secdir@mail2.ietf.org>; Mon, 10 Aug 2026 07:22:53 -0700 (PDT)
Received: from mail-qv1-xf34.google.com (mail-qv1-xf34.google.com [IPv6:2607:f8b0:4864:20::f34]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id ABDBB1272ED40 for <secdir@ietf.org>; Mon, 10 Aug 2026 07:22:53 -0700 (PDT)
Received: by mail-qv1-xf34.google.com with SMTP id 6a1803df08f44-8f23e851626so11508686d6.3 for <secdir@ietf.org>; Mon, 10 Aug 2026 07:22:53 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1786371773; cv=none; d=google.com; s=arc-20260327; b=bpeEwYDI0dQIzEXhRHLfyZBLh2djUpino00vyU0ME0YpRjh7ls7f7f5yWgsE5dbPYX dYztSTvnCGFHZWJkPoOSTKFald1OpJraWt/WL9HmiE9srGe0QTMk2ORlTLO9HheKNvMT Zxras3cFyctNQDE+m3RMwA0XfDKIbmMoc1RW18M4VQ0e+LVa8caIuqQ/15cj633lbm5H KXtu55r2cibEX4GoGt6wr5h5hgEzRNSLdbnLsGX+OXklvUgcAgPPDP660byw+19szfLc yxqV3J0U/LVYIxa2By6tE+zrarY3NpIWLeZTtwcH+FfxILOLTtS2uV92VK+/6tnMJfhq BOUw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=YpFOXGMFAiLPE+FkMbWAbd4rFUDiuOnkbPi5MUgxt5E=; fh=H0t75aC9a0EuWaC+0AiSM49S6QcUCKSLmC4RlRwtOeo=; b=QHrHlTnuV8QQsJg+WrI0f6ZrI8qFItO8G8aaoRhb1f6rs0YWFjKDHG/r0VaDYdMEXC qCLPJpJ3cBAddWJBdmtacb3Xf+Jf+G4ObPBSbUM6azYvL37sREYA5RaFacIsIkfhoxVz 58IOiZGtXF9y4NfSN1kYQG9cQULDKCz+SARJH4ZZO2zq40H9fZLzAzKWn+Ks9dTkJ+SK H/8U19O9bceK+VUVDAqmDdHNcxOIKhK4WZ2G0bMlbdIsExqVo7IUqWRL8D881YIXwwLV accBIB9O84h/0yoQQRVCj8cS1OkyWCrTHNK/6v1QiERafcVl29NTO6oAlKYrTHRKojJS Wepw==; darn=ietf.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786371773; x=1786976573; darn=ietf.org; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=YpFOXGMFAiLPE+FkMbWAbd4rFUDiuOnkbPi5MUgxt5E=; b=dLEXETY9lQp7KR7Q4CsAf9SjT2T7NQ8421ViuWkOx64dQIEZObylzjvvPLLA/ggHUP 6Uvlg3QDQaCa0KDTRCap+3VQ4yhGEbzIgXnMWQradnRJycEjm8rsMCycpinRFLd6LltI r7FxXSIhpCiFW03VY0v5xt4RfHZdpWlgY54c4N1aBvYvLwaQxUC9Hpotp7WW1SmR0Nej Iujl6wUSt+QyL68QdD1NlWz/k+afZpapofikuyfPw3L/YndsWWBITN/m7mFy33oNZ0r9 BKzph/Nu92rk7QLeXn3qgPyAhzT8UPYdzA9BaOx1YDRsGECgv6/84nsfgTvRgxRnjOxL UjBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786371773; x=1786976573; h=content-type:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=YpFOXGMFAiLPE+FkMbWAbd4rFUDiuOnkbPi5MUgxt5E=; b=DKtD8xowu5mdA3o4xpsGzvzwkWutLg14kU3pVW2a7WzfOD33+dQ/m+fNqvbMcnLPiH fm5uOirPpvvBSu32spA2iRfQBRmzFaPWtjxwo2P4Hva06pvFp+kBSqEKI3OcvBNFFB37 qVsZFg1quNM9dh4e1pm18tyP9kusGWNlUFkChwBmPAIqOmFIgoEmE5piBzmGeROiGIMb uV9Qz0PbPyfJN1IsHRJd76Nk3zGvad39xbto+T6tRYPQqI8lDd1/jCXM0vFw2k1CHKao X7VvyaX1Vjjfht7nAKJCJkU28JSGERh3Ojehh9JXBxajjae4UQmuPsVKNz5FY/kbo9fk 27sA==
X-Gm-Message-State: AOJu0Yz9tJpbVlnkKRmP1C/4/Vq1d1rp/sTrqVF7QAa+KaxTLhMf1PiW bj4xJerwicCYq+cglpfn6609rpon34gDbr/gA36qDL7yeJa3rNMVClEvXsZM2i0HFKPspqH8NyS SfW1inerQz/eegwPZI2ZH4KTuM2RMQMAO7g==
X-Gm-Gg: AR+sD13ZGRPXw5pwOIxHQ+KrVPr6FjKhdGXGhA2iOTD/MG9B+CNaBAHiugAuIefY0tC 8/+E1XbHMqI0XOfjdDr+QLzo8W26OpS9k6KCJS+eOXxmRfyJboagjTUVRAdTpVTOS4EPUzPBLmC ftjpbZ8ul8eo9L4hmLG4obhqNCaMG95d8Ov3J0t/xRRYmH6F4lDPW866Dk0lTc41eZTe/4wI5Wi klu1hkOAhfZxpfJZWEfaZqzJI++sNxwFXbYk8jUzT6tXVZKWKmBW35FoeQp/rlz24GeVW4lfxtM qN3iXluL/WH8/sQTOeQOPXeZNl+AwblKyrMle4bjYGedTlgoKeLmWhmgBCcvE9eWVusWWZPGzx2 gWBGNmQGaeMnKYaBi9nEuKQ/N92hFIQw/ADlx01nLZgB+CVdzX/1ro65WvuzNwfB+DiO0Mg==
X-Received: by 2002:a05:6214:3109:b0:8ee:7c26:8bb8 with SMTP id 6a1803df08f44-90881199c13mr516022096d6.9.1786371772875; Mon, 10 Aug 2026 07:22:52 -0700 (PDT)
MIME-Version: 1.0
References: <178571286344.1803828.2635234331310539309@dt-datatracker-d4d6ff9d9-fsx7d> <IA1PR11MB6468628D2B39C1D8EB6E3A95C2D02@IA1PR11MB6468.namprd11.prod.outlook.com>
In-Reply-To: <IA1PR11MB6468628D2B39C1D8EB6E3A95C2D02@IA1PR11MB6468.namprd11.prod.outlook.com>
From: Prachi Jain <prachi.jain1288@gmail.com>
Date: Mon, 10 Aug 2026 09:22:41 -0500
X-Gm-Features: AUfX_mxi4qzWa_wgteppRciClAjattL0WEvsb_LlMmwpHc304BWaczG1q1isB8Q
Message-ID: <CAA1-vB19BwHmWyDJODGp40j8JN91Zk9MBQkg4kwpBR1wJLC=-A@mail.gmail.com>
To: "Aseem Choudhary (asechoud)" <asechoud@cisco.com>
Content-Type: multipart/alternative; boundary="000000000000f585dc0658b216ea"
Message-ID-Hash: 6ZTLUFZYE3SXZ4E74OY2OFLDD2LD5GRN
X-Message-ID-Hash: 6ZTLUFZYE3SXZ4E74OY2OFLDD2LD5GRN
X-MailFrom: prachi.jain1288@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-secdir.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "secdir@ietf.org" <secdir@ietf.org>, "draft-ietf-rtgwg-qos-model.all@ietf.org" <draft-ietf-rtgwg-qos-model.all@ietf.org>, "last-call@ietf.org" <last-call@ietf.org>, "rtgwg@ietf.org" <rtgwg@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [secdir] Re: draft-ietf-rtgwg-qos-model-15 ietf last call Secdir review
List-Id: Security Area Directorate <secdir.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/secdir/ZANDOXhD91Qtt9Mk4UFiEYd7mSU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/secdir>
List-Help: <mailto:secdir-request@ietf.org?subject=help>
List-Owner: <mailto:secdir-owner@ietf.org>
List-Post: <mailto:secdir@ietf.org>
List-Subscribe: <mailto:secdir-join@ietf.org>
List-Unsubscribe: <mailto:secdir-leave@ietf.org>

Thank you. That looks good.

On Mon, Aug 10, 2026 at 2:33 AM Aseem Choudhary (asechoud) <
asechoud@cisco.com> wrote:

> Hi Prachi,
>
> Thanks for the detailed review comments. Please see my response inline
> starting with [AC]
> We plan to address all Must-fix items and smaller points 7–11 in draft -16
> .
>
> Regards,
> Aseem
>
> *From: *Prachi Jain via Datatracker <noreply@ietf.org>
> *Date: *Sunday, August 2, 2026 at 4:21 PM
> *To: *secdir@ietf.org <secdir@ietf.org>
> *Cc: *draft-ietf-rtgwg-qos-model.all@ietf.org <
> draft-ietf-rtgwg-qos-model.all@ietf.org>; last-call@ietf.org <
> last-call@ietf.org>; rtgwg@ietf.org <rtgwg@ietf.org>
> *Subject: *draft-ietf-rtgwg-qos-model-15 ietf last call Secdir review
>
> Document: draft-ietf-rtgwg-qos-model
> Title: YANG Models for Quality of Service (QoS) in IP networks
> Reviewer: Prachi Jain
> Review result: Not Ready
>
> Hello,
>
> I've finished my review. I'm not a routing person, so I've looked at this
> purely from the security side, apologies in advance if I've misread
> anything
> domain-specific.
>
> Few things I think need fixing, then a handful of smaller notes.
>
> Must fix
>
> 1.  Section 6 names nodes that don't exist.
>
>       - Three of them. voilate-pkts and voilate-bytes are just typos - the
>       modules spell them violate-pkts and violate-bytes.
> [AC]:  Section 6 will be corrected to violate-pkts and violate-bytes,
> matching ietf-qos-oper.
>
> - red-drop-bytes
>       doesn't appear anywhere in the document at all; I'm assuming it means
>       red-statistics/drop-bytes, though it could equally be
>       red-statistics/wred-stats/drop-bytes. Could the authors confirm
> which?
> [AC]: I will change red-drop-bytes => red-statistics, since it describes
> both
>        drop or marked for ECN
>
>
>    - The third one isn't a typo. Section 6 refers to "the clear RPC
>
>       operation", but clear is a YANG action, and there's no rpc statement
>       anywhere in the seven modules. This matters for more than tidiness:
> under
>       RFC 8341 an action is access-controlled through the data node it
> hangs
>       off, while an RPC is controlled by an rpc-name rule. Someone
> following
>       Section 6 would write the wrong kind of NACM rule.
> [AC]: Agree, ‘clear’ is a YANG action. I will replace ‘clear RPC
> operation’ with ‘clear action’
>
> - While I'm here, the
>       node names are given without paths. drop-pkts and drop-bytes each
> turn up
>       in four different places in ietf-qos-oper, so there's no way to tell
>       which is meant.
> [AC]: I would add the context to avoid any ambiguity.
>
> 2.  RFC 8341 (NACM) should be a normative reference.
>       - It's currently in Section 9.2 with the informative ones. The
> template
>       is explicit that it has to be normative, and given NACM is the only
>       access control mechanism Section 6 leans on, that seems right. -
> Worth
>       adding RFC 9907 too -  it's the current YANG guidelines RFC and it
> isn't
>       cited anywhere.
> [AC]:   Agree, I will move to Section 9.1 (Normative References), and
> Section 6
> will state that access control for configuration, operational data, and
> actions is
> expected to be enforced using NACM per RFC 8341.
>
>  [RFC9907] will be added as a normative reference and cited in Section 6
>
>  as the basis for restructuring the security considerations text.
>
> 3.  The writable-node list leaves out the disruptive ones.
>       - The template requires writable nodes that could be especially
>       disruptive to be listed by name. Section 6 lists three fairly generic
>       ones - filter-operation, filter and action - and skips the ones I'd
>       actually worry about: - qos-target-policy is what binds a policy to
> an
>       interface, so removing an entry removes the traffic treatment from
> that
>       interface and direction. That's the biggest one and it isn't there at
>       all. - discard, which is an action-type identity that does what it
> says.
>       - dscp-mark and dscp-marking - RFC 2475 Section 6 already describes
> DSCP
>       remarking as a theft-of-service vector. - The meter rates
>       (committed-information-rate, peak-information-rate, and the three
> burst
>       sizes), which decide what traffic gets treated as conforming versus
>       violating.
> [AC]:I will expand the writable-node analysis beyond the generic
> classifier/action entries,
> and add 'qos-target-policy', ‘discard’, ‘dscp-mark’, ‘meter-rates' as high
> impact writable.
>
>
> 4.  The readable-node list is incomplete too.
>       - Section 6 covers the metering counters and the drop/ECN ones, but
> not
>       classified-pkts, classified-bytes or classified-rate. Those strike
> me as
>       more sensitive than the ones that are listed, because they give away
>       policy structure rather than volume - someone who can read them and
> also
>       inject traffic can work out which prefixes, ports and DSCP values the
>       operator matches on, without ever seeing the config.
>
> [AC]: We will add 'classified-pkts', 'classified-bytes', and '
> classified-rate' under the
>
>      classifier statistics paths, and note that they can reveal which
> classifiers/policies are
>
>      matching traffic and thus infer policy structure when combined with
> injected probe traffic.
>
>  - Also missing: the
>       queue occupancy leaves (queue-current-size-bytes and friends), which
> are
>       a live readout of link congestion, and policy-name, which is an
>       unconstrained string, so the model can't really assume it's free of
>       customer-identifying information.
>
> [AC]: We will add:
>
>    - queue-current-size-bytes
>    - queue-average-size-bytes
>    - queue-peak-size-bytes
>
> under .../stats-per-direction/queueing/, noting they expose live
> congestion state
>
> As well as, we will add 'policy-name' under stats-per-direction and note
> that unconstrained
>
> string values may contain operator- or customer-identifying information
> and should be
>
> read-protected accordingly.
>
> 5.  Section 6 needs rebuilding from the current template.
>       - Using the current template is mandatory under RFC 9907 Section
> 3.7, and
>       this one predates the 2025 rewrite.
>
>  [AC]. Section 6 will be regenerated from the current RFC 9907 YANG
> security
>
>  considerations template rather than incrementally patched.
>
>  - Four gaps noticed:
>           - The mutual authentication requirement is missing - the template
>           asks for secure transport and mutual authentication, and Section
> 6
>           only has the first. - ietf-qos-types needs its own paragraph,
> since
>           it defines only identities, typedefs and features and the
> template
>           has specific text for that case. - The reused-groupings
> paragraph is
>           absent, which matters because ietf-traffic-policy and
> ietf-qos-oper
>           both augment /if:interfaces/if:interface, so RFC 8343's security
>           considerations should be pointed at. - Section 6 says "The YANG
>           module specified in this document" when Section 5 registers
> seven.
>       - Easiest fix is probably to regenerate the whole section from the
>       template on the IETF wiki and then re-add the module-specific parts.
>
> [AC]:  We will add explicit text that management access SHOULD use
>
>        secure transport with mutual authentication (e.g., TLS client
>
>        authentication or SSH key-based client authentication) before
>
>        configuration or operational data is exposed.
>
>        We will add a dedicated ietf-qos-types paragraph using
>
>        the template language for types-only modules (no config/state
>
>       data nodes; identities/features affect which nodes appear in
>
>       other modules).
>
>     Opening text will read “The YANG modules specified in this document…”
>
>       and Section 6 will include per-module subsections or paragraphs
>
>      for all seven modules.
>
> 6.  Nothing stops a policy referencing itself.
>       - This is the one thing in the YANG itself I'd hold the document for.
>
> [AC]: Agree. We agree this is a modeling defect and will fix it in -16.
>
>       - The child-policy grouping has a single leaf name of type string -
> not a
>       leafref, and with no must or when on it. So it can name a policy that
>       doesn't exist, and the document doesn't say what a server should do
> about
>       that
>
> [AC]: Agree. We will:
>
>    1. Change child-policy/name from string to leafref pointing to
>    /traffic-policy:policies/policy/name
>    2. Add prose that a reference to a non-existent policy MUST be
>    rejected at validation/commit time (consistent with other leafref
>    usage in the model)
>
> - More concerning, it can form a cycle: A's child names B, B's
>       child names A. That satisfies every constraint in the document, and
> since
>       nothing prohibits it or says how to handle it, an implementation
>       resolving the chain without a depth limit wouldn't terminate.
>
> [AC]: Agree. We will add normative text that implementations MUST reject:
>
>    - direct self-reference (child names containing policy), and
>    - cyclic child-policy chains
>
>  - I suspect this is just an oversight, since the same document uses
> leafref for
>       meter-reference and queue-policy-name. Suggest making it a leafref,
>       adding a constraint against self-reference, and saying explicitly
> that
>       servers must reject cyclic hierarchies.
> [AC]: Agree exactly as suggested. leafref + anti-self-reference +
> anti-cycle rejection
>  will be added; behavior will be documented in the module description
> and/or
> Section 3/4 prose and reflected in Security Considerations.
>
> Smaller points
> 7.  The clear action has no NACM protection. RFC 8341's exec-default is
> permit,
> and nothing here overrides it - ietf-netconf-acm isn't imported by any of
> the
> seven modules. So with NACM on but no rule written for this action, any
> authenticated user can invoke it, including one with no write access.
> Adding
> nacm:default-deny-all is a recommendation rather than a hard requirement,
> but
> describing the sensitivity isn't.
> [AC]: Agree, we will modify:
>
>    - Section 6 will describe clear as sensitive (resets operational
>    counters;
>    can hide evidence of misbehavior or disrupt monitoring).
>    - Section 6 will note that with default NACM exec-default = permit,
>    operators
>    MUST configure explicit invoke rules unless they intend all
>    authenticated
>    users to clear counters.
>    - In ietf-qos-oper, we will 'import ietf-netconf-acm' and add
>    'nacm:default-deny-all' on the clear action (recommended
>    hardening per RFC 8341).
>
>
> 8.  Rate values aren't constrained against their unit. value is an
> unbounded
> uint64 and unit can be percent, with nothing tying them together, so value:
> 4000, unit: percent validates fine. Same story for burst-value, and neither
> leaf is mandatory. A must capping it at 0-100 when the unit is percent
> would
> cover it.
>
> [AC]: Agree. In rate-value-unit we will add:
>
> must "not(../unit = 'qos-types:percent') or (. <= 100)”;
>
> We will review burst-value / burst-unit for the same pattern where
> percentage
>
> units apply, and clarify in descriptions when leaves are required for a
> valid
>
>  configuration.
> 9.  The scheduled clear is underspecified. started-at takes a future
> timestamp,
> but there's no bound on how far ahead, no way to list or cancel something
> pending, no notification when it fires, and no stated behaviour for a
> timestamp
> in the past.
>
> [AC]: Agree. We will add implementation guidance in the clear action
> description and Section 4.4:
>
> Section 6 will note that scheduled clear can affect monitoring/forensics
> timing and
>
> should be invoke-restricted like immediate clear.
> 10. RFC 2475 Section 6 isn't referenced. Its security section already
> covers
> theft of service via DSCP remarking, denial of service through marking,
> and the
> domain trust boundary - all of which this document configures. Right now
> Section 6's only line on the subject is that the action "decides what
> action
> will be taken on the packet."
> [AC]: Agree. We will:
>
>    - Add [RFC2475] to references (informative, if not already cited
>    elsewhere)
>    - Expand Section 6 to reference RFC 2475 Section 6 for
>    theft-of-service via
>    remarking, DoS via marking, and DiffServ domain trust-boundary
>    considerations
>    - Replace the generic “action decides what will be taken on the
>    packet” text with
>    specific treatment of marking, metering, discard, and policy binding
>    risks
>
>
> 11. Configuration is readable as well as writable. The ietf-diffserv
> filters
> hold source and destination prefixes, port ranges, protocol numbers and
> DSCP
> values. The template is explicit that the readable-nodes analysis covers
> config
> nodes too, since they can be read via get-config, but Section 6 only looks
> at
> counters.
>
> [AC]: Agree. Section 6 readable-node analysis will explicitly include
> configuration
>
>  data readable via <get-config> / RESTCONF, including at minimum:
>
>    - /classifiers/classifier/filter/* (all diffserv filter parameters)
>    - /policies/policy/classifier/inline/filter/*
>    - /policies/policy/classifier/action/*
>    - /interfaces/interface/qos-target-policy
>    - /meters/meter/*, /queues/queue/*
>
>
>
> Happy to discuss further.
> Thanks,
>
>
>