ZeroHour

CVE-2026-54167

niche

Unauthenticated GitHub App JWT leak in Pipelines as Code webhook handler

CVSS 3.1
8.2 high
EPSS
Published
()
Modified
AI analysis

Pipelines as Code (PaC), the CI/CD component that runs Tekton pipelines for source repositories (notably in Red Hat OpenShift Pipelines), trusts a client-supplied X-GitHub-Enterprise-Host header as the API host when processing webhook events that carry an installation.id, before validating the webhook signature or checking the host against the repository URL in the signed payload. An unauthenticated attacker who can simply reach the webhook endpoint can set that header to a host they control, causing the PaC controller to transmit its locally signed GitHub App JWT to the attacker's service. That stolen JWT can then be replayed during its validity window to mint installation access tokens for the GitHub App, subject to the app's installed scopes and permissions. The same flaw affects the incoming-webhook installation-lookup path, though exploiting that path requires knowledge of the valid incoming webhook secret for the target Repository CR. The issue is fixed in 0.37.8, 0.39.6, 0.42.1, and 0.48.0, and no public proof of concept or exploitation in the wild is known.

What to do: Upgrade Pipelines as Code to 0.37.8, 0.39.6, 0.42.1, or 0.48.0 (or the latest release) — OpenShift users should apply the matching OpenShift Pipelines operator update. Until patched, restrict network access to the PaC webhook Route/Ingress (IP allowlisting or internal-only exposure) and monitor controller egress for connections to unexpected hosts. Because exposed JWTs are signed with the GitHub App private key, review GitHub audit logs for anomalous installation token creation and rotate the GitHub App's private key if any suspicious activity is found.

Affected
openshift-pipelines (Red Hat) Pipelines as Code< 0.37.8, 0.38.0–0.39.5, 0.40.0–0.42.0, 0.43.0–0.47.x (fixed in 0.37.8, 0.39.6, 0.42.1, and 0.48.0 on the respective release branches)
Estimated exposure
nichelikely hundreds to low thousands of internet-reachable PaC webhook deployments; overall install base unknown — Pipelines as Code ships as the default CI/CD experience in Red Hat OpenShift Pipelines and the broader OpenShift/Kubernetes install base spans a few thousand enterprise clusters, most of which are private or VPN-protected, leaving only a…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Pipelines-as-Code is a CI/CD system that lets users define Tekton pipelines in source code repositories. Prior to 0.37.8, 0.39.6, 0.42.1, and 0.48.0, the GitHub App provider accepts X-GitHub-Enterprise-Host as the API host while processing webhook events containing an installation.id, before webhook signature validation or confirmation that the host matches the repository URL in the signed payload. An unauthenticated attacker who can reach the webhook endpoint can select an attacker-controlled host and cause the controller to send a locally signed GitHub App JWT to that service. The exposed JWT may be used to attempt to mint installation access tokens during its validity window, subject to the GitHub App installation and permissions. The incoming webhook installation-lookup path is also affected, but exploitation of that path requires the valid incoming webhook secret for the target Repository CR. This issue is fixed in versions 0.37.8, 0.39.6, 0.42.1, and 0.48.0.

Weakness
CWE-345
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N

In the news

No ingested article mentions this CVE yet.