Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Remotely reachable gRPC endpoint (AV:N), straightforward metadata injection (AC:L), valid agent token required (PR:L), no user interaction; impersonation tampers with CI integrity (I:H) with no direct C/A impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3DescriptionCVE.org
Woodpecker is a CI/CD engine. Starting in version 3.0.0 and prior to version 3.14.1, a vulnerability in Woodpecker CI's gRPC layer allowed any authenticated agent to impersonate any other agent on the same server by injecting a forged agent_id value into outgoing gRPC metadata. The server correctly verified the JWT token but then discarded the verified agent identity in favor of the client-supplied value. Version 3.14.1 patches the issue. As a workaround, disable org agents (WOODPECKER_DISABLE_USER_AGENT_REGISTRATION=true) and delete existing ones.
AnalysisAI
Agent impersonation in Woodpecker CI 3.0.0 through 3.14.0 allows any authenticated agent to assume the identity of any other agent on the same server by injecting a forged agent_id into outgoing gRPC metadata. The server validates the JWT correctly but then trusts the client-supplied agent_id over the cryptographically verified one, enabling cross-tenant job hijacking and integrity compromise of CI pipelines. No public exploit identified at time of analysis, and the issue is not listed in CISA KEV.
Technical ContextAI
Woodpecker is a Go-based open-source CI/CD engine whose server-agent channel uses gRPC with JWT-bearing metadata for authentication. The defect is a CWE-290 Authentication Bypass by Spoofing in server/rpc/authorizer.go: after parsing JWT claims, the authorizer called md.Append("agent_id", ...), which adds the verified value alongside any client-supplied value rather than replacing it. Downstream gRPC handlers read the first agent_id from metadata, allowing a malicious agent to prepend an arbitrary numeric agent_id and override the trusted claim. The fix in PR #6567 changes Append to Set so the server-derived identity always wins, eliminating the metadata collision.
RemediationAI
Vendor-released patch: upgrade Woodpecker CI server to 3.14.1 or later, per advisory GHSA-g7mm-9vx7-jm7h (https://github.com/woodpecker-ci/woodpecker/security/advisories/GHSA-g7mm-9vx7-jm7h). Until the upgrade is applied, the vendor's workaround is to disable user/org agent registration by setting WOODPECKER_DISABLE_USER_AGENT_REGISTRATION=true and then deleting any existing user-registered agents so only server-trusted agents remain; this prevents low-privileged tenants from obtaining the agent token needed to mount the spoof, at the cost of removing self-service agent provisioning. Operators should also rotate any agent JWTs that may have been issued during the vulnerable window and audit recent pipeline runs for jobs picked up by unexpected agents.
Same weakness CWE-290 – Authentication Bypass by Spoofing
View allSame technique Authentication Bypass
View allVendor StatusVendor
SUSE
Severity: ModerateShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37897
GHSA-g7mm-9vx7-jm7h