Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions SPECS/moby-buildx/CVE-2021-44716.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Parent: db4efeb8 (http2: deflake TestTransportGroupsPendingDials)
Author: Damien Neil <dneil@google.com>
AuthorDate: 2021-12-06 14:31:43 -0800
Commit: Filippo Valsorda <filippo@golang.org>
CommitDate: 2021-12-09 12:49:13 +0000

http2: cap the size of the server's canonical header cache

The HTTP/2 server keeps a per-connection cache mapping header keys
to their canonicalized form (e.g., "foo-bar" => "Foo-Bar"). Cap the
maximum size of this cache to prevent a peer sending many unique
header keys from causing unbounded memory growth.

Cap chosen arbitrarily at 32 entries. Since this cache does not
include common headers (e.g., "content-type"), 32 seems like more
than enough for almost all normal uses.

Fixes #50058
Fixes CVE-2021-44716

Change-Id: Ia83696dc23253c12af8f26d502557c2cc9841105
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1290827
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-on: https://go-review.googlesource.com/c/net/+/369794
Trust: Filippo Valsorda <filippo@golang.org>
Run-TryBot: Filippo Valsorda <filippo@golang.org>
Trust: Damien Neil <dneil@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

diff -ru cli-20.10.27-orig/vendor/golang.org/x/net/http2/server.go cli-20.10.27/vendor/golang.org/x/net/http2/server.go
--- cli-20.10.27-orig/vendor/golang.org/x/net/http2/server.go 2024-02-05 08:53:30.802532951 -0800
+++ cli-20.10.27/vendor/golang.org/x/net/http2/server.go 2024-02-05 09:19:08.473430121 -0800
@@ -720,7 +720,15 @@
sc.canonHeader = make(map[string]string)
}
cv = http.CanonicalHeaderKey(v)
- sc.canonHeader[v] = cv
+ // maxCachedCanonicalHeaders is an arbitrarily-chosen limit on the number of
+ // entries in the canonHeader cache. This should be larger than the number
+ // of unique, uncommon header keys likely to be sent by the peer, while not
+ // so high as to permit unreaasonable memory usage if the peer sends an unbounded
+ // number of unique header keys.
+ const maxCachedCanonicalHeaders = 32
+ if len(sc.canonHeader) < maxCachedCanonicalHeaders {
+ sc.canonHeader[v] = cv
+ }
return cv
}

6 changes: 5 additions & 1 deletion SPECS/moby-buildx/moby-buildx.spec
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Summary: A Docker CLI plugin for extended build capabilities with BuildKi
Name: moby-%{upstream_name}
# update "commit_hash" above when upgrading version
Version: 0.7.1
Release: 17%{?dist}
Release: 18%{?dist}
License: ASL 2.0
Group: Tools/Container
Vendor: Microsoft Corporation
Expand All @@ -15,6 +15,7 @@ Source0: https://github.com/docker/buildx/archive/refs/tags/v%{version}.t
# Fixed in upstream v0.8.0. Can remove when we upgrade to that version.
Patch0: CVE-2022-21698.patch
Patch1: CVE-2023-44487.patch
Patch2: CVE-2021-44716.patch

BuildRequires: bash
BuildRequires: golang >= 1.17
Expand Down Expand Up @@ -45,6 +46,9 @@ cp -aT buildx "%{buildroot}/%{_libexecdir}/docker/cli-plugins/docker-buildx"
%{_libexecdir}/docker/cli-plugins/docker-buildx

%changelog
* Mon Feb 12 2024 Nan Liu <liunan@microsoft.com> - 0.7.1-18
- Address CVE-2021-44716 by patching vendored golang.org/x/net

* Wed Feb 07 2024 Daniel McIlvaney <damcilva@microsoft.com> - 0.7.1-17
- Address CVE-2023-44487 by patching vendored golang.org/x/net

Expand Down