메뉴
HN
Hacker News 40일 전

로블록스 치트와 AI 툴이 Vercel 플랫폼을 붕괴시킨 사건

IMP
9/10
핵심 요약

한 엔지디니어의 업무용 PC에서 로블록스 치트를 다운로드하면서 시작된 해킹 사건이, 과도한 OAuth 권한을 요구하는 AI 도구(Context.ai)를 거쳐 Vercel 내부 시스템 침해로 이어졌습니다. 민감(Sensitive) 설정이 아닌 기본 환경 변수들이 유출되었으며, 이는 편의를 위해 권한을 방치한 개발자들과 기업에게 큰 경종을 울리는 공급망 해킹 사례입니다.

번역된 본문

어젯밤 새벽 1시에 휴대폰으로 트렌드마이크로(Trend Micro)의 보고서를 읽었는데, 그 이후로 줄곧 이 사건에 대해 생각하지 않을 수 없었습니다. 사건의 타임라인이 정말 말도 안 되게 황당합니다.

2026년 2월. Context.ai의 직원 한 명이 로블록스 치트 프로그램을 다운로드합니다. 그렇습니다, 로블록스 치트입니다. 여기에 'Lumma Stealer'라는 악성코드가 함께 포함되어 있어서 세션 쿠키와 자격 증명 등 모든 것을 탈취했습니다. 이 직원은 엔터프라이즈 고객을 위한 OAuth(OAuth) 연동을 처리하는 회사의 내부 시스템에 접근할 수 있는 권한을 가지고 있었습니다.

2026년 3월. 공격자는 Context.ai의 탈취된 인프라를 발판으로 삼아 Vercel 직원의 Google Workspace 계정에 침투합니다. 이 Vercel 직원은 회사 계정으로 Context.ai의 'AI 오피스 스위트'에 가입했고, 가입 과정에서 광범위한 OAuth 권한을 부여했던 것입니다. Vercel 소속 엔지니어가 온보딩 절차에서 요구한다고 해서 그냥 무심코 클릭하며 제3자 AI 툴에 기업용 구글 계정 접근 권한을 넘겨버린 겁니다.

4월 19일. 기예르모 라우흐(Guillermo Rauch)가 모든 것을 확인했습니다. 민감하지 않은(non-sensitive) 환경 변수(environment variables)에 접근해 데이터를 유출당했습니다. 'ShinyHunters'라는 이름을 사용하는 위협 행위자가 이 데이터에 대해 200만 달러를 요구하고 있지만, 실제 ShinyHunters 그룹은 자신들은 연관이 없다고 부인하고 있습니다. Vercel 역시 같은 날 사고 공지를 발표했습니다.

잠깐, 사실 평문(Plaintext)은 아니었습니다 초기에 읽고 잘못 이해했던 부분을 바로잡아야겠습니다. 처음에는 '환경 변수를 평문으로 저장했다고?'라는 반응이었지만, 실제로는 그런 식으로 작동하지 않습니다. Vercel의 모든 환경 변수는 저장 시 암호화됩니다. '민감(Sensitive)' 체크박스가 암호화 자체를 켜고 끄는 것은 아닙니다. 이 체크박스는 암호화된 값을 복호화하는 '방식'을 변경합니다. 민감하지 않은 변수는 대시보드 백엔드에서 복호화할 수 있습니다. 사용자가 UI에서 이를 보고, 편집하고, 복사할 수 있는 것이죠. 반면 민감 변수는 빌드 시에만 복호화가 가능하며 쓰기 전용(Write-only)입니다. 값을 한 번 설정하면 다시 볼 수 없고, 오직 앱만 런타임에 읽을 수 있습니다.

