Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-58370

CVE-2026-58370: Woodpecker Auth Bypass Vulnerability

CVE-2026-58370 is an authentication bypass flaw in Woodpecker before 3.15.0 that allows attackers to circumvent approval controls via GitLab webhooks. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-58370 Overview

CVE-2026-58370 affects Woodpecker CI versions prior to 3.15.0. The vulnerability allows attackers to bypass the fork-approval security boundary in the GitLab forge driver. The ApprovalAllowedUsers bypass list is matched against pipeline.Author, which the GitLab driver populates from the attacker-controlled commit.author.name field in the webhook payload. Because GitLab does not verify this field, any user who can open a merge request from a fork can spoof the commit author name to match an approved user. This causes needsApproval to return false, executing the pipeline without required approval.

Critical Impact

Attackers can execute arbitrary pipeline steps on Woodpecker agents and exfiltrate CI secrets exposed to the run by spoofing a git commit author name in a fork merge request.

Affected Products

  • Woodpecker CI versions prior to 3.15.0
  • Woodpecker deployments using the GitLab forge driver
  • Configurations relying on ApprovalAllowedUsers as a fork-approval security control

Discovery Timeline

  • 2026-06-30 - CVE-2026-58370 published to NVD
  • 2026-07-02 - Last updated in NVD database

Technical Details for CVE-2026-58370

Vulnerability Analysis

The vulnerability is an authentication bypass classified under [CWE-290] (Authentication Bypass by Spoofing). Woodpecker uses ApprovalAllowedUsers to designate identities whose pipelines can run without manual approval, even from forks. In the GitLab forge driver, pipeline.Author is set from commit.author.name extracted from the incoming webhook payload. This value is user-controllable in the git commit metadata and never validated by GitLab against the actual authenticated user.

An attacker opens a merge request from a fork and crafts a commit whose author name matches a trusted user listed in ApprovalAllowedUsers. When Woodpecker evaluates needsApproval, the spoofed value causes the check to return false. The pipeline executes immediately with access to CI secrets configured for the target repository.

Other built-in forge drivers, including Gitea, Forgejo, GitHub, and Bitbucket, derive pipeline.Author from the forge-validated sender or actor identity and are not affected by this flaw.

Root Cause

The root cause is trusting an unauthenticated field from the webhook payload as a security identity. In server/forge/gitlab/convert.go, the assignment pipeline.Author = author.Name used the freeform commit author name instead of the authenticated GitLab user identity.

Attack Vector

An attacker with fork access sets a spoofed git commit author name, pushes the commit to a fork, and opens a merge request against the target repository configured with Woodpecker and the GitLab driver.

go
// Security patch in server/forge/gitlab/convert.go
	author := lastCommit.Author

-	pipeline.Author = author.Name
+	pipeline.Author = hook.User.Username
	pipeline.Email = author.Email

	if len(pipeline.Email) != 0 {

Source: GitHub Commit 98faae7. The patch replaces the attacker-controlled author.Name with hook.User.Username, the forge-validated GitLab username sent by the webhook infrastructure.

Detection Methods for CVE-2026-58370

Indicators of Compromise

  • Pipeline runs originating from fork merge requests where the recorded author matches a trusted ApprovalAllowedUsers entry but the GitLab sender identity does not
  • Unexpected pipeline executions on the GitLab forge without an associated approval event
  • CI secret access or outbound network activity from pipeline containers tied to fork merge requests
  • Git commits in fork branches where commit.author.name impersonates internal maintainers

Detection Strategies

  • Correlate Woodpecker pipeline.Author values with the authenticated GitLab webhook user.username field and alert on mismatches
  • Audit historical pipeline runs from fork merge requests that bypassed approval to identify prior exploitation
  • Monitor Woodpecker agent processes for anomalous secret-reading behavior or outbound exfiltration attempts

Monitoring Recommendations

  • Enable verbose logging on the Woodpecker server for webhook parsing and approval decisions
  • Ship Woodpecker server logs and GitLab webhook delivery records to a central SIEM for cross-source correlation
  • Alert on any pipeline running from a fork MR when the commit author name matches an internal identity but the MR opener does not

How to Mitigate CVE-2026-58370

Immediate Actions Required

  • Upgrade Woodpecker to version 3.15.0 or later without delay
  • Rotate any CI secrets that could have been exposed to unapproved pipeline runs from forks
  • Review pipeline execution history for unauthorized runs matching the attack pattern
  • Temporarily restrict fork-based pipeline execution until the upgrade is complete

Patch Information

The fix is included in Woodpecker v3.15.0 via Pull Request #6653. The patch changes the GitLab driver to derive pipeline.Author from hook.User.Username instead of commit.author.name. See the VulnCheck Security Advisory for additional advisory context.

Workarounds

  • Remove all entries from ApprovalAllowedUsers for GitLab-backed repositories until upgraded
  • Require manual approval for every fork merge request pipeline regardless of author
  • Scope CI secrets tightly so fork pipelines cannot access sensitive credentials
  • Consider disabling automatic pipeline triggers on merge requests from forks
bash
# Verify Woodpecker server version after upgrade
woodpecker-server --version

# Confirm the fixed release is deployed (should report v3.15.0 or later)
docker inspect woodpeckerci/woodpecker-server:latest \
  --format '{{.Config.Labels.version}}'

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.