Go · go.woodpecker-ci.org/woodpecker/v3
Woodpecker: Privilege escalation via unrestricted serviceAccountName in the Kubernetes backend
A privilege escalation vulnerability affects Woodpecker instances using the Kubernetes backend.
The pipeline option backend_options.kubernetes.serviceAccountName was passed directly to the pod spec without any admin gating.
Who is impacted: any operator running the Kubernetes backend. Any user with Push permission on a connected repository can run pipeline pods under an arbitrary ServiceAccount in the pipeline namespace, gaining that account's RBAC permissions. If a privileged ServiceAccount is reachable in that namespace, this can lead to secret exfiltration (database credentials, API keys, TLS certs) and full cluster takeover.
https://github.com/woodpecker-ci/woodpecker/pull/6792
Operators who cannot upgrade immediately can mitigate by any of:
default ServiceAccount minimally privileged.serviceAccountName.609ba481b5e912f59aaae8ca7bc22b44523c5e37v1.0.0 through v3.15.0pipeline/backend/kubernetes/backend_options.go (field ServiceAccountName),
pipeline/backend/kubernetes/pod.go (assigned to pod spec with no gating)Is your project exposed to this? Stateward checks every dependency on every pull request and flags it only if your code actually reaches it.
Check my repoSources: CISA KEV (public domain), OSV.dev & GitHub Advisory Database (CC-BY-4.0), FIRST EPSS, NVD/CWE (public domain). Served live from the Stateward advisory database.