Cloud Security Office Hours Banner

Vercel / Context.ai 2026

Step-by-step kill chain mapped to MITRE ATT&CK Cloud, sourced from official post-mortems and primary technical analyses.

April 2026 Critical SaaS / OAuth

Vercel / Context.ai - Infostealer at a Vendor → OAuth App Compromise → Google Workspace Takeover → Plaintext Environment Variables Across Customer Projects

On April 19, 2026 Vercel published a security bulletin describing an intrusion that reached its internal systems through a third-party AI tool one of its employees used. Vercel's own account is short and precise: an attacker compromised Context.ai, leveraged that access to hijack the employee's Google Workspace account, then used it to compromise their Vercel account and pivot into internal systems, where non-sensitive environment variables belonging to a subset of customer projects were decrypted and exposed. Independent researchers reconstructed the earlier hops: a Context.ai employee was infected with Lumma Stealer around February 2026, the harvested credentials led to Context.ai's AWS environment and its OAuth application in March, and the OAuth app's broad consent scopes let the attacker mint valid tokens for users who had connected their accounts. The chain never involved a Vercel vulnerability, a stolen Vercel credential, or malware on a Vercel machine. It ran entirely on authorizations that people had legitimately granted.

Three companies in the chain: an infostealer victim, an AI vendor, a hosting platform
~2 months from the vendor endpoint infection to Vercel's disclosure
Exposed: environment variables not flagged sensitive, which decrypt to plaintext
No Vercel exploit: every hop used a granted authorization
📄 Vercel Knowledge Base - April 2026 security incident bulletin ↗ 📄 Cloud Security Alliance - AI SaaS as enterprise attack vector ↗
Initial Access - Commodity Infostealer on a Vendor Employee's Machine
01
A Context.ai employee was infected with Lumma Stealer around February 2026 after downloading a malicious game script, and the malware harvested administrative credentials for Context.ai's own infrastructure
T1204.002 - User Execution: Malicious File T1555.003 - Credentials from Web Browsers

The first link in a chain that ended inside a major hosting platform was somebody's personal gaming habit. Researchers attribute the initial compromise to Lumma Stealer, an ordinary malware-as-a-service infostealer that has been sold since 2022 and that scrapes browser credentials, session cookies and wallet data for resale on criminal markets. There was no targeting, no zero-day and no sophistication in this step at all. What made it consequential is what the infected machine happened to hold: administrative access to Context.ai's infrastructure and to its OAuth application. This is the same root as UNC5537 / Snowflake, where infostealer logs from unmanaged endpoints became the entry point to 165 organizations, and it is worth noticing how often a purchased log is the beginning of an enterprise incident.

Malware: Lumma Stealer, commodity malware-as-a-service, active since 2022
Delivery: A malicious game script or exploit downloaded to a personal machine
Approximate date: February 2026
Harvested: Browser credentials and session tokens, including administrative access to Context.ai infrastructure and its OAuth application
Targeting: None. The victim was opportunistic; the value was discovered afterwards
Lumma StealerInfostealerUnmanaged EndpointT1555.003
🔑 Credential Access - Into the Vendor's AWS Environment and OAuth Application
02
By March 2026 the attacker was inside Context.ai's AWS environment and had compromised the OAuth tokens the product held for its users
T1528 - Steal Application Access Token T1078.004 - Valid Accounts: Cloud Accounts

The stolen administrative credentials led into Context.ai's cloud environment, and from there to the tokens the application stored on behalf of the people who had connected it to their accounts. An AI productivity tool is an unusually dense token store by design: it cannot summarize a user's mail or documents without holding durable access to them, so its database is effectively a directory of standing grants across many organizations. The attacker did not need to compromise any of those organizations. It only needed the vendor that had already been authorized by all of them, which is the same structure that made Salesloft Drift reach 700 Salesforce tenants from one integration.

Timing: March 2026, roughly a month after the endpoint infection
Reached: Context.ai's AWS environment and the OAuth tokens held for consenting users
Why the vendor is dense: An AI assistant must hold durable read access to mail and documents to function
Effect: One vendor compromise yields standing access across every customer that connected
OAuth Token TheftVendor AWSStanding GrantsT1528
⬆️ Privilege Escalation - Broad Consent Scopes Turned Into Any User's Token
03
The OAuth application had been granted sweeping permissions at onboarding, so the attacker could generate valid tokens for any user who had consented, without that user's involvement
T1550.001 - Use Alternate Authentication Material: Application Access Token

