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.
Important
This only affects the Helm Chart and not the upstream manifests
Summary
The
workflow-role
has excessive privileges, the worst beingcreate
pods/exec
, which will allowkubectl 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.This privilege was used by the
k8sapi
Executor 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-role
has excessive privileges:pods/exec
andpods/log
pods/exec
is not needed.pods/exec
permission could be used by thek8sapi
Executor. In versions >= 3.4, Emissary is the only Executor and it does not use this privilege.pods/log
is not needed.pods/log
permission could be used by thek8sapi
Executor. In versions >= 3.4, Emissary is the only Executor and it does not use this privilege.pods
is not needed.patch
andget
pods
. In versions >= 3.4 though, these permissions were replaced withcreate
andpatch
workflowtaskresults
. The upstream code could also fallback topatch
pod
with a deprecation warning, although the upstream manifests no longer included this. In >=3.6, the legacy fallback will be removed.k8sapi
Executor would usewatch
PoC
Install per instructions with a Workflow SA:
Run Workflow that execs into the Controller
Impact
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 useappVersion: 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.