CVE-2026-58370: Woodpecker GitLab Fork Approval Bypass – Code Execution via Author Spoofing
Woodpecker, a CI/CD orchestration platform, has a critical authentication bypass affecting its GitLab integration. When a developer opens a merge request from a forked repository, Woodpecker checks whether the pipeline requires approval by comparing the commit author name against a whitelist. On GitLab, this author name comes directly from the git commit metadata supplied in the webhook—metadata that any user can forge. An attacker can craft a commit with an author name matching an approved user, tricking Woodpecker into skipping the mandatory approval gate. The pipeline then executes the attacker's code on Woodpecker agents with access to CI secrets. This affects only GitLab; other supported forges (GitHub, Gitea, Forgejo, Bitbucket) use cryptographically signed identity information and are not vulnerable.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 8.1 HIGH · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses (CWE)
- CWE-290
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-30 / 2026-07-14
NVD description (verbatim)
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.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from insecure principal validation in Woodpecker's approval workflow. The ApprovalAllowedUsers bypass list is matched against pipeline.Author, which is derived differently depending on the forge driver. For GitLab, pipeline.Author is populated from commit.author.name in the webhook payload—a field the attacker controls and GitLab does not cryptographically sign or verify before transmission. An attacker with fork-merge capability can set commit.author.name to an arbitrary value, including one that matches an entry in ApprovalAllowedUsers. The needsApproval function then returns false, bypassing the approval requirement. Other forge drivers (GitHub, Gitea, Forgejo, Bitbucket) derive pipeline.Author from the authenticated sender or actor identity returned by the forge API after verification, preventing spoofing. The fix requires Woodpecker to validate the author identity against GitLab's authenticated user context rather than trusting the commit author field.
Business impact
This vulnerability breaks the fork-approval security model, a critical control for organizations using public or untrusted repositories. Teams relying on Woodpecker to enforce code review and approval gates on external contributions are exposed to code injection and secret theft. Attackers can execute arbitrary pipeline steps—including credential theft, code modification, or lateral movement—without human oversight. Organizations leveraging Woodpecker in multi-tenant or open-source environments face elevated risk of CI/CD compromise and downstream supply-chain attacks.
Affected systems
Woodpecker versions prior to 3.15.0 are affected when using the GitLab forge driver. GitLab is the only built-in forge driver impacted; Gitea, Forgejo, GitHub, and Bitbucket are unaffected due to their use of authenticated identity data. The vulnerability requires the attacker to have the ability to open a merge request from a fork, a capability typically granted to external contributors. Self-hosted Woodpecker instances using GitLab are at highest risk, as are SaaS deployments if fork-merge permissions are enabled for untrusted users.
Exploitability
Exploitability is straightforward for any user with fork-merge access to a GitLab repository linked to Woodpecker. No special tools or reverse engineering are required; the attacker simply creates a forked commit with commit.author.name set to an approved user's name and opens a merge request. The pipeline will execute without approval. The CVSS score of 8.1 reflects the high impact (code execution, secret exposure) and moderate attack complexity (fork-merge access required, but not unusual). Exploitation does not require authentication to Woodpecker itself, only to GitLab. No known public exploits have been confirmed, but the attack is trivial to execute once the vulnerability is understood.
Remediation
Upgrade Woodpecker to version 3.15.0 or later immediately. The fix changes how GitLab author identity is resolved, moving away from untrusted commit metadata to authenticated user information. After patching, verify that approval policies are re-enforced by testing a merge request from a fork without an approved author. Organizations unable to patch immediately should disable fork-merge access for external contributors or disable the Woodpecker integration on public repositories until the update is applied.
Patch guidance
Patches are available in Woodpecker 3.15.0 and later. Consult the official Woodpecker release notes and vendor advisory for version availability and deployment instructions for your deployment model (Docker, Kubernetes, or binary). Test the patch in a staging environment to confirm approval workflows function correctly before deploying to production. If your organization uses a custom forge driver, audit it to ensure author identity is derived from forge-authenticated data and not from user-controlled git metadata.
Detection guidance
Monitor GitLab webhook logs and Woodpecker pipeline execution logs for anomalies: pipelines that execute without approval from commits authored by non-whitelisted users, or pipelines where commit.author.name does not match the authenticated merge request creator identity. Implement alerts on pipeline runs that bypass approval and exfiltrate or access CI secrets. Audit existing pipelines to identify any runs that executed under suspicious author spoofing. Review GitLab repository permissions to identify users with fork-merge capability and assess their trustworthiness.
Why prioritize this
This vulnerability merits immediate attention because it directly defeats a core security boundary—approval gates on external code—and enables hands-on-keyboard code execution with secret access. The attack is trivial to execute and requires only fork-merge access, a capability commonly granted in open-source and collaborative environments. Even though it affects only the GitLab forge driver, organizations running Woodpecker with GitLab are at significant risk. The presence of CI/CD secrets in pipeline environments amplifies the impact beyond pipeline manipulation to credential theft and lateral movement.
Risk score, explained
The CVSS 3.1 score of 8.1 (HIGH) reflects high impact (confidentiality, integrity, and availability of the CI/CD system and its secrets are compromised) and network-accessible attack surface with high complexity (AC:H) due to the requirement for fork-merge permissions. The score does not require authentication to Woodpecker, and the scope is unchanged (the attacker gains control within the CI/CD system, not the underlying host). The score is appropriate for a bypass of a key security control with direct code and secret exposure.
Frequently asked questions
Do all Woodpecker forge drivers have this vulnerability?
No. Only the GitLab forge driver is affected. GitHub, Gitea, Forgejo, and Bitbucket all derive pipeline.Author from authenticated identity data provided by the forge API after verification, preventing spoofing.
Can an attacker exploit this if fork-merge is disabled?
No. The vulnerability requires the ability to open a merge request from a fork. If your GitLab repository does not permit external fork contributions or merge requests from forks, you are not exposed.
What happens after I patch to 3.15.0?
Woodpecker will validate the pipeline author against GitLab's authenticated merge request creator identity rather than trusting the git commit author name. Approval policies will be re-enforced, and forged author names will no longer bypass the approval requirement.
If I run Woodpecker with other forge drivers, am I affected?
If you use only GitHub, Gitea, Forgejo, or Bitbucket, you are not affected by this vulnerability. If you use GitLab, you must upgrade regardless of other forge drivers in use.
This analysis is based on the CVE description and public vendor information as of the publication date. No exploit code or proof-of-concept is provided. Organizations should verify patch availability and compatibility with their deployment before applying updates. For the most current guidance, consult the official Woodpecker advisory and GitLab security documentation. SEC.co makes no warranty regarding the completeness or accuracy of this information and recommends independent validation of all remediation steps. Source: NVD (public-domain), retrieved 2026-08-09. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2026-13207HIGHFUXA Authentication Bypass via Path Normalization
- CVE-2026-42674HIGHAdvanced Access Manager Authentication Bypass via URL Encoding
- CVE-2026-46414HIGHMicrosoft UFO WebSocket Authentication Bypass and Role Spoofing
- CVE-2026-47123HIGHFreeScout Email Spoofing Vulnerability – High-Severity Patch Available
- CVE-2026-52845HIGHCaddy Header Injection Vulnerability in forward_auth and php_fastcgi
- CVE-2026-53811HIGHOpenClaw Matrix allowFrom Privilege Escalation Vulnerability
- CVE-2026-53817HIGHOpenClaw Admin Token Persistence via Locality Spoofing
- CVE-2026-53823HIGHOpenClaw Privilege Escalation via Mutable Slack Display Names