Researchers describe the OAuth app as having been given "allow all" style permissions during onboarding, which is the ordinary outcome when an employee installs a productivity tool and clicks through the consent screen. Control of the application therefore meant the ability to issue working tokens for any consenting identity, silently. This is the property that makes consent-based access different from a stolen password: there is no login event to alert on, no MFA prompt to fail, and no password reset that revokes it. The grant was made once, by a person acting reasonably, and it stayed valid.

Scope posture: Broad, "allow all" style consent granted at onboarding
Capability gained: Mint valid tokens for any user who had connected their account
Invisible to the user: No sign-in, no MFA challenge, no notification
Not revoked by: Password resets, credential rotation, or device compliance
OAuth ScopesSilent Token IssuanceConsent RiskT1550.001
🔀 Lateral Movement - The Vendor Grant Was an Identity Bridge Into Vercel
04
At least one Vercel employee had connected their enterprise Google Workspace account to Context.ai, and the attacker used the compromised token to take over that identity
T1199 - Trusted Relationship T1078.004 - Valid Accounts: Cloud Accounts

Vercel's bulletin states that the attacker leveraged the Context.ai compromise to hijack the employee's Google Workspace account. Researcher accounts differ slightly on the exact surface, describing either a connected OAuth application or a browser extension associated with the tool holding broad read access to the employee's Google Drive; the shared substance is that an employee had personally authorized a third-party AI tool against a corporate identity. That authorization is an identity bridge, and it sits outside the vendor risk process entirely: nobody reviewed Context.ai, because from the company's perspective nobody bought it. This is the hop that turns a small vendor's bad day into a platform's incident.

Bridge: A corporate Google Workspace identity connected to a third-party AI tool by the employee
Accounts differ on: Connected OAuth app versus an associated browser extension with Drive read access
Accounts agree on: Broad, employee-granted access to a corporate identity
Governance gap: Self-service authorization bypasses vendor review, because nothing was procured
Trusted RelationshipShadow AIWorkspace TakeoverT1199
🔍 Discovery - From the Workspace Identity Into Vercel's Internal Systems
05
The hijacked Google Workspace account was used to compromise the employee's Vercel account and reach the environment variables management interface
T1078 - Valid Accounts T1580 - Cloud Infrastructure Discovery

Because Vercel accounts can be reached through Google sign-in, control of the Workspace identity converted directly into control of the Vercel account, and the employee's internal access came with it. From there the attacker navigated to the project settings surface where environment variables are managed and began enumerating. Vercel's later guidance is revealing about which controls would have interrupted this: the bulletin's first remediation item is to enable multi-factor authentication using an authenticator app or passkey, followed by reviewing activity logs and recent deployments and enabling Deployment Protection. Federated sign-in inherits the security of the upstream identity, and here the upstream identity had been handed over by an application the employee trusted.

Pivot: Google Workspace identity → Vercel account via federated sign-in → internal systems
Surface reached: The project environment variables management interface
Vercel's first remediation item: Enable MFA with an authenticator app or passkey
Lesson: Federated login is exactly as strong as the identity provider account behind it
Federated Sign-InAccount TakeoverInternal AccessT1078
🔑 Credential Access - "Non-Sensitive" Environment Variables Decrypt to Plaintext
06
Environment variables that customers had not flagged as sensitive were enumerated and decrypted across a subset of projects, exposing API keys, tokens, database credentials and signing keys
T1552.001 - Unsecured Credentials: Credentials In Files T1530 - Data from Cloud Storage

Vercel offers a "sensitive" flag on environment variables. Values marked sensitive are protected so they cannot be read back through the interface; values left unmarked are stored so they decrypt to plaintext and are readable by anyone with project-level permissions. That flag is opt-in, and the name invited exactly the mistake that followed. In practice, teams had left real credentials unflagged: Vercel's own remediation guidance tells customers to rotate the non-sensitive values, and specifically names API keys, tokens, database credentials and signing keys as the kinds of thing to rotate. Nothing was misconfigured in the sense of a broken setting. The classification was simply wrong, and a classification-based control is worth exactly what the classification is worth.