결국 공격자가 Vercel의 내부 시스템에 침투했을 때, 민감하지 않은 변수를 복호하는 백엔드에 접근할 수 있었던 것입니다. 반면 민감한 변수들은 안전해 보입니다. Vercel은 민감한 변수가 유출되었다는 증거는 없다고 밝혔습니다. 이는 단순한 '평문 저장' 실수보다 오히려 더 최악입니다. 왜냐하면 문제가 더 교묘하기 때문입니다. 암호화는 분명 존재했고 인프라도 갖춰져 있었습니다. 하지만 기본값이 덜 보호되는 옵션으로 설정되어 있었고, 대부분의 개발자는 굳이 이를 변경하지 않았을 것입니다. 왜 변경해야겠다는 생각을 하겠습니까? 텍스트 필드에 API 키를 붙여넣고 저장 버튼을 누르는 것이 전부인데, 누가 환경 변수의 복호화 범위를 바꾸는 체크박스가 있는지 일부러 찾아보겠습니까? 그냥 플랫폼이 알아서 안전하게 처리해줄 거라고 믿습니다.

Vercel은 최근 기본 설정을 '민감(Sensitive)'으로 변경했습니다. 이는 이전의 기본값이 잘못되었음을 인정하는 셈입니다. 하지만 이 변경이 있기 전에 생성된 모든 환경 변수는 누군가 수동으로 각각 설정을 바꾸지 않는 한 여전히 덜 보호되는 상태로 방치되어 있습니다.

당신이 권한을 승인한 모든 AI 도구는 열어둔 문입니다 나는 2년 동안 AI 툴링 시장을 지켜보며 신경 쓰이는 패턴을 발견했습니다. 모든 AI 생산성 도구가 제 기능을 하려면 광범위한 접근 권한을 요구한다는 것입니다. 그게 바로 이들의 존재 가치이기도 하죠. 이들은 당신의 문서, 이메일, 코드, 워크스페이스가 필요합니다. 그 가치 제안 자체가 '데이터 접근성'에 있죠. 당신의 업무 흐름에 연결하는 모든 AI 툴은 공격 표면(Attack surface)을 증폭시키는 요인이 됩니다.

Context.ai는 그저 단순한 비효율적인 오케스트레이션이 아니었습니다. (이전 문맥의 불완전한 문장: Join to see! configure the). Y콤비네이터(Y Combinator) 출신 기업이었습니다. 엔터프라이즈 고객을 보유하고 있었고, 보안 인증인 SOC 2 규정 준수도 갖추고 있었습니다. 그런데 직원 한 명이 업무용 컴퓨터에 게임 치트 프로그램을 다운받는 바람에 회사 전체가 공급망 해킹의 무기로 전락한 겁니다.

이 보고서를 읽고 나서 지난 1년 동안 내가 직접 권한을 승인했던 수십 개의 AI 툴을 살펴보았습니다. 그중 9개가 '모든 이메일 읽기'와 '모든 드라이브 파일 접근' 권한을 포함하는 Google Workspace OAuth 권한을 가지고 있었습니다. 무려 9개나 됩니다. 온보딩 과정에서 권한 요청이 떴고 내가 바빴기 때문에 그냥 무심코 승인 버튼을 눌렀습니다.

사실 내가 승인한 전체 OAuth 앱이 몇 개인지 세어보다가 우울해져서 23개에서 세기를 멈췄습니다. 그중 절반이 무슨 역할을 하는 앱인지조차 기억나지 않습니다. 1월에 두 번 정도 사용한 적 있는 회의 요약 앱이 여전히 내 이메일에 대한 전체 접근 권한을 가지고 있습니다. 이건 분명 내 잘못이기도 하지만, 동시에 (시스템의 문제이기도)

