Severity by source
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/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
Remote and unauthenticated against Woodpecker (PR:N/UI:N), but AC:H because it needs the GitLab driver, a populated ApprovalAllowedUsers list, and a known allowlisted name; full C/I/A from RCE on the agent and secret theft.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
8DescriptionCVE.org
Woodpecker before 3.15.0 matches the ApprovalAllowedUsers bypass list against pipeline.Author. For the GitLab forge driver, pipeline.Author is populated from the git commit author name (commit.author.name) carried in the webhook payload, which is attacker-controlled and not verified by GitLab. A user who can open a merge request from a fork can set the commit author name to match an entry in ApprovalAllowedUsers, causing needsApproval to return false so the pipeline runs without the required approval. This defeats the fork-approval security boundary and allows execution of attacker-controlled pipeline steps on a Woodpecker agent and exfiltration of CI secrets exposed to the run. Other built-in forge drivers (Gitea, Forgejo, GitHub, Bitbucket) derive pipeline.Author from the forge-validated sender/actor identity and are not affected.
Articles & Coverage 1
AnalysisAI
Approval-gate bypass in Woodpecker CI before 3.15.0 lets an attacker who can open a merge request from a fork against a GitLab-backed repository run unapproved, attacker-controlled pipelines. Because the GitLab forge driver populates pipeline.Author from the spoofable git commit author name (commit.author.name) rather than the GitLab-validated user identity, an attacker simply sets the commit author to a name listed in ApprovalAllowedUsers, making needsApproval return false. This grants arbitrary CI step execution on a Woodpecker agent and exposure of CI secrets; there is no public exploit identified at time of analysis, but the issue was reported by VulnCheck and is trivially reproducible.
Technical ContextAI
Woodpecker CI is a lightweight, self-hosted, container-based continuous integration engine (cpe:2.3:a:woodpecker-ci:woodpecker) that pulls work from forge webhooks. The flaw is a CWE-290 Authentication Bypass by Spoofing: the fork-approval security boundary compares trusted-author membership (ApprovalAllowedUsers) against pipeline.Author. In server/forge/gitlab/convert.go the merge-request handler set pipeline.Author = author.Name, deriving identity from commit.author.name carried in the GitLab MergeEvent webhook. GitLab does not verify the git commit author name against the authenticated actor, so it is fully attacker-controlled. The fix (PR #6653, commit 98faae77) replaces this with the forge-validated hook.User.Username / hook.UserUsername for merge, push and tag events. Per the advisory and the description, the Gitea, Forgejo, GitHub and Bitbucket drivers already derived the author from the validated sender/actor and were never affected; only the GitLab driver is.
RemediationAI
Vendor-released patch: upgrade Woodpecker CI to v3.15.0 or later (https://github.com/woodpecker-ci/woodpecker/releases/tag/v3.15.0), which derives pipeline.Author from the GitLab-validated user (hook.User.Username) instead of the spoofable commit author name. If you cannot upgrade immediately and run a GitLab-backed instance, consider these compensating controls: temporarily empty or remove the ApprovalAllowedUsers list so every fork pipeline requires manual approval (trade-off: more manual approval overhead for trusted contributors); disable automatic pipeline execution for merge requests originating from forks (trade-off: slower feedback for legitimate external contributors); and scope down or rotate CI secrets so that fork-triggered runs cannot reach sensitive credentials (trade-off: some pipelines that legitimately need those secrets will fail until access is re-granted). Validate the fix and details against the VulnCheck advisory (https://www.vulncheck.com/advisories/woodpecker-gitlab-approval-gate-bypass-via-spoofable-commit-author-name).
Remote code execution in Gitea (self-hosted Git service) via a code-injection flaw (CWE-94) allows attackers to run arbi
Broken access control in Gitea's Composer package registry (versions up to and including 1.26.1) lets remote attackers r
Gitea before 1.16.7 does not escape git fetch remote. Rated high severity (CVSS 7.5), this vulnerability is remotely exp
The git hook feature in Gitea 1.1.0 through 1.12.5 might allow for authenticated remote code execution in customer envir
Improper Neutralization of Input During Web Page Generation (XSS or 'Cross-site Scripting') vulnerability in Gitea Gitea
Reverse-proxy authentication bypass in the official Gitea Docker image (versions up to and including 1.26.2) allows any
Container escape in Gitea act_runner (Docker backend, through act 0.262.0) lets an authenticated user with workflow-exec
models/repo_mirror.go in Gitea before 1.7.6 and 1.8.x before 1.8-RC3 mishandles mirror repo URL settings, leading to rem
Server-side request forgery and internal repository exfiltration in Gitea before 1.27.0 lets a low-privileged authentica
Authorization bypass in Gitea versions 1.22.3 through 1.26.1 allows holders of `public-only` access tokens or OAuth gran
An issue was discovered in Gitea through 1.11.5. Rated high severity (CVSS 7.5), this vulnerability is remotely exploita
Missing Authorization in GitHub repository go-gitea/gitea prior to 1.16.4. Rated high severity (CVSS 7.1), this vulnerab
Same weakness CWE-290 – Authentication Bypass by Spoofing
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-40358
GHSA-wpx4-jm4h-w8j6