Exposed: Environment variables not flagged sensitive, which decrypt to plaintext
Contents Vercel told customers to rotate: API keys, tokens, database credentials, signing keys
Scope: A subset of customer projects, expanded during the April 22 to 23 investigation
Root cause of the exposure: An opt-in classification flag, not a broken control
Practical response: Pull every variable, scan it for secrets, and rotate upstream before updating the value
Environment VariablesSecrets ClassificationPlaintext at RestT1552.001
📣 Impact - Disclosure, Rotation, and an Unverified Sale Listing
07
Vercel disclosed on April 19 and updated through April 24, while a BreachForums seller advertised what they claimed was Vercel internal data
T1657 - Financial Theft

Vercel's bulletin runs as a live log: indicators of compromise at 11:04 on April 19, the origin of the attack at 18:01 the same day, clarification on the compromised credentials and npm validation plus MFA guidance on April 20, expanded investigation findings on April 22 and 23 that identified additional affected accounts, and no further updates by April 24. Vercel also noted separate compromise indicators that did not appear to have originated on its systems. Separately, a seller on BreachForums offered what they described as a Vercel database access key and portions of source code for two million dollars. That is an attacker claim advertised on a criminal market, not a confirmed finding, and it should be read as such. Both things can be true at once: the intrusion was real and disclosed, and the sale listing remains unverified.

April 19: IoCs published at 11:04, attack origin disclosed at 18:01
April 20: Clarification on compromised credentials; npm token validation and MFA guidance
April 22 to 23: Expanded investigation identifies additional affected accounts
Unverified: A BreachForums listing claiming a Vercel database access key and source code, at $2M
Vercel's note: Some separate compromise indicators did not appear to originate on Vercel systems
Disclosure TimelineBreachForumsUnverified ClaimT1657

🛡 How to Defend Against This Chain

Inventory and govern OAuth grants as identity infrastructure, because that is what they are. Every connected application is a standing, password-independent grant against a corporate identity, and nobody in procurement saw it. Enumerate third-party app consents in Google Workspace or Entra ID, restrict user consent to a vetted allow-list, require admin approval for anything requesting broad mail or drive scopes, and review the list on a schedule. The Salesloft Drift chain a year earlier ran on exactly this surface.
Treat AI productivity tools as a distinct vendor category with tighter criteria. These products cannot deliver value without ingesting organizational data, so they ask for broad scopes as a matter of function, not carelessness. That makes them the densest token stores your employees will ever authorize. Assess them for token storage and encryption, endpoint controls on their own staff, breach notification commitments, and scope minimization, and prohibit connecting them to corporate identities until that assessment is done.
Stop classifying secrets by hand and assume every environment variable holds one. The exposure here was entirely a classification gap: an opt-in "sensitive" flag that real credentials sat outside of. Turn on the protected variant for everything, or better, keep credentials in a secrets manager and inject short-lived values at deploy time. Then verify rather than trust: pull your variables, run a secret scanner over them, and rotate whatever it finds upstream before you update the platform value.
Harden federated sign-in on both ends. Control of the Google account became control of the Vercel account because federated login inherits upstream security wholesale. Enforce phishing-resistant MFA (passkeys or FIDO2 keys) on the identity provider, require it again for privileged actions on downstream platforms, and apply conditional access conditions such as device compliance to both.
Detect the token, not the login, because there is no login. A compromised OAuth grant produces no failed authentication, no MFA denial and no impossible-travel sign-in. Alert instead on application-based access from new networks or geographies, on unusual API call volume through a connected app, and on grants being created or re-scoped. Feed Workspace and Entra ID application audit logs into your SIEM and baseline them like any other identity source.
Assume vendor endpoints are as messy as yours and plan for the fourth party. This chain began with a commodity infostealer on one person's machine at a company most of Vercel's customers had never heard of. Ask vendors how they manage endpoint compromise and credential rotation, and design so that a vendor breach is survivable: scoped tokens, short lifetimes, revocation you can execute in minutes, and an inventory that tells you which of your systems a given vendor can reach.

Related defense topics