원문 보기
원문 보기 (영어)
I read the Trend Micro report on my phone at 1am last night and havent been able to stop thinking about it since. The timeline is genuinely absurd. February 2026. An employee at Context.ai downloads a Roblox cheat. A Roblox cheat. Lumma Stealer comes bundled with it, grabs session cookies, credentials, everything. That employee had access to internal systems at a company that handles OAuth integrations for enterprise customers. March 2026. The attacker uses Context.ai's compromised infrastructure to pivot into a Vercel employee's Google Workspace account. This Vercel employee had signed up for Context.ai's "AI Office Suite" with their enterprise credentials and granted broad OAuth permissions. A Vercel engineer gave a third-party AI tool access to their corporate Google account because the onboarding flow asked for it and they clicked through. April 19. Guillermo Rauch confirms everything. Non-sensitive environment variables were accessed and exfiltrated. A threat actor using the ShinyHunters name is asking $2 million for the data, though the actual ShinyHunters group says theyre not involved. Vercel published their incident bulletin the same day. Wait, it wasnt actually plaintext Okay I need to correct something I got wrong in my initial read of this. My first reaction was "they stored env vars in plaintext??" but thats not exactly whats happening. All Vercel env vars are encrypted at rest. The "sensitive" checkbox doesnt toggle encryption on and off. What it does is change how the decryption works. Non-sensitive vars can be decrypted by the dashboard backend. You can view them, edit them, copy them from the UI. Sensitive vars can only be decrypted at build time. Write-only. Once you set them you cant see the value again, only the app can read them at runtime. So when the attacker got into Vercel's internal systems, they could access the backend that decrypts the non-sensitive vars. The sensitive ones appear to be safe. Vercel says they have no evidence the sensitive vars were accessed. This is actually worse than a simple "plaintext" screwup because its more subtle. The encryption existed. The infrastructure was there. But the default was set to the less protected option and most developers never changed it because why would you. You see a text field, you paste your API key, you hit save. Nobody is hunting for a checkbox that changes the decryption scope of their environment variable. You just assume the platform handles that. Vercel has since changed the default to sensitive. Which is an admission that the old default was wrong. But every env var created before that change is still sitting there in the less protected state unless someone manually went back and toggled each one. Every AI tool you authorized is a door you left open I've been watching the AI tooling space for two years and theres a pattern that bugs me. Every AI productivity tool requires broad access to function. Thats the whole point. They need your docs, your emails, your code, your workspace. The value proposition is the access. Every AI tool you plug into your workflow is an attack surface multiplier. Context.ai wasnt efficient orchestration configure the Join to see! . It was a Y Combinator company . Enterprise customers. SOC 2 compliance supposedly. And one employee downloading game cheats on a work machine turned the whole thing into a supply chain weapon. I went through about a dozen AI tools I've personally authorized in the last year after reading this. Nine of them have Google Workspace OAuth permissions that include reading all emails and accessing all Drive files. Nine. I authorized every one of them without reading the permissions because the onboarding flow asked and I was in a hurry. Actually I started counting how many OAuth apps I had authorized total and stopped at 23 because it was getting depressing. I dont even remember what half of them do. A meeting summarizer I used twice in January still has full email access. Thats on me but its also on every OAuth dialog ever designed because theyre all terrible. 6 hours to rotate one project. Now multiply. Vercel's incident page says "limited customer credentials" were compromised. BleepingComputer says the attacker is actively selling data. Crypto developers are scrambling because wallet infrastructure ran through Vercel env vars. The immediate damage is bad enough. But the part I keep coming back to is the trust cost. Every developer on Vercel now has to go through every env var they ever set, figure out which ones werent marked sensitive, rotate every credential, and decide if they still trust the platform. Thats hundreds of thousands of projects. Some people are reporting it took them 6+ hours just to rotate everything on a single project. Multiply that by the active Vercel userbase and youre looking at millions of developer-hours spent on credential rotation this week. Nobody at Vercel wants anyone doing that math right now. The breach-rotate-forget cycle Honestly? Probably not much changes for most people. I've watched this pattern enough times. Breach happens. Posts get written. Keys get rotated for about a week. Then everyone goes back to pasting secrets into platform dashboard text fields because its convenient and the alternatives require actual work. AWS Secrets Manager. HashiCorp Vault. SOPS + age. Self-hosted infrastructure. Real options that real teams use. All require more setup than a text field. The gap between knowing whats secure and doing whats secure is measured entirely in convenience. I started looking into how many YC companies have had security incidents tied to... actually thats a different rabbit hole for a different post. The one thing I am doing differently is what Im calling the 12x audit. For every AI tool I authorize, Im spending 12x the time I used to spend clicking "Allow" on actually reading what it requests. Thats still only about two minutes per tool since I was spending roughly ten seconds before. But two minutes would have caught the exact permission pattern that made this whole chain possible. Ten seconds didnt. A Roblox cheat brought down one of the biggest deployment platforms on the internet. Not a zero-day. Not a nation-state. A game cheat that a Context.ai employee probably downloaded for their kid. The attack surface wasnt sophisticated. It was convenient. And convenience is the only product the entire AI tooling industry is actually selling. Respond Respect -- Share