Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2021-03-23 17:48:41 +0300
committerAnna Henningsen <anna@addaleax.net>2021-03-26 22:51:57 +0300
commit87aa3f1add031361a7bf86a3044c22a66d8cc47e (patch)
tree073044658239a815a69c235d000de4e84023abca /src/node_http2.cc
parent0671309d28bede23cc5012ba3ecb3e93560a147f (diff)
http2: treat non-EOF empty frames like other invalid frames
Use the existing mechanism that we have to keep track of invalid frames for treating this specific kind of invalid frame. The commit that originally introduced this check was 695e38be69a780417, which was supposed to proected against CVE-2019-9518, which in turn was specifically about a *flood* of empty data frames. While these are still invalid frames either way, it makes sense to be forgiving here and just treat them like other invalid frames, i.e. to allow a small (configurable) number of them. Fixes: https://github.com/nodejs/node/issues/37849 PR-URL: https://github.com/nodejs/node/pull/37875 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'src/node_http2.cc')
-rw-r--r--src/node_http2.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/node_http2.cc b/src/node_http2.cc
index 112a3a336e0..275284a147d 100644
--- a/src/node_http2.cc
+++ b/src/node_http2.cc
@@ -1335,7 +1335,11 @@ int Http2Session::HandleDataFrame(const nghttp2_frame* frame) {
frame->hd.flags & NGHTTP2_FLAG_END_STREAM) {
stream->EmitRead(UV_EOF);
} else if (frame->hd.length == 0) {
- return 1; // Consider 0-length frame without END_STREAM an error.
+ if (invalid_frame_count_++ > js_fields_->max_invalid_frames) {
+ Debug(this, "rejecting empty-frame-without-END_STREAM flood\n");
+ // Consider a flood of 0-length frames without END_STREAM an error.
+ return 1;
+ }
}
return 0;
}