[HIGH] Patch kubernetes for CVE-2026-84445, CVE-2026-84304 and CVE-2026-83530 by upgrading grpc and cel-go vendor modules - #18896
Open
Sumit Jena (SumitJenaHCL) wants to merge 2 commits into
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Author
|
Buddy build has passed. |
CVE-2026-37236 [MEDIUM] (microsoft#18757) Co-authored-by: Aditya Singh <v-aditysing@microsoft.com>
Sumit Jena (SumitJenaHCL)
force-pushed
the
topic_kubernetes-3.0
branch
from
September 17, 2026 22:41
9614231 to
29ea313
Compare
Sumit Jena (SumitJenaHCL)
force-pushed
the
topic_kubernetes-3.0
branch
from
September 18, 2026 01:33
29ea313 to
6365be9
Compare
Sumit Jena (SumitJenaHCL)
marked this pull request as ready for review
September 18, 2026 16:00
jslobodzian
approved these changes
Sep 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge Checklist
All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)
*-staticsubpackages, etc.) have had theirReleasetag incremented../cgmanifest.json,./toolkit/scripts/toolchain/cgmanifest.json,.github/workflows/cgmanifest.json)./LICENSES-AND-NOTICES/SPECS/data/licenses.json,./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md,./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)*.signatures.jsonfilessudo make go-tidy-allandsudo make go-test-coveragepassSummary
patch kubernetes for CVE-2026-84304, CVE-2026-84445 and CVE-2026-83530
Upgraded google.golang.org/grpc from v1.58.3 => v1.83.2
Upgraded github.com/google/cel-go from v0.17.8 => v0.31.0
CVE-2026-84304 and CVE-2026-84445 are both in
google.golang.org/grpcand are fixed together by v1.83.2. CVE-2026-83530 is ingithub.com/google/cel-goand is fixed by v0.31.0, which enforcesParserExpressionSizeLimitduring buffer construction instead of after it.kuberneteshad no vendor tarball before this change: the upstreamkubernetes-src.tar.gzships its ownvendortree, and every CVE so far has been fixed by patching that tree in place. Since two module upgrades were needed here, the vendor tree is now regenerated and shipped asSource2, which is also why 20 existing patches can be dropped.Change Log
[AutoPR- Security] Patch kubernetes for CVE-2026-78662, CVE-2026-56855, CVE-2026-37236 [MEDIUM] (#18757)from3.0-dev, whichfasttrack/3.0did not have, so this branch carries it forward and avoids a future merge conflict.Releaseis therefore 31, since 3.0-dev already uses 30.golang.org/x/crypto/ssh, which the x/crypto v0.57.0 bump supersedes - both reverse-apply cleanly against the regenerated tree.72123cd4is 525 commits ahead of v2.27.2, and the vendoredruntime/mux.gostill gates the override onisPathLengthFallbackalone, so the backport is still required.Source2(kubernetes-v1.30.10-vendor.tar.gz). It is produced withgo work vendor, notgo mod vendor: kubernetes is a Go workspace andgo mod vendorwould copy the 30staging/src/k8s.iomodules intovendor, which upstream does not do.golang.org/x/cryptov0.21.0 => v0.57.0. v0.55.0 (what the grpc bump pulls on its own) is already enough to supersede the CVE-2026-39829/39830/39834 backports this package carried, but is still reported against CVE-2026-56855 and CVE-2026-78662. Those affectgolang.org/x/crypto/ssh, which kubernetes imports only fromtest/e2e/framework, so no shipped binary is exposed - v0.57.0 is used purely to keep the vendored version clear of version-based scanners.BuildRequires: golang < 1.25=>golang >= 1.26. grpc v1.83.2 requiresgo 1.25.0and x/crypto v0.57.0 requiresgo 1.26.0, so thegodirective is raised to 1.26.0 across the root module,go.workand all 30 staging modules. Azure Linux ships golang 1.27.1.fix-cel-go-otelgrpc-api-migration.patch: cel-go replaced the protobuf-backed expression accessors with thecommon/astAPI (AstNode.Expr()now returnsast.Expr, constants are read viaAsLiteral()), and the grpc bump transitively moves otelgrpc past the removal ofUnaryClientInterceptor/StreamClientInterceptor. Both edits are ports of what kubernetes did upstream in release-1.31 and release-1.34 respectively.fix-vendor-modules-for-runc-backports.patch:CVE-2025-31133.patchandCVE-2025-52565.patchadd 12 packages tovendor(runc/internal/...,filepath-securejoin/pathrs-lite/...) without declaring them invendor/modules.txt. Go tolerates that at language level 1.22 but rejects it from 1.23 onwards, so this is required for any version of this bump. The language level recorded for those two modules is raised to go1.18 (the minimum that compiles the backported generics - deliberately not 1.22, which would change for-loop scoping for the rest of runc v1.1.12).fix-non-constant-format-strings.patch: theprintfvet analyzer is enabled from Go 1.24 and fails the kubelet test build on 5Eventfcalls that pass a message as the format string. Ported verbatim from upstream release-1.34. This is also a correctness fix - an event message containing%previously rendered asdisk usage 85%!e(MISSING)xceeds threshold.%check, which had been dead code: it referenced%{SOURCE2}when no Source2 existed, andcd-ed into asrc/directory that%prep -c -n %{name}never creates. It also never exportedFORCE_HOST_GO=y(only%builddid), so the harness honoured.go-versionand tried to fetch go1.22.12.%prepnow uses%autosetup -N -c -n %{name}followed by an explicit%autopatch -p1, so the vendor tree is swapped in between extraction and patching. This matches the pattern already used bycloud-provider-kubevirt.Does this affect the toolchain?
No -
kubernetesis not listed intoolchain_*.txtorpkggen_core_*.txt.Associated issues
Links to CVEs
Test Methodology
RUN_CHECK=ypackage build passed at1.30.10-31, producing all 8 subpackages.%checkexecuted for the first time in this spec's history:pkg/kubelet(23.4s),pkg/scheduler(8.8s),pkg/controller(1.4s) andpkg/proxy(1.1s) all pass, 0 failures. (pkg/kubectlandpkg/kubeapiserverreport[no test files], which is pre-existing.)%autopatchat--fuzz=0in the Release 31 build; the retained patches were each confirmed still required, and every dropped patch confirmed already fixed in the regenerated tree.%checksuites pass with the rebased CVE-2026-37236 patch applied.GO-2026-5841, klauspost/compress) is not applicable - it affects/s2, which is not vendored and not imported by any kubernetes source.