Description
identrail is a machine identity security platform for AWS, GitHub/OIDC, and Kubernetes. Prior to 1.0.2, the default-on `POST /v1/workspaces/:workspace_id/projects/:project_id/github/connect/complete` endpoint in `internal/api/router.go` accepts `installation_id` from the request body or `X-GitHub-Installation-ID` header without verifying the installation belongs to the caller's workspace. `CompleteGitHubConnection` in `internal/api/github_connect.go` rigorously binds `state` to the caller's tenant, workspace, and project, but checks only that the installation ID is positive before persisting it as the caller's connection. `ListInstallationRepositories` in `internal/connectors/github/repositories.go` invokes token creation through `internal/connectors/github/app.go` and `POST /app/installations/{installationId}/access_tokens`, using the application's JWT. An authenticated tenant who starts a legitimate connection can supply another customer's non-secret installation ID to read the victim organization's private repository inventory, content, and metadata or drive posture scans, provided identrail's GitHub App is installed there. The default-off V2 `CompleteGitHubConnector` path shares the installation-ownership gap and additionally matches pending `state` without rechecking caller scope. This issue is fixed in version 1.0.2.
Published: 2026-10-28
Score: 8.5 High
EPSS: n/a
KEV: No
Impact: Unauthorized access to private GitHub repositories across tenants
Action: Patch immediately
AI Analysis

Impact

identrail, a platform that binds machine identities to AWS, GitHub, and Kubernetes, contains a flaw in the GitHub connection completion endpoint. The endpoint accepts an installation identifier from the request body or header without confirming that the installation belongs to the caller’s workspace. Because the state is bound to the tenant, workspace, and project, an attacker can supply another tenant’s installation ID to create a connection that points to a non‑owner's GitHub organization. The result is the ability to read or inventory private repositories and trigger posture scans on a victim organization, thereby compromising confidentiality and integrity of that organization’s data.

Affected Systems

Users of identrail before version 1.0.2 that have the default-on POST /v1/workspaces/:workspace_id/projects/:project_id/github/connect/complete endpoint enabled are affected. The same issue exists in the default-off V2 CompleteGitHubConnector path. The vulnerability applies to identrail version 1.0.2 and earlier.

Risk and Exploitability

The CVSS score of 8.5 indicates a high severity. The EPSS score is not available, meaning the current exploit probability estimate is unknown, but the lack of ownership verification makes the vulnerability relatively easy to exploit by an authenticated tenant. The issue is not listed in the CISA KEV catalog; however, the risk of cross‑tenant data exposure is significant. The most likely attack vector involves an authenticated identrail user submitting a forged installation_id to the connection completion endpoint and then querying the GitHub API via the legitimate application JWT.

Generated by OpenCVE AI on October 28, 2026 at 14:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade identrail to version 1.0.2 or later, where the installation ownership check is enforced.
  • If an upgrade is not immediately possible, disable the POST /v1/workspaces/:workspace_id/projects/:project_id/github/connect/complete endpoint or restrict it to trusted users only.
  • Implement monitoring to detect unusual GitHub installation connections and revoke any that are not associated with the authenticated tenant.
  • Consider removing or re‑authorizing the identrail GitHub App from organizations that should not be exposed to other tenants.

Generated by OpenCVE AI on October 28, 2026 at 14:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-cp3j-m783-3ph5 Identrail Cross-tenant IDOR: Client-supplied GitHub App installation_id is bound to the caller's workspace without ownership verification
History

Wed, 28 Oct 2026 13:30:00 +0000

Type Values Removed Values Added
Description identrail is a machine identity security platform for AWS, GitHub/OIDC, and Kubernetes. Prior to 1.0.2, the default-on `POST /v1/workspaces/:workspace_id/projects/:project_id/github/connect/complete` endpoint in `internal/api/router.go` accepts `installation_id` from the request body or `X-GitHub-Installation-ID` header without verifying the installation belongs to the caller's workspace. `CompleteGitHubConnection` in `internal/api/github_connect.go` rigorously binds `state` to the caller's tenant, workspace, and project, but checks only that the installation ID is positive before persisting it as the caller's connection. `ListInstallationRepositories` in `internal/connectors/github/repositories.go` invokes token creation through `internal/connectors/github/app.go` and `POST /app/installations/{installationId}/access_tokens`, using the application's JWT. An authenticated tenant who starts a legitimate connection can supply another customer's non-secret installation ID to read the victim organization's private repository inventory, content, and metadata or drive posture scans, provided identrail's GitHub App is installed there. The default-off V2 `CompleteGitHubConnector` path shares the installation-ownership gap and additionally matches pending `state` without rechecking caller scope. This issue is fixed in version 1.0.2.
Title identrail: Cross-tenant GitHub installation binding without ownership verification
Weaknesses CWE-639
CWE-862
References
Metrics cvssV3_1

{'score': 8.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-28T13:15:53.456Z

Reserved: 2026-07-02T19:53:48.830Z

Link: CVE-2026-59185

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-28T14:17:05.070

Modified: 2026-10-28T15:24:56.033

Link: CVE-2026-59185

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-28T15:00:25Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key

  • CWE-862

    Missing Authorization