identrail: Cross-tenant GitHub installation binding without ownership verification
What fixes it
- 1.0.2github.com/identrail/identrail, GoOSV
go get github.com/identrail/identrail@v1.0.2
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Reports 1
1 outlet mention it. Reports are not confirmation; each links to its source.
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.
Text from CVE List
Affected versions 2
- identrailaffected: < 1.0.2CVE List
- github.com/identrail/identrail, Gofrom first release, fixed in 1.0.2OSV