Skip to content
Closed
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
42 changes: 42 additions & 0 deletions SPECS/etcd/CVE-2026-33814.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
From 7e9e82f8c3033974b16d93835521f6e133a7c9aa Mon Sep 17 00:00:00 2001

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patch looks good w.r.t upstream.

The single vendor/golang.org/x/net/http2/transport.go hunk matches upstream golang/net 1e71bd8 — same move of the s.Valid() call from inside the SettingEnableConnectProtocol case to the top of the ForeachSetting callback. ✓

Omitting the upstream http2/transport_test.go hunk is fine — that file isn't shipped in the vendored snapshot.

From: AllSpark <allspark@microsoft.com>
Date: Thu, 14 May 2026 09:00:37 +0000
Subject: [PATCH] http2: prevent hanging Transport due to bad SETTINGS frame

This CL backports https://go.dev/cl/761581 to x/net.

Fixes golang/go#78476
Fixes CVE-2026-33814

Upstream-reference: https://github.com/golang/net/commit/1e71bd86e4a302b4e731bc06da6eb51679c7bd49.patch
---
vendor/golang.org/x/net/http2/transport.go | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go
index 8cf64b7..3b514a3 100644
--- a/vendor/golang.org/x/net/http2/transport.go
+++ b/vendor/golang.org/x/net/http2/transport.go
@@ -2865,6 +2865,9 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error {

var seenMaxConcurrentStreams bool
err := f.ForeachSetting(func(s Setting) error {
+ if err := s.Valid(); err != nil {
+ return err
+ }
switch s.ID {
case SettingMaxFrameSize:
cc.maxFrameSize = s.Val
@@ -2896,9 +2899,6 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error {
cc.henc.SetMaxDynamicTableSize(s.Val)
cc.peerMaxHeaderTableSize = s.Val
case SettingEnableConnectProtocol:
- if err := s.Valid(); err != nil {
- return err
- }
// If the peer wants to send us SETTINGS_ENABLE_CONNECT_PROTOCOL,
// we require that it do so in the first SETTINGS frame.
//
--
2.45.4

8 changes: 7 additions & 1 deletion SPECS/etcd/etcd.spec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Summary: A highly-available key value store for shared configuration

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release bump, Patch1 declaration and changelog entry look good.

Non-blocking observation: PATCH1 is applied to all 5 components (server, etcdctl, etcdutl, tools/etcd-dump-db, tools/etcd-dump-logs), whereas the existing PATCH0 (CVE-2026-29181) is only applied to the first three. The Build packages task succeeded on both archs so the tools' vendor tarballs do contain vendor/golang.org/x/net/http2/transport.go — this PR's broader coverage looks correct. Worth keeping in mind for any future re-issue of CVE-2026-29181.

Name: etcd
Version: 3.5.30
Release: 1%{?dist}
Release: 2%{?dist}
License: ASL 2.0
Vendor: Microsoft Corporation
Distribution: Azure Linux
Expand Down Expand Up @@ -45,6 +45,7 @@ Source1: etcd.service
# -cJf [tarball name] [folder to tar]
Source2: %{name}-%{version}-vendor.tar.gz
Patch0: CVE-2026-29181.patch
Patch1: CVE-2026-33814.patch
BuildRequires: golang >= 1.16

%description
Expand Down Expand Up @@ -73,6 +74,7 @@ for component in server etcdctl etcdutl; do
pushd $component
tar --no-same-owner -xf %{_builddir}/%{name}-%{version}/vendor-$component.tar.gz
patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f --input=%{PATCH0}
patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f --input=%{PATCH1}
go build \
-o %{ETCD_OUT_DIR} \
-ldflags=-X=go.etcd.io/etcd/api/v3/version.GitSHA=v%{version}
Expand All @@ -86,6 +88,7 @@ mkdir -p %{ETCD_TOOLS_OUT_DIR}
for component in etcd-dump-db etcd-dump-logs; do
pushd tools/$component
tar --no-same-owner -xf %{_builddir}/%{name}-%{version}/vendor-$component.tar.gz
patch -p1 -s --fuzz=0 --no-backup-if-mismatch -f --input=%{PATCH1}
go build \
-o %{ETCD_TOOLS_OUT_DIR}
popd
Expand Down Expand Up @@ -147,6 +150,9 @@ install -vdm755 %{buildroot}%{_sharedstatedir}/etcd
/%{_docdir}/%{name}-%{version}-tools/*

%changelog
* Wed May 27 2026 Ratiranjan Behera <v-ratbehera@microsoft.com> - 3.5.30-2
- Patch CVE-2026-33814

* Tue May 19 2026 Akarsh Chaudhary <v-akarshc@microsoft.com> - 3.5.30-1
- Upgrade to version 3.5.30 (fixes CVE-2026-44283).

Expand Down
Loading