{"id":"CVE-2026-31892","published":"2026-03-11T15:41:14Z","modified":"2026-07-15T01:08:46Z","title":"WorkflowTemplate Security Bypass via podSpecPatch in Strict/Secure Reference Mode","vendor":"argoproj","product":"argo-workflows","tier":"tail","description":{"text":"Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. From 2.9.0 to before 4.0.2 and 3.7.11, A user who can submit Workflows can completely bypass all security settings defined in a WorkflowTemplate by including a podSpecPatch field in their Workflow submission. This works even when the controller is configured with templateReferencing: Strict, which is specifically documented as a mechanism to restrict users to admin-approved templates. The podSpecPatch field on a submitted Workflow takes precedence over the referenced WorkflowTemplate during spec merging and is applied directly to the pod spec at creation time with no security validation. This vulnerability is fixed in 4.0.2 and 3.7.11.","provenance":"source","from":"CVE.org"},"cvss":{"score":8.9,"severity":"HIGH","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:H","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.00518,"percentile":0.43927,"provenance":"source"},"cwes":[{"id":"CWE-863","name":"Incorrect Authorization"},{"id":"CWE-807","name":"Reliance on Untrusted Inputs in a Security Decision"}],"references":[{"url":"https://github.com/argoproj/argo-workflows/security/advisories/GHSA-3wf5-g532-rcrr","tags":["x_refsource_CONFIRM"]},{"url":"https://access.redhat.com/security/cve/CVE-2026-31892","tags":["vdb-entry","x_refsource_REDHAT"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2446551","tags":["issue-tracking","x_refsource_REDHAT"]},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-31892.json","tags":["x_sadp-csaf-vex"]},{"url":"https://access.redhat.com/errata/RHSA-2026:10184","tags":["vendor-advisory","x_refsource_REDHAT"]}],"priority":{"score":15.0,"factors":[{"name":"EPSS percentile","points":8.79},{"name":"CVSS severity","points":6.23}]},"vendorSlug":"argoproj","affectedVersions":[{"vendor":"argoproj","product":"argo-workflows","versions":[">= 4.0.0, < 4.0.2",">= 2.9.0, < 3.7.11"]}],"affected":[{"ecosystem":"Go","package":"github.com/argoproj/argo-workflows/v4","vulnerableRanges":["<4.0.2"],"patched":["4.0.2"],"from":["GHSA-3wf5-g532-rcrr","GO-2026-4681"],"provenance":"source"},{"ecosystem":"Go","package":"github.com/argoproj/argo-workflows/v3","vulnerableRanges":["<3.7.11"],"patched":["3.7.11"],"from":["GHSA-3wf5-g532-rcrr","GO-2026-4681"],"provenance":"source"},{"ecosystem":"Go","package":"github.com/argoproj/argo-workflows","vulnerableRanges":[">=2.9.0, <3.0.0","all versions"],"patched":[],"from":["GHSA-3wf5-g532-rcrr","GO-2026-4681"],"provenance":"source"},{"ecosystem":"Go","package":"github.com/argoproj/argo-workflows/v2","vulnerableRanges":[">=2.9.0"],"patched":[],"from":["GO-2026-4681"],"provenance":"source"}],"euvd":{"id":"EUVD-2026-11206","exploited":false,"provenance":"source"},"lineage":{"familyId":"fam-argoproj-argo-workflows-cve-2026-31892","children":[{"from":"CVE-2026-31892","to":"CVE-2026-42296","relation":"related","confidence":"high","kind":"lineage","evidence":[{"kind":"osv-related","provenance":"source","id":"GHSA-3775-99mw-8rp4","via":"reference","url":"https://github.com/argoproj/argo-workflows/security/advisories/GHSA-3wf5-g532-rcrr"},{"kind":"osv-related","provenance":"source","id":"GO-2026-5072","via":"reference","url":"https://github.com/argoproj/argo-workflows/security/advisories/GHSA-3wf5-g532-rcrr"}]},{"from":"CVE-2026-31892","to":"CVE-2026-54526","relation":"incomplete-fix","confidence":"high","kind":"lineage","evidence":[{"kind":"text","provenance":"source","relation":"incomplete-fix","quote":"Prior to 3.7.15 and 4.0.6, the allow-list fix for CVE-2026-31892 is incomplete because workflow/util/merge.go ValidateUserOverrides and SanitizeUserWorkflowSpec walk only the top-level fields of WorkflowSpec via reflection, and WorkflowSp…","from":"CVE.org","in":"CVE-2026-54526"}]}],"packageHistory":[{"cve":"CVE-2025-66626","published":"2025-12-09","fixed":"3.7.5","kev":false},{"cve":"CVE-2026-23960","published":"2026-01-21","fixed":"3.7.8","kev":false,"link":{"from":"CVE-2026-23960","to":"CVE-2026-31892","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"Go:github.com/argoproj/argo-workflows/v3","fromFixed":"3.7.8","toFixed":"3.7.11","daysApart":49}]}},{"cve":"CVE-2026-28229","published":"2026-03-11","fixed":"3.7.11","kev":false},{"cve":"CVE-2026-31892","published":"2026-03-11","fixed":"3.7.11","kev":false},{"cve":"CVE-2026-40886","published":"2026-04-23","fixed":"3.7.14","kev":false},{"cve":"CVE-2026-42294","published":"2026-05-09","fixed":"3.7.14","kev":false},{"cve":"CVE-2026-42296","published":"2026-05-09","fixed":"3.7.14","kev":false}],"package":"Go:github.com/argoproj/argo-workflows/v3"}}