How a Roblox Cheat Script Took Down Vercel: Anatomy of a Supply Chain Breach

8 min readSecurity

Introduction

We trust our deployment platforms with everything — API keys, database credentials, signing secrets. We assume the infrastructure behind "git push and done" is airtight.

On April 19, 2026, Vercel — the platform powering hundreds of thousands of production apps — disclosed a security breach. Not from a zero-day exploit. Not from a brute-force attack. From a browser extension.

A single employee at a third-party AI company downloaded Roblox cheat scripts on a work machine. That infection cascaded through OAuth tokens, bypassed MFA, breached Vercel's internal systems, and exposed customer environment variables. A threat actor on BreachForums demanded $2 million for the stolen data.

So how does a game exploit script take down one of the most trusted deployment platforms in the world?

Turns out, it's all about trust chains — and how a single weak link shatters the entire graph.

Let me walk through each link in this chain.


Layer 1: The Entry Point — Infostealer Malware

It started in February 2026 at Context.ai, a company building an "AI Office Suite" browser extension. An employee there was downloading Roblox auto-farm scripts and game exploits — notorious vectors for malware distribution.

The employee got infected with Lumma Stealer, one of the most prolific infostealer malware families in the wild. Lumma doesn't do anything flashy. It quietly harvests:

  • Browser-stored credentials
  • Session cookies
  • OAuth tokens
  • Saved passwords

From this single infection, the attacker walked away with the employee's Google Workspace credentials, plus keys for Supabase, Datadog, and Authkit.

By March 2026, Context.ai identified and blocked unauthorized access to their AWS environment. But the credentials were already exfiltrated.

Why this link broke: Your supply chain is only as secure as your vendor's weakest employee. A developer downloading game cheats on a work machine is all it takes. No firewall, no endpoint protection, no security policy prevented this — because it happened at a third-party company you have zero visibility into.


Layer 2: The Pivot — OAuth Token Hijack

Here's where it gets interesting.

A Vercel employee had previously signed up for Context.ai's AI Office Suite browser extension. They used their Vercel enterprise Google account. And they granted it "Allow All" OAuth permissions.

This is the critical detail. When you grant an OAuth application "Allow All" access to your Google Workspace, you're giving it a persistent token that can:

  • Read your emails
  • Access your Drive files
  • Act on your behalf in any connected service
  • Bypass MFA entirely — because OAuth tokens are post-authentication

The attacker didn't need the Vercel employee's password. They didn't need to defeat MFA. They used the stolen Context.ai credentials to access the OAuth token for Context.ai's Google Workspace application:

OAuth App ID: 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj

One compromised third-party app → silent hijack of a Vercel employee's Google Workspace. No re-authentication triggered. No alerts fired.

Why this link broke: OAuth "Allow All" is a skeleton key. Most developers click through permission dialogs without reading them. One overly-broad grant to a third-party tool = direct, MFA-free access to your corporate identity. The trust model assumes the third-party app is secure. It wasn't.


Layer 3: The Escalation — Inside Vercel

With full access to the compromised employee's Google Workspace, the attacker pivoted into Vercel's internal environments.

Vercel described the threat actor as "sophisticated" — they showed "operational velocity and detailed understanding of Vercel's systems." From inside, they targeted customer project environment variables.

Here's the critical distinction that made this breach so damaging:

Environment Variable Types in Vercel:

"Sensitive" → Encrypted at rest → NOT exposed
"Non-Sensitive" (default) → Stored in plaintext → EXPOSED

Before this breach, Vercel's default for environment variables was "non-sensitive" — meaning plaintext storage. If you never explicitly toggled the "sensitive" flag on your env vars, your API keys, database connection strings, signing secrets, and tokens were all stored unencrypted.

Why this link broke: "Non-sensitive" is a dangerous default label. Developers store database passwords, Stripe keys, and JWT secrets as environment variables — and most never think to check a "sensitive" toggle. The platform's default assumed these values weren't worth encrypting. That assumption cost them.


Layer 4: The Fallout

What Was Exposed vs. What Was Safe

ExposedNot Compromised
Non-sensitive env vars (API keys, DB creds, tokens)Env vars marked "sensitive" (encrypted at rest)
580 employee records (names, emails, account status)Next.js / Turbopack open-source source code
NPM and GitHub tokensnpm packages (verified by GitHub, npm, Socket)
Internal dashboard screenshotsVercel's open-source projects
Access keys and source code
Database data

The $2 Million Ransom

A user on BreachForums claiming to be ShinyHunters — a notorious hacking group — posted the stolen data and demanded $2 million. They shared screenshots of internal Vercel dashboards, employee records, and environment variable dumps as proof.

Plot twist: the actual ShinyHunters group denied involvement to BleepingComputer, suggesting the poster is an impersonator using their name for credibility.

Community Reaction

Theo was one of the first to sound the alarm:

