Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPush to accessible installation repository
-
DeliveryCraft PipelineRun annotation referencing private-repo task URL
-
ExploitWebhook fires and PAC processes PipelineRun
-
ExecutionPAC resolves remote task using unscoped installation token
-
ImpactPrivate Tekton task YAML contents exposed in pipeline output
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V8 - Authorization Least privilege enforcement
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires all of the following: (1) Pipelines-as-Code must be configured with a GitHub App installed across multiple repositories or org-wide - single-repository installations are not vulnerable; (2) the attacker must hold push access (write permission) to at least one repository in that GitHub App installation; (3) a target private repository containing Tekton task YAML must exist within the same GitHub App installation; (4) the attacker must be able to trigger webhook processing, which occurs naturally via a Git push to the accessible repository. What limits exploitation: pure read-only access is all that is exposed - no code execution, no write capability; the attacker must already be an authorized contributor to at least one repository in the installation; the target repository must be within the same GitHub App installation boundary, not arbitrary external repositories. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, score 6.5) accurately reflects the real-world risk profile: exploitation is network-reachable, low-complexity, and requires only push access to one repository in the installation - a meaningful but not trivial prerequisite. Impact is bounded to read-only exposure of private Tekton task YAML; no write access, code execution, or availability impact is involved. The absence of KEV listing and POC code moderates urgency somewhat, but the attack requires no special tooling beyond a crafted PipelineRun annotation and a Git push. The scope is limited to organizations running PAC with multi-repository or org-wide GitHub App installations; single-repository installations are not affected. A key risk amplifier is that private Tekton task definitions may embed secrets, credentials, or sensitive pipeline logic that the repository owner intended to restrict - meaning the confidentiality impact in practice could exceed what a generic C:H label implies. Any team using org-wide GitHub App installations for PAC, even a mid-sized development organization, should treat this as a concrete upgrade priority. No conflicting signals exist between CVSS and the description. |
| Exploit ScenarioDerived | An attacker with push access to a lower-trust repository (e.g., a contractor's project) in an org-wide Pipelines-as-Code GitHub App installation pushes a PipelineRun YAML containing the annotation pipelinesascode.tekton.dev/task pointing to a URL in a private, higher-trust repository within the same installation. When the webhook fires and PAC processes the PipelineRun, it fetches the referenced task YAML using the unscoped installation token and inlines it into the pipeline, exposing the private task's source - potentially including embedded secrets, API keys, or sensitive deployment logic - in PAC's resolution output or pipeline logs. No public proof-of-concept code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 20, 2026
Unscoped GitHub App installation token exposure in Tekton Pipelines-as-Code (openshift-pipelines/pipelines-as-code) allows any authenticated user with push access to one repository in a multi-repo GitHub App installation to read the Tekton task definitions from other private repositories in the same installation. By crafting a PipelineRun with a remote task annotation pointing at a private repository URL, the attacker causes Pipelines-as-Code to fetch and inline that repository's task YAML using the over-privileged installation token during webhook processing, producing a read-only confidentiality breach. No public exploit or CISA KEV listing exists at time of analysis; the EPSS signal is absent from provided data, but the low-complexity attack path and confirmed fix make this a prioritization candidate for any organization running multi-repository PAC installations.
RemediationAI
Upgrade Pipelines-as-Code to one of the vendor-confirmed patched releases: v0.37.8, v0.39.6, v0.42.1, or v0.48.0 depending on the currently deployed branch; v0.48.0 is the primary upstream fix release. The advisory is available at https://github.com/tektoncd/pipelines-as-code/security/advisories/GHSA-6f2p-296r-cc28. If an immediate upgrade is not possible, the vendor-recommended workaround is to limit the GitHub App installation scope to only the specific repositories that require Pipelines-as-Code, explicitly removing any org-wide or broad installation grants. This workaround reduces the blast radius to only the explicitly selected repositories, meaning an attacker with push access to one selected repository can only reach other selected repositories - not all org repos. The trade-off is that this may require reconfiguring the GitHub App installation and could disrupt PAC's ability to process repos not individually enumerated. It does not eliminate the underlying token scoping flaw; upgrade remains the definitive fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Pipelines-as-Code is a GitOps CI/CD controller (Go package: github.com/openshift-pipelines/pipelines-as-code) that integrates with Tekton PipelineRuns triggered by GitHub webhooks. It supports a remote task resolution feature whereby a PipelineRun YAML annotation (pipelinesascode.tekton.dev/task) can reference an arbitrary GitHub URL, which PAC fetches and inlines before execution. GitHub App installation tokens are scoped at issuance time to specific repositories or to the entire installation; the root cause (CWE-269: Improper Privilege Management) is that PAC was issuing an installation-wide token during webhook processing without subsequently re-scoping it to the triggering repository. The fix in v0.48.0 extracts the repository ID from the webhook payload early in parsing and re-issues the token scoped to that repository ID when ScopeTokenToListOfRepos returns empty, preserving the initial unscoped token only long enough to discover extra-repos configurations. CPE evidence confirms the Go module pkg:go/github.com_openshift-pipelines_pipelines-as-code across all affected version ranges.
Know when the next one hits your stack
- 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:L/UI:N/S:U/C:H/I:N/A:N
Push access (PR:L) to any installation repository is required; impact is read-only confidentiality with no integrity or availability loss.
Primary rating from Vendor (https://github.com/tektoncd/pipelines-as-code).
CVSS VectorVendor: https://github.com/tektoncd/pipelines-as-code
DescriptionCVE.org
Impact
When Pipelines-as-Code is configured with a GitHub App installed across multiple repositories, the installation token issued during webhook processing is not scoped to the triggering repository by default. The token retains access to all repositories in the GitHub App installation.
This allows a user with push access to any repository in the installation to craft a PipelineRun with a remote task annotation pointing at a private repository in the same installation:
pipelinesascode.tekton.dev/task: "https://github.com/org/private-repo/blob/main/.tekton/secret-task.yaml"Pipelines-as-Code resolves and inlines the remote task using the unscoped token, exposing the contents of the private repository's Tekton definitions. This is a read-only confidentiality breach, no write access is exposed.
Patches
The fix extracts the repository ID from the webhook payload during initial parsing so that it is available for later use. It then adds a fallback in the client setup path so that when no explicit scoping configuration is present and ScopeTokenToListOfRepos returns empty, the token is re-issued scoped to the triggering repository's ID rather than retaining access to the entire installation. The initial token remains unscoped so that the extra-repos lookup can still discover and resolve additional repositories when configured.
The fix is available in v0.48.0. Supported backport releases will be added here after release tags are published.
Workarounds
Limit the GitHub App installation to only the repositories that require Pipelines-as-Code. Avoid org-wide installations or mixed-trust installations where repositories with different access requirements share the same GitHub App. This restricts the blast radius of the unscoped token to only the repositories that are explicitly selected during App installation.
Credits
Reported and fixed by the Pipelines-as-Code maintainers.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
EUVD-2026-78586
GHSA-6f2p-296r-cc28
NVD
CVE.org
EPSS
Exploit-DB