---
id: CVE-2026-59185
title: >-
  identrail: Cross-tenant GitHub installation binding without ownership
  verification
summary: >-
  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` …
severity: high
cvss: 8.5
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N'
cvssSource: cna
cwe:
  - CWE-639
  - CWE-862
vendor: identrail
product: identrail
affected:
  - identrail < 1.0.2
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-10-28T14:37:16.463171Z'
published: '2026-10-28'
updated: '2026-10-28'
sourceUpdated: '2026-10-28T16:07:10.634Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-59185'
references:
  - url: >-
      https://github.com/identrail/identrail/security/advisories/GHSA-cp3j-m783-3ph5
    label: >-
      https://github.com/identrail/identrail/security/advisories/GHSA-cp3j-m783-3ph5
  - url: >-
      https://github.com/identrail/identrail/commit/835e40517509d6ef5405c27fbf14f579bedff0e7
    label: >-
      https://github.com/identrail/identrail/commit/835e40517509d6ef5405c27fbf14f579bedff0e7
  - url: 'https://github.com/identrail/identrail/releases/tag/v1.0.2'
    label: 'https://github.com/identrail/identrail/releases/tag/v1.0.2'
  - url: 'https://github.com/identrail/identrail'
  - url: 'https://github.com/advisories/GHSA-cp3j-m783-3ph5'
tags:
  - cve.org
  - osv
  - go
  - ghsa
aliases:
  - GHSA-cp3j-m783-3ph5
  - GO-2026-6448
ecosystem: go
patched:
  - github.com/identrail/identrail 1.0.2
ingestedAt: '2026-09-10T00:26:24.579Z'
---

## Overview

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.

## Affected

- `identrail < 1.0.2`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Package advisory (CVE-2026-59185)

Affected packages:

- `github.com/identrail/identrail < 1.0.2`

Patched in:

- `github.com/identrail/identrail 1.0.2`

Source: https://osv.dev/vulnerability/GHSA-cp3j-m783-3ph5
