Skip to content

fix(security): cherry-pick CVE-2026-31892 and CVE-2026-28229 fixes#341

Merged
jessesuen merged 3 commits into
akuity:release-3.7.10from
himeshpanc:cve-fixes/release-3.7.10
May 4, 2026
Merged

fix(security): cherry-pick CVE-2026-31892 and CVE-2026-28229 fixes#341
jessesuen merged 3 commits into
akuity:release-3.7.10from
himeshpanc:cve-fixes/release-3.7.10

Conversation

@himeshpanc
Copy link
Copy Markdown

Fixes #N/A

Motivation

The akuity v3.7.10 build currently covers 4 of the 6 CVEs that are fixed in v3.7.11. Two High-severity first-party security fixes are only present in the upstream `release-3.7.11` branch:

We cannot simply move users to v3.7.11 because v3.7.11 introduces a separate runtime-breaking change (commit `477442702` — strict expression resolution for `tasks.`/`steps.`). This PR cherry-picks just the two security fixes without pulling in the runtime breakage.

Modifications

  • Cherry-pick `9064c7f89` — CVE-2026-31892 podSpecPatch security check (8-line addition to `workflow/controller/operator.go` + tests)
  • Cherry-pick `8f505a558` — CVE-2026-28229 `auth.CanI()` checks in informer cache paths (`server/clusterworkflowtemplate/`, `server/workflowtemplate/`)
  • One follow-up commit adapts the `TestReferenceModeBlocksPodSpecPatch` test to `release-3.7.10`'s API (the upstream test was written against a newer `logging` package and 3-arg `newWorkflowOperationCtx` signature that don't exist on this branch). The security fix in `operator.go` is untouched.

Verification

  • Both cherry-picks applied cleanly with no merge conflicts
  • New `TestReferenceModeBlocksPodSpecPatch` test (4 sub-tests) — all pass after API adaptation
  • Existing auth tests in `server/clusterworkflowtemplate` and `server/workflowtemplate` — pass
  • Full `./workflow/...` and `./server/...` regression sweep — green (only pre-existing unrelated UI bundle failures in `server/apiserver` and `server/static` from missing local UI build, unrelated to these changes)

Documentation

No documentation changes needed — these are scoped security backports.

Joibel and others added 3 commits May 4, 2026 09:19
podSpecPatch on a user-submitted Workflow bypasses all security
settings defined in the referenced WorkflowTemplate, even when
templateReferencing is set to Strict or Secure. The Strict mode
check only verifies that workflowTemplateRef is present but does
not inspect other spec fields that can override the template.
With this commit, workflows that include podSpecPatch when the
controller requires template referencing are rejected.

Signed-off-by: Ville Vesilehto <ville@vesilehto.fi>
Co-authored-by: Ville Vesilehto <ville@vesilehto.fi>
The informer-based caching introduced in f22ae3b bypassed caller
authorization checks when reading templates.
This adds explicit auth.CanI() checks before returning data from the
informer cache, ensuring proper authorization while preserving
performance benefits.

Signed-off-by: Alan Clucas <alan@clucas.org>
The cherry-picked test from upstream (commit 9064c7f) was written
against a newer codebase that uses the `logging` package and a
3-arg signature for `newWorkflowOperationCtx`. Adapt the test to
use release-3.7.10's existing API: `context.Background()` and
`newWorkflowOperationCtx(wf, controller)`.

The security fix in operator.go is unchanged. All 4 sub-tests pass.
@himeshpanc himeshpanc requested a review from jessesuen May 4, 2026 04:08
@jessesuen jessesuen merged commit e494b36 into akuity:release-3.7.10 May 4, 2026
78 of 83 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants