You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This only affects the Helm Chart and not the upstream manifests
Summary
The workflow-role has excessive privileges, the worst being createpods/exec, which will allow kubectl exec into any Pod in the same namespace, i.e. arbitrary code execution within those Pods. If a user can be made to run a malicious template, their whole namespace can be compromised.
In Argo Workflows versions <=3.3, the Executor would usepatch and getpods. In versions >= 3.4 though, these permissions were replaced with create and patchworkflowtaskresults. The upstream code could also fallback to patchpod with a deprecation warning, although the upstream manifests no longer included this. In >=3.6, the legacy fallback will be removed.
Anyone who uses the provided workflow-role may be vulnerable to arbitrary code execution from a malicious template.
The role is currently installed by default. Fortunately though, the attached SA is not installed by default and would still have to be manually added as a serviceAccountName to a Workflow or template.
This affects versions of the argo-workflows Chart that use appVersion: 3.4 and above, which no longer need these permissions for the only available Executor, Emissary. It could also affect users below 3.4 depending on their choice of Executor in those versions.
The product performs an operation at a privilege level that is higher than the minimum level required, which creates new weaknesses or amplifies the consequences of other weaknesses.
Learn more on MITRE.
The product implements access controls via a policy or other feature with the intention to disable or restrict accesses (reads and/or writes) to assets in a system from untrusted agents. However, implemented access controls lack required granularity, which renders the control policy too broad because it allows accesses from unauthorized agents to the security-sensitive assets.
Learn more on MITRE.
Important
This only affects the Helm Chart and not the upstream manifests
Summary
The
workflow-rolehas excessive privileges, the worst beingcreatepods/exec, which will allowkubectl execinto any Pod in the same namespace, i.e. arbitrary code execution within those Pods. If a user can be made to run a malicious template, their whole namespace can be compromised.This privilege was used by the
k8sapiExecutor in older Argo Workflows versions <=3.3 when selected. In versions >=3.4, only the Emissary Executor is available, and it does not use any forms of elevated privileges. See also a summary of the Executors in an older version of the docs: https://argo-workflows.readthedocs.io/en/release-3.4/workflow-executors/.This was resolved by #3044
Details
The
workflow-rolehas excessive privileges:pods/execandpods/logpods/execis not needed.pods/execpermission could be used by thek8sapiExecutor. In versions >= 3.4, Emissary is the only Executor and it does not use this privilege.pods/logis not needed.pods/logpermission could be used by thek8sapiExecutor. In versions >= 3.4, Emissary is the only Executor and it does not use this privilege.podsis not needed.patchandgetpods. In versions >= 3.4 though, these permissions were replaced withcreateandpatchworkflowtaskresults. The upstream code could also fallback topatchpodwith a deprecation warning, although the upstream manifests no longer included this. In >=3.6, the legacy fallback will be removed.k8sapiExecutor would usewatchPoC
Install per instructions with a Workflow SA:
Run Workflow that execs into the Controller
Impact
Anyone who uses the provided
workflow-rolemay be vulnerable to arbitrary code execution from a malicious template.The role is currently installed by default. Fortunately though, the attached SA is not installed by default and would still have to be manually added as a
serviceAccountNameto a Workflow or template.This affects versions of the
argo-workflowsChart that useappVersion: 3.4and above, which no longer need these permissions for the only available Executor, Emissary. It could also affect users below 3.4 depending on their choice of Executor in those versions.