Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach internet-exposed /api/webhook endpoint
-
DeliveryForge unsigned pull_request event for tracked repo
-
ExploitBurrito accepts and creates attacker-controlled TerraformPullRequest CR
-
ExecutionOperator runs terraform plan with stored git/cloud credentials
-
ImpactUnrelated branch's infra diff planned and misattributed on real PR
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The concrete prerequisite is a TerraformRepository whose credential omits the webhookSecret field or sets it to an empty value - the documented default for operators who follow the git-authentication setup and rely on polling; with the secret empty, go-playground/webhooks skips HMAC/token verification entirely. The attacker must be able to reach burrito-server's /api/webhook (which project docs instruct exposing to the internet) and must know the tracked repository's URL; no credentials, signature, or user interaction are required. For the escalation to planning an unrelated branch, the attacker additionally needs a real, existing pull request number (trivially discoverable) paired with any existing branch name in the same repo, because the controller fetches changed files by PR number but never cross-checks the payload's branch. Limiting factors that reduce real-world risk: a non-empty webhookSecret fully blocks forgery (events are rejected after the fix); auto-apply is hardcoded off for these temporary layers so this flaw alone cannot force terraform apply; and any plan-time provider/data-source code execution depends on the contents of the selected branch. |
| Impact | The input CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:H, 9.9) describes a remote, unauthenticated, no-interaction flaw with a scope change, and the vuln.today Decision label is act_now - so this should be treated as a real, high-urgency priority, not a paper-high score. The strongest corroborating signal is a working proof-of-concept embedded in the GHSA advisory itself (a Ginkgo/Gomega envtest driving the production HTTP handler against real kube-apiserver+etcd, with observed passing output), which demonstrates the directly-proven impact: forged, unsigned events creating attacker-controlled TerraformPullRequest CRs. Two key signals are MISSING from the input and should be flagged: no EPSS exploitation-probability score is provided, and the CVE is NOT listed in CISA KEV, so there is no evidence of active in-the-wild exploitation despite the act_now label - urgency here rests on ease of exploitation and the public PoC, not on observed attacks. A caveat on severity: exploitation is gated on a configuration state (credential lacking webhookSecret), which the vector's AC:L does not surface; however, the advisory establishes this is the DEFAULT for the common git-authentication + polling setup, so AC:L is defensible. The input's A:H appears overstated relative to the described impact (CR creation/deletion and forced terraform plan), where I assess integrity and availability as Low and confidentiality as Low; the real teeth are the scope change into the Kubernetes cluster and Terraform runs executing under the operator's stored git and cloud credentials. |
| Exploit ScenarioDerived | An attacker who can reach the internet-exposed burrito-server /api/webhook (which the project's own docs instruct operators to publish) and who knows a tracked repository's URL sends a hand-crafted, unsigned pull_request event; because the repository's credential has no webhookSecret, go-playground/webhooks skips signature verification and Burrito accepts it as genuine. This creates a TerraformPullRequest CR with attacker-chosen Branch/Base/ID, forcing an unauthorized terraform plan under the operator's stored git and cloud credentials; pairing a real PR number with an unrelated existing branch can post that branch's infrastructure diff onto the real PR thread. A working PoC (a Go envtest with observed passing output) is published in the GHSA advisory proving the CR-creation and plan-trigger path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
Unauthenticated webhook forgery in the Padok Burrito Terraform Automation Collaboration Software Kubernetes operator through 0.12.0 lets anyone who can reach burrito-server's /api/webhook endpoint create or delete TerraformPullRequest custom resources with attacker-chosen Branch, Base and ID fields, provided the tracked repository's credential omits webhookSecret or sets it to an empty value. The forged event drives a real terraform plan of the attacker-selected branch under the operator's own stored git and cloud credentials, and code analysis indicates the resulting diff can be posted onto a genuine pull request's comment thread, exposing and misattributing another branch's infrastructure changes; auto-apply is hardcoded off for these temporary layers so the flaw alone cannot force a terraform apply. The CVSS vector is unauthenticated (PR:N) and the priority call is act_now; no CISA KEV entry appears in the supplied data, and the GitHub advisory publishes a proof-of-concept test it reports as passing against envtest.
RemediationAI
Upgrade to Burrito 0.13.0 (vendor-released patch; release notes at https://github.com/padok-team/burrito/releases/tag/v0.13.0, fix commit 1d48432a4a0126429c99f5fa42567bf3711d1ca1) and then configure a non-empty webhookSecret on every TerraformRepository or shared credential that serves webhooks, setting the matching secret on the corresponding GitHub or GitLab webhook. After the fix, the webhookSecretEnforcer returns an error and webhook events are rejected for any repository whose credential lacks a non-empty secret, so webhook-driven repositories that previously worked without a secret will stop accepting events until one is configured. For deployments that cannot be upgraded immediately, the advisory's stated blocking condition is the same: setting a non-empty webhookSecret on every repository credential restores HMAC/token verification and prevents forged unsigned events, at the cost of provisioning and rotating secrets on both the Git provider and the operator side; repositories whose only verification path is the webhook endpoint should be treated as untrusted until either change is made. Note that the documented fix scope covers event forgery and unauthorized plan triggering only, and auto-apply remains disabled for the temporary layers created by this code path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Burrito's /api/webhook route is mounted without authentication by design (internal/server/server.go:161-162); the vendor documentation treats secret-based validation as the only gate. That gate lives in the vendored go-playground/webhooks v5.17.0 library, whose GitHub and GitLab parsers only verify the HMAC signature or token inside an if len(hook.secret) > 0 guard, so an empty secret means no verification at all. Burrito's own Credential.WebhookSecret is optional (omitempty) and is not enforced by any admission webhook or startup check, and ParseWebhookPayload passes an accepted unsigned payload straight through as genuine. This is CWE-306 (missing authentication for a critical function); the advisory also tags CWE-863. An accepted pull_request event is turned directly into a TerraformPullRequest CR from the payload's Branch/Base/ID, and although the controller later queries the real GitHub API with the supplied PR number to list changed files, the branch actually checked out and planned still comes from the forged payload (generateTempLayers uses pr.Spec.Branch), so a real PR number plus an unrelated existing branch suffices. A secondary weakness noted in the code analysis is that the GitLab token comparison uses plain != rather than a constant-time comparison once a secret is configured. The upstream fix in 0.13.0 introduces a webhookSecretEnforcer wrapper in internal/repository/repository.go so every provider constructed through GetProviderFromCredentials refuses to hand back a webhook provider when the credential's WebhookSecret is empty.
Know when Burrito gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:H
Remote unauthenticated POST to an internet-exposed webhook endpoint (AV:N/PR:N/UI:N); empty webhookSecret is the documented default so AC:L; impact crosses into the cluster/Terraform under operator credentials, giving S:C with low C/I/A.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Burrito is a Terraform Automation Collaboration Software (TACoS) Kubernetes operator. Prior to 0.13.0, POST /api/webhook accepts unsigned GitHub and GitLab events when a TerraformRepository's credentials omit webhookSecret or set it to an empty value, including credentials configured for git authentication and polling. Credential.WebhookSecret is optional, and go-playground/webhooks skips signature or token verification when the secret is empty. Anyone who can reach burrito-server's endpoint and knows a tracked repository's URL can forge events to create or delete TerraformPullRequest custom resources with attacker-chosen Branch, Base, and ID fields. For GitHub pull_request events, the controller fetches changed files using the real pull request number but does not cross-check the payload's branch against that pull request. Pairing a real, existing pull request number with an unrelated existing branch in the same repository can therefore cause an unauthorized terraform plan for affected layers using the operator's stored git and cloud credentials. Code analysis also indicates that the resulting plan can be posted to the real pull request's comment thread, exposing and misattributing another branch's infrastructure changes. Auto-apply is disabled for these temporary layers, so this vulnerability alone cannot force a terraform apply; plan-time provider and data-source code execution depends on the selected branch's contents. This issue is fixed in version 0.13.0.
Technical POC Analysis
This is CWE-306: Missing Authentication for Critical Function.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical unauthenticated webhook forgery vulnerability in the Padok Burrito Terraform Automation Collaboration Software Kubernetes operator (through version 0.12.0) allows attackers to create or delete TerraformPullRequest resources and trigger terraform plans using the operator's stored credentials, potentially exposing infrastructure code from other branches. This affects organizations using Burrito with repositories lacking proper webhook secret configuration, and while auto-apply is disabled, the confidentiality breach and resource manipulation pose significant risks to infrastructure-as-code integrity and cloud security posture.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce non-empty webhookSecret for all repository credentials; restrict /api/webhook endpoint access to trusted source IPs; monitor and alert on unexpected TerraformPullRequest creations/deletions and terraform plan activities.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-110033
NVD
CVE.org
EPSS
GitHub
Exploit-DB