<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0"><channel><title>Identrail - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/identrail/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 10 Sep 2026 00:50:43 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/identrail/feed.xml" rel="self" type="application/rss+xml"/><image><url>https://feed.craftedsignal.io/favicon-32x32.png</url><title>CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/</link><width>32</width><height>32</height></image><webfeeds:icon>https://feed.craftedsignal.io/favicon.svg</webfeeds:icon><item><title>Identrail Cross-tenant IDOR via GitHub App Installation ID</title><link>https://feed.craftedsignal.io/briefs/2026-09-identrail-idor/</link><pubDate>Thu, 10 Sep 2026 00:50:43 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-09-identrail-idor/</guid><description>An improper validation vulnerability in Identrail allows authenticated tenants to perform cross-tenant access to private GitHub repository metadata by supplying an arbitrary installation_id during the connection flow.</description><content:encoded><![CDATA[<p>Identrail is affected by an Insecure Direct Object Reference (IDOR) vulnerability (CVE-2026-59185) within its GitHub App connection-completion API. The vulnerability exists because the <code>POST /v1/workspaces/:workspace_id/projects/:project_id/github/connect/complete</code> endpoint accepts a client-supplied <code>installation_id</code> from the JSON body or the <code>X-GitHub-Installation-ID</code> header without verifying that the installation belongs to the workspace initiating the flow. While the application correctly binds a state token to the caller's workspace, it fails to perform a similar check on the installation ID. An authenticated attacker can provide a victim's <code>installation_id</code> - which is easily enumerable or discoverable - to link the victim's GitHub organization to the attacker's Identrail workspace. Once linked, the platform mints a GitHub App installation access token using the app's own JWT, granting the attacker unauthorized access to read private repository inventories and potentially perform posture scans on the victim's infrastructure. This affects all versions of Identrail prior to 1.0.2.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker authenticates to the Identrail platform as a standard tenant.</li>
<li>Attacker triggers a legitimate GitHub connection flow via <code>StartGitHubConnection</code> to generate a valid <code>state</code> token for their own workspace.</li>
<li>Attacker identifies the target organization's GitHub App <code>installation_id</code> (a non-secret integer available in webhooks or public redirect URLs).</li>
<li>Attacker sends a POST request to the completion endpoint (<code>/github/connect/complete</code>) using their valid <code>state</code> token and the target's <code>installation_id</code> in the request header or body.</li>
<li>The Identrail backend verifies the <code>state</code> matches the attacker's workspace, satisfying the security check, but fails to validate the <code>installation_id</code> scope.</li>
<li>The platform persists the victim's <code>installation_id</code> as a connection owned by the attacker's workspace.</li>
<li>Attacker uses Identrail's internal repository listing services (<code>ListInstallationRepositories</code>) which mints an access token for the victim's installation.</li>
<li>Attacker retrieves private repository lists and metadata from the victim's GitHub account.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation results in unauthorized cross-tenant disclosure of sensitive repository metadata and private contents belonging to other customer organizations. This allows attackers to perform reconnaissance on victim organizations' codebase structures, potentially identifying proprietary code or configurations for further targeting.</p>
<h2 id="recommendation">Recommendation</h2>
<ol>
<li>Upgrade the Identrail platform to version 1.0.2 or later immediately to patch CVE-2026-59185.</li>
<li>Perform an audit of existing GitHub App connections to identify any unauthorized or unknown installations linked to your workspaces.</li>
<li>Implement strict server-side validation that requires the <code>installation_id</code> to be bound to the tenant's identity during the initial GitHub OAuth handshake.</li>
<li>Review access logs for the <code>github/connect/complete</code> endpoint for requests where the <code>X-GitHub-Installation-ID</code> or JSON body <code>installation_id</code> differs from those associated with legitimate tenant-authorized installation flows.</li>
</ol>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>idor</category><category>github</category><category>cloud</category><category>saas</category></item></channel></rss>