From nobody Sat Mar 21 12:40:12 2020
Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1])
 by ietfa.amsl.com (Postfix) with ESMTP id D8A2A3A0901
 for <quic-issues@ietfa.amsl.com>; Sat, 21 Mar 2020 12:40:10 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.1
X-Spam-Level: 
X-Spam-Status: No, score=-3.1 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key)
 header.d=github.com
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 2HzYFzoxxNUf for <quic-issues@ietfa.amsl.com>;
 Sat, 21 Mar 2020 12:40:05 -0700 (PDT)
Received: from out-19.smtp.github.com (out-19.smtp.github.com [192.30.252.202])
 (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by ietfa.amsl.com (Postfix) with ESMTPS id 8DD643A0900
 for <quic-issues@ietf.org>; Sat, 21 Mar 2020 12:40:00 -0700 (PDT)
Date: Sat, 21 Mar 2020 12:39:59 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com;
 s=pf2014; t=1584819599;
 bh=E+dtWMlt56R5+CTJl8bOgmuGI28hlfB995OiVQMjKw4=;
 h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID:
 List-Archive:List-Post:List-Unsubscribe:From;
 b=Vsc8OYqrflRsVsH3mBaDS5OSz9tiUwyNGCJqQrL/z6ktupPu7UneGmPWag3BlmVOv
 rVawAJdxgWvLVs0PKQ5psSc2xcQ1Tqmjzuz2XnOIQgFbSXH4+9rAfeC6f8inzJoJEX
 jiVxw2ulXcLTsiMLCBBzn4kf/KieZc7p/96OcSiA=
From: ianswett <notifications@github.com>
Reply-To: quicwg/base-drafts
 <reply+AFTOJK73PTZMNA3DTLYOHQF4QJHI7EVBNHHCFTHBIQ@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/3531/review/378944999@github.com>
In-Reply-To: <quicwg/base-drafts/pull/3531@github.com>
References: <quicwg/base-drafts/pull/3531@github.com>
Subject: Re: [quicwg/base-drafts] Import HTTP/2 Security Considerations (#3531)
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_5e766d8ff45c_53fa3fcaf28cd96027815e";
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: ianswett
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/OqHwoJkR_HqkE3xhvxx_bhMCOq8>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG
 <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>,
 <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>,
 <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 21 Mar 2020 19:40:11 -0000


----==_mimepart_5e766d8ff45c_53fa3fcaf28cd96027815e
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

ianswett commented on this pull request.



> +the origin server in the Cache-Control header field. However, this can cause
+issues if a single server hosts more than one tenant.  For example, a server
+might offer multiple users each a small portion of its URI space.
+
+Where multiple tenants share space on the same server, that server MUST ensure
+that tenants are not able to push representations of resources that they do not
+have authority over.  Failure to enforce this would allow a tenant to provide a
+representation that would be served out of cache, overriding the actual
+representation that the authoritative tenant provides.
+
+Pushed responses for which an origin server is not authoritative (see
+{{connection-reuse}}) MUST NOT be used or cached.
+
+## Denial-of-Service Considerations
+
+An HTTP/3 connection can demand a greater commitment of resources to operate

I'm not sure I know why this would be true, particularly for HTTP/2 vs HTTP/3?

> +might be done by setting multiple undefined SETTINGS parameters, unknown frame
+types, or unknown stream types.  Note, however, that some uses are entirely
+legitimate, such as optional-to-understand extensions and padding to increase
+resistance to traffic analysis.
+
+Header compression also offers some opportunities to waste processing resources;
+see Section 7 of [QPACK] for more details on potential abuses.
+
+All these features -- i.e., server push, unknown protocol elements, field
+compression -- have legitimate uses.  These features become a burden only when
+they are used unnecessarily or to excess.
+
+An endpoint that doesn't monitor this behavior exposes itself to a risk of
+denial-of-service attack.  Implementations SHOULD track the use of these
+features and set limits on their use.  An endpoint MAY treat activity that is
+suspicious as a connection error ({{errors}}) of type H3_EXCESSIVE_LOAD.

It might be worth calling out that this could close valid connections and cause requests to fail?

> +All these features -- i.e., server push, unknown protocol elements, field
+compression -- have legitimate uses.  These features become a burden only when
+they are used unnecessarily or to excess.
+
+An endpoint that doesn't monitor this behavior exposes itself to a risk of
+denial-of-service attack.  Implementations SHOULD track the use of these
+features and set limits on their use.  An endpoint MAY treat activity that is
+suspicious as a connection error ({{errors}}) of type H3_EXCESSIVE_LOAD.
+
+### Limits on Field Section Size
+
+A large field section ({{request-response}}) can cause an implementation to
+commit a large amount of state.  Header fields that are critical for routing can
+appear toward the end of a header field section, which prevents streaming of the
+header field section to its ultimate destination.  This ordering and other
+reasons, such as ensuring cache correctness, mean that an endpoint might need to

In my experience, this is quite likely a requirement, not just a might.  So I'd be inclined to make this stronger(ie: "likely needs to..."

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/3531#pullrequestreview-378944999
----==_mimepart_5e766d8ff45c_53fa3fcaf28cd96027815e
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<p></p>
<p><b>@ianswett</b> commented on this pull request.</p>

<hr>

<p>In <a href="https://github.com/quicwg/base-drafts/pull/3531#discussion_r396021765">draft-ietf-quic-http.md</a>:</p>
<pre style='color:#555'>&gt; +the origin server in the Cache-Control header field. However, this can cause
+issues if a single server hosts more than one tenant.  For example, a server
+might offer multiple users each a small portion of its URI space.
+
+Where multiple tenants share space on the same server, that server MUST ensure
+that tenants are not able to push representations of resources that they do not
+have authority over.  Failure to enforce this would allow a tenant to provide a
+representation that would be served out of cache, overriding the actual
+representation that the authoritative tenant provides.
+
+Pushed responses for which an origin server is not authoritative (see
+{{connection-reuse}}) MUST NOT be used or cached.
+
+## Denial-of-Service Considerations
+
+An HTTP/3 connection can demand a greater commitment of resources to operate
</pre>
<p>I'm not sure I know why this would be true, particularly for HTTP/2 vs HTTP/3?</p>

<hr>

<p>In <a href="https://github.com/quicwg/base-drafts/pull/3531#discussion_r396021941">draft-ietf-quic-http.md</a>:</p>
<pre style='color:#555'>&gt; +might be done by setting multiple undefined SETTINGS parameters, unknown frame
+types, or unknown stream types.  Note, however, that some uses are entirely
+legitimate, such as optional-to-understand extensions and padding to increase
+resistance to traffic analysis.
+
+Header compression also offers some opportunities to waste processing resources;
+see Section 7 of [QPACK] for more details on potential abuses.
+
+All these features -- i.e., server push, unknown protocol elements, field
+compression -- have legitimate uses.  These features become a burden only when
+they are used unnecessarily or to excess.
+
+An endpoint that doesn&#39;t monitor this behavior exposes itself to a risk of
+denial-of-service attack.  Implementations SHOULD track the use of these
+features and set limits on their use.  An endpoint MAY treat activity that is
+suspicious as a connection error ({{errors}}) of type H3_EXCESSIVE_LOAD.
</pre>
<p>It might be worth calling out that this could close valid connections and cause requests to fail?</p>

<hr>

<p>In <a href="https://github.com/quicwg/base-drafts/pull/3531#discussion_r396022266">draft-ietf-quic-http.md</a>:</p>
<pre style='color:#555'>&gt; +All these features -- i.e., server push, unknown protocol elements, field
+compression -- have legitimate uses.  These features become a burden only when
+they are used unnecessarily or to excess.
+
+An endpoint that doesn&#39;t monitor this behavior exposes itself to a risk of
+denial-of-service attack.  Implementations SHOULD track the use of these
+features and set limits on their use.  An endpoint MAY treat activity that is
+suspicious as a connection error ({{errors}}) of type H3_EXCESSIVE_LOAD.
+
+### Limits on Field Section Size
+
+A large field section ({{request-response}}) can cause an implementation to
+commit a large amount of state.  Header fields that are critical for routing can
+appear toward the end of a header field section, which prevents streaming of the
+header field section to its ultimate destination.  This ordering and other
+reasons, such as ensuring cache correctness, mean that an endpoint might need to
</pre>
<p>In my experience, this is quite likely a requirement, not just a might.  So I'd be inclined to make this stronger(ie: "likely needs to..."</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">&mdash;<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/quicwg/base-drafts/pull/3531#pullrequestreview-378944999">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AFTOJK44TYW5NQ66HQLQ7KDRIUJY7ANCNFSM4LOVOONA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AFTOJK4TF3HEBZRPHNQN25LRIUJY7A5CNFSM4LOVOONKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOC2LD3ZY.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/quicwg/base-drafts/pull/3531#pullrequestreview-378944999",
"url": "https://github.com/quicwg/base-drafts/pull/3531#pullrequestreview-378944999",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>
----==_mimepart_5e766d8ff45c_53fa3fcaf28cd96027815e--

