A stage-by-stage breakdown of how one compromised OAuth grant becomes a full-stack SaaS breach, and where security teams can cut the chain.
A SaaS supply-chain attack rides legitimate trust, not a stolen password. An OAuth bearer token grants possession-based access with no check on who is holding it. - The attack runs in four stages: initial access through a granted OAuth scope, token persistence, lateral SaaS-to-SaaS movement, and in-app exfiltration. Every stage sits in a blind spot between tools you already run. - Your identity provider sees the human login. Your network sees the API traffic. Neither sees the non-human identity in between, which is exactly where the chain lives. - AI agents widen the blast radius. They hold tokens like integrations do, act at machine speed, move roughly 16x more data than a human, and about 90 percent of them are over-permissioned. - Detection comes down to one correlation: the vendor's theoretical configuration (what a grant is allowed to do) against runtime truth (which service account actually touched which objects and actions). - The chain can be cut at issuance, persistence, lateral movement, or the in-app action. Runtime enforcement ships today for Claude and Microsoft Copilot; for every other platform the work starts with discovery and governance.
The anatomy of a SaaS attack starts with a grant you already approved. An attacker does not phish a user or crack a login. They compromise a vendor, integration, or AI agent that already holds a live OAuth token to your Salesforce, Google Workspace, or Microsoft 365 tenant, then inherit the trust you extended months ago. The break-in happens outside your perimeter, so your first-party controls stay quiet.
The mechanics are simple. A third-party service (a marketing tool, a chatbot, a data-enrichment vendor, an agent platform) is breached. Attackers pull the OAuth tokens that vendor stores for its customers, sometimes thousands in one grab. Each token maps to a scope a real customer granted at install and never revisited.
What a single-half tool sees
What correlating both halves sees
That last line is the whole game. A configuration view tells you the integration is allowed to read opportunities. Runtime truth tells you the integration's service account just read every opportunity in the tenant at 3 a.m. from an IP it has never used. Only the second view is a signal.
Once an attacker holds the token, they hold persistence that survives every human-focused control you own. OAuth tokens are bearer credentials: possession equals authorization. Rotating a user's password does not touch them. Disabling the human who first clicked "allow" does not touch them either.
Why they linger:
What a single-half tool sees
What correlating both halves sees
This is where machine insider risk stops being abstract. The token behaves like a badge. Whoever holds it walks past your access controls, because those controls were built for people. The unit of persistence is not a session you can kill from the IAM console. It is a grant tied to a service account and its effective access inside a specific app.
Now the attacker pivots. Using the first token, they enumerate what the compromised integration or agent can reach, then walk the chain of connected apps. No exploit, no malware, just legitimate integrations linked end to end.
A typical path:
AI agents accelerate the whole sequence. An agent built in maker mode carries its creator's admin authority, so an invoker with a low-privilege token can trigger an agent that acts with high-privilege rights. Agent A calls tool B, which fires agent C in another platform. The chain crosses trust boundaries faster than a human ever could, and it moves far more data while doing it.
What a single-half tool sees
What correlating both halves sees
This is where teams lose the most ground. A configuration snapshot proves the integration exists and lists what it could do. Runtime evidence shows the sequence it actually ran across service accounts and objects. Only the second view exposes the lateral chain.
The final stage is the payoff: bulk export, privilege escalation, or destructive action inside a core app. The attacker uses the same API calls a legitimate integration would, at a scale and shape that only reads as malicious if you know what normal looks like for that specific non-human identity.
Common patterns:
What a single-half tool sees
What correlating both halves sees
The gap between effective access and theoretical configuration is the exfiltration itself. The config page said "restricted integration." The runtime record shows a service account that read 40,000 customer records it had never queried before. One of those is evidence. The other is a promise.
The reason this attack works is structural, not clever. Every stage falls into a seam between the tools most enterprises already own.
| Stage | Blind to IAM | Blind to network | Blind to SaaS logs |
|---|---|---|---|
| Initial access via OAuth | Yes, no human session | Yes, vendor allowlisted | Partial, the call looks normal |
| Token persistence | Yes, no lifecycle event | Yes | Partial, no correlation |
| Lateral SaaS-to-SaaS | Yes | Yes, no egress | Yes, siloed per app |
| In-app exfiltration | Yes | Yes | Partial, volume only |
Configuration-based tools confirm the integration exists. Runtime tools show what it did. Neither half alone catches the chain, because the chain only appears when you correlate a non-human identity's grant with the effective access it exercised inside each app.
The clearest reference is the UNC6395 activity against the Salesloft Drift integration, which reached roughly 700 organizations from a single compromised third party. It maps onto all four stages and shows exactly where each one hid.
Attackers reached downstream Salesforce tenants through the integration's legitimate OAuth access (Stage 1). Those grants persisted quietly across the affected organizations, none of which knew until public disclosure (Stage 2). The activity queried customer data using the integration's normal API access, and in places reached toward connected apps (Stage 3). Records were pulled through traffic that looked identical to expected integration behavior (Stage 4).
Most affected organizations learned of the breach through vendor disclosure rather than their own tooling. The tokens were legitimate and the traffic matched expected patterns, so routine SaaS audit reviews had no reason to flag it. That is the lesson in one sentence: without correlation between identity and behavior, there was no signal to find.
The chain has a cut point at every stage, but each one depends on runtime truth about your agents, integrations, and their effective access, not a configuration snapshot.
Cut point 1, at issuance. Keep a live inventory of every OAuth grant, integration, agent, and MCP server. Route new grants through a governance workflow. Kill orphaned agents whose creators are disabled.
Cut point 2, at persistence. Correlate vendor breach disclosures against your integration inventory. Rotate tokens for any vendor inside a disclosed window. Flag identities exercising scopes they have never used.
Cut point 3, at lateral movement. Detect action chaining across platforms. Watch for the confused-deputy pattern where a low-privilege invoker triggers a high-privilege agent. Flag toxic combinations such as a shadow agent with org-wide reach.
Cut point 4, at the in-app action. Put deterministic guardrails on probabilistic agents so behavior outside an agent's documented purpose gets stopped, and alert on bulk pulls that break normal patterns.
A word on how enforcement actually works, because vendors overstate this constantly. Obsidian does not sit inline as a gateway. It supplies the decision, an Intel Inside model that scores an action against the identity's effective access, and the platform carries out the verdict. That runtime enforcement is live today for Claude and Microsoft Copilot. For Agentforce, Snowflake Cortex, ServiceNow and Now Assist, Moveworks, Bedrock, Vertex, and n8n, the current capability is discovery and governance: full inventory, effective-access mapping, and policy, with autonomous enforcement on the roadmap rather than in production.
The earlier you cut, the smaller the blast radius. But no cut point functions without visibility into effective access, and that comes from runtime evidence, not a config page. The teams that stop chasing configuration ghosts and start operating from runtime truth are the ones that measure detection in hours instead of months.
Ransomware encrypts data on endpoints or servers and announces itself with a ransom note. A SaaS supply-chain attack quietly reads data through legitimate API calls, touches no endpoint, and leaves no encryption event. There is often no obvious signal at all, which is why detection usually arrives through vendor disclosure.
No. MFA protects human logins. This attack uses non-human identities and OAuth tokens that never face an MFA prompt. That gap is the core reason machine insider risk is a separate category from the human insider problem your IAM program already covers.
Usually weeks to months, and frequently by way of a vendor's disclosure rather than internal tooling. Traffic between a compromised integration and its target app looks identical to normal activity, so without runtime correlation between identity and behavior there is nothing to alert on.
Compare the OAuth scopes granted against the scopes actually exercised at runtime, then check that effective access against the objects and actions the integration truly needs. If a grant allows read-all-data but the integration only ever reads a small subset, the excess scope is unused blast radius. Roughly 90 percent of agents fall into this bucket.
Yes. Agents hold tokens like traditional integrations, but they act at machine speed, chain actions across platforms, move around 16x more data than a human, and often run in maker mode with an admin's authority. They are the fastest-growing slice of machine insider risk.
Runtime enforcement, meaning autonomous blocking of an action based on an identity's effective access, is available today for Claude and Microsoft Copilot through the Intel Inside decision model. For Agentforce, Snowflake Cortex, ServiceNow and Now Assist, Moveworks, Bedrock, Vertex, and n8n, Obsidian delivers discovery and governance now, with runtime enforcement planned rather than shipping.