I have reason to believe this is credible. If you are using Vercel, it’s a good idea to roll your secrets and env vars.

Alex
Alex
@DiffeKey

Vercel has reportedly been breached by ShinyHunters. As of now, nobody else appears to be posting about this, so I’m sharing what I have. Here is the information I’ve gathered, along with screenshots provided by ShinyHunters. #cybernews #shinyhunters #breach #vercel #news

Image
Image
Image
Image
1.3K
Reply

Followed by a detailed breakdown:

Vercel got pwn’d. Here’s what I’ve managed to get from my sources: 1. Primary victim here is Vercel. Things like their Linear and GitHub got hit with majority of it 2. Env vars marked as sensitive are safe. Ones NOT marked as sensitive should be rolled out of precaution 3. The

Image
Vercel
Vercel
@vercel

We’ve identified a security incident that involved unauthorized access to certain internal Vercel systems, impacting a limited subset of customers. Please see our security bulletin: vercel.com/kb/bulletin/ve…

2.7K
Reply

Vercel's official statement:

Guillermo Rauch, Vercel's CEO, posted directly:

The crypto community was particularly alarmed — developers scrambled to rotate API keys, with projects on Vercel rushing to lock down payment and wallet-related credentials.

Gergely Orosz put it well:

The Vercel security breach is a reminder that each and every SaaS tool your team uses IS a security risk of its own - especially if they need broad data access to eg email, internet docs etc (many AI tools do just this) Security teams onboarding new vendors happens for a reason.

Guillermo Rauch
Guillermo Rauch
@rauchg

Here's my update to the broader community about the ongoing incident investigation. I want to give you the rundown of the situation directly. A Vercel employee got compromised via the breach of an AI platform customer called Context.ai that he was using. The details

970
Reply

Layer 5: The Bigger Picture — Supply Chain Trust

Let's zoom out. Here's what a typical Vercel deployment's trust graph looks like:

Every node in this graph is an attack surface. Every arrow is a trust boundary.

In traditional hosting, your attack surface was your server. You controlled the box, you controlled the access, you controlled the keys. Modern deployment is different — your attack surface is every tool your team uses.

This breach fits a broader 2026 pattern. LiteLLM, Axios, and now Vercel — attackers are consistently targeting developer-stored credentials across CI/CD pipelines, package registries, OAuth integrations, and deployment platforms. They don't need to break your encryption. They just need to find one node in your trust graph that stores credentials in plaintext and has a weak link upstream.

The question isn't "is my app secure?" anymore. It's "is every tool that touches my app secure?"


The Survival Guide

Immediate Actions (Do These Now)

  1. Rotate ALL non-sensitive environment variables — treat every plaintext env var as compromised
  2. Enable MFA on all Vercel, GitHub, and npm accounts
  3. Check Google Workspace for Context.ai's OAuth app (App ID: 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj) and revoke it immediately
  4. Review Vercel account activity logs for suspicious access
  5. Inspect recent deployments for anomalies or unauthorized changes
  6. Rotate Deployment Protection tokens
  7. Set Deployment Protection to "Standard" minimum

Long-Term Hardening

AreaActionWhy
Env VarsDefault all to "sensitive" modePlaintext = exposed on any internal breach
OAuthRestrict third-party app permissions in Google Admin"Allow All" = skeleton key
Browser ExtensionsEnforce allowlist policy for enterprise browsersUnvetted extensions = attack vector
Vendor SecurityRequire SOC 2 / security questionnaire for tools with OAuth accessYour security = their security
MonitoringAlert on new OAuth grants and unusual access patternsDetect pivots early
Secrets ManagementUse external vaults (AWS Secrets Manager, HashiCorp Vault) instead of platform env varsDon't put all eggs in one basket

Vercel's Response

Credit where it's due — Vercel moved fast:

  • Engaged Mandiant and additional cybersecurity firms for incident response
  • Notified law enforcement and contacted impacted customers directly
  • Collaborated with Microsoft, GitHub, npm, and Socket to verify no package compromise
  • Product changes: Environment variables now default to "sensitive" mode (encrypted at rest)
  • Improved activity logging and enhanced team management tools

The default-to-sensitive change is the most impactful. It should have been the default from day one — but at least it's there now.


Conclusion

A Context.ai employee downloaded Roblox cheats. That installed Lumma Stealer. That stole OAuth credentials. That hijacked a Vercel employee's Google Workspace. That exposed customer environment variables stored in plaintext.

Five hops. One browser extension. Hundreds of thousands of potentially affected deployments.

Your deployment pipeline isn't a chain — it's a trust graph. Every node is an attack surface. Every OAuth grant is a trust decision. Every "Allow All" click is a skeleton key waiting to be found.

Audit your trust graph like your production data depends on it — because it does.


References

Quick Facts

🌍 Based in India

🚀 Open Source Enthusiast

😰 Serial Introvert

DHRUV.DEV

DHRUV.DEV