본문으로 건너뛰기
피드

Vercel 해킹 사건 — OAuth 공급망 공격으로 환경변수 '기본값 OFF'의 대가를 치르다

security 약 12분

2026년 2월 Context.ai 직원 PC가 Lumma Stealer에 감염되면서 시작된 OAuth 공급망 공격이 Vercel 내부 시스템까지 뚫고 들어가 고객 환경변수를 유출했다. 핵심 설계 문제는 Vercel의 sensitive 플래그가 기본값 OFF라 개발자가 직접 켜지 않으면 API 키·DB 자격증명이 내부에서 평문으로 조회됐다는 점. 같은 3주 사이 LiteLLM·Axios 공급망 공격도 터지면서 플랫폼에 저장된 자격증명이 공격자의 공통 타깃이 됐음이 드러났다.

  • 1

    Context.ai OAuth 앱 탈취 → Vercel 직원 Google Workspace → 내부 시스템 → 환경변수 열거 순으로 피벗

  • 2

    Vercel의 sensitive 플래그가 기본값 OFF. 옵트인 설계라 현실에선 거의 안 켜짐 → 평문 저장

  • 3

    고객이 4월 10일 OpenAI로부터 키 유출 알림 받음. Vercel 공식 공개는 4월 19일 — 9일 공백이 GDPR·SOC 2 쟁점

  • 4

    CEO가 'AI로 가속된 공격'이라 공개 발언. 인간 페이스 기준 탐지 임계값의 재조정 필요

  • 5

    LiteLLM·Axios·Vercel 세 공급망 공격이 3주 사이 연쇄 발생. 공통 타깃은 개발자 툴체인의 자격증명

  • 6

    로테이션만으로 부족 — Vercel 배포는 불변이라 새 배포를 안 찍으면 이전 배포가 옛날 키를 계속 씀

  • Vercel이 2026년 4월 19일 OAuth 공급망 공격으로 내부 시스템이 뚫렸다고 공식 공개함 — CEO 기요르모 라우시(Guillermo Rauch)가 X에 상세 쓰레드로 인정
    • 공격 시작은 2026년 2월. Context.ai 직원 PC가 Lumma Stealer(인포스틸러) 감염 — 놀랍게도 Roblox 게임 익스플로잇 스크립트를 받다가 당함 (Hudson Rock, CyberScoop 보도)
    • Context.ai는 Vercel 직원이 승인했던 Google Workspace OAuth 앱. 이게 공격자에게 넘어가면서 Vercel 직원 Workspace 계정 → 내부 시스템 → 고객 환경변수 순으로 도미노식 타격
    • 공격자가 시스템에 머문 기간(dwell time) 약 2개월. 초기 보도에서는 22개월이라고 나갔다가 정정됨

핵심 설계 문제 — "sensitive" 플래그가 기본값 OFF

  • Vercel 환경변수에는 sensitive 플래그가 있는데, 켜야만 저장 시 암호화되고 조회가 제한됨. 근데 기본값이 꺼져 있음
    • 즉 개발자가 DATABASE_URL, AWS_SECRET_ACCESS_KEY, STRIPE_SECRET_KEY 넣을 때 의식적으로 플래그 안 켜면 내부 접근 권한만 있어도 평문으로 보임
    • 보안 컨트롤을 "매 시크릿마다 수동 옵트인"으로 만들면 현실에선 아무도 안 쓴다는 걸 다시 증명한 케이스

⚠️주의

> Vercel 쓰는 팀이면 지금 당장 환경변수 전부 감사하고, 2026년 2월 이후 저장했던 시크릿은 전부 로테이션 + 재배포해야 함. 라우시 본인이 "로테이션만 하고 재배포 안 하면 이전 배포는 옛날 값을 계속 쓴다"고 명시함

OAuth가 기존 보안 방어선을 우회하는 이유

  • OAuth 토큰은 한번 승인되면 비밀번호 없이도 계속 붙어 있음. 패스워드 로테이션에도 안 죽고, 스코프가 넓은 경우(메일·드라이브·캘린더 전부 접근)도 흔함
    • 초기 승인 후 주기적 감사 안 하는 게 업계 관행이라 공격자 입장에선 "신뢰 관계" 자체가 방어선을 피해가는 경로가 됨
    • 그래서 OAuth 거버넌스는 이제 IAM과 별개로 "서드파티 벤더 리스크 관리" 영역으로 다뤄야 한다는 주장
sequenceDiagram
    participant 공격자
    participant ContextAI as Context.ai 직원 PC
    participant GWS as Google Workspace
    participant Vercel직원 as Vercel 직원 계정
    participant Vercel내부 as Vercel 내부 시스템
    공격자->>ContextAI: Lumma Stealer 감염 (Roblox 스크립트 경유)
    ContextAI->>공격자: OAuth 토큰 + AWS 자격증명 탈취
    공격자->>GWS: Context.ai OAuth 앱으로 워크스페이스 접근
    GWS->>Vercel직원 as 이메일/드라이브/캘린더 열람
    공격자->>Vercel내부: SSO/수집 자격증명으로 내부 진입
    Vercel내부->>공격자: 비-sensitive 환경변수 열거 및 유출

탐지-공개 사이 9일 공백

  • Vercel 고객 Andrey Zagoruiko가 4월 10일 OpenAI로부터 "API 키가 외부에 노출됐다"는 알림을 받음 — 그 키는 Vercel에만 존재하던 키였음
    • Vercel 공식 공개는 4월 19일. 즉 최소 9일 전부터 유출 증거가 외부에 존재
    • GDPR 72시간 고지 의무, SOC 2 지속 모니터링 관점에서 민감한 포인트. "Vercel은 언제 알았나"가 규제 이슈로 떠오름
  • 이제 OpenAI·Anthropic·GitHub·AWS·Stripe가 보내는 "당신 키가 유출됐다" 알림은 플랫폼 침해의 조기 경보 채널로 취급해야 한다는 게 이번 사건의 교훈

CEO의 "AI 가속 공격" 주장

  • 라우시가 공개적으로 "공격 그룹이 고도로 정교했고, AI로 크게 가속화된 것으로 강하게 의심한다"고 발언
    • 구체 근거는 "Vercel 내부 용어를 수동 정찰 없이 파악한 정황", "속도가 인간 페이스를 초과", "에러·레이트리밋 회복이 자연스러움"
    • Microsoft도 4월 발표에서 Storm-2372 후속 캠페인이 생성형 AI로 피싱 미끼·백엔드 자동화를 돌린다고 문서화. 탐지 룰 임계값을 인간 페이스 기준으로 맞춰두면 AI 가속 공격에는 미탐(false negative) 난다는 경고

3주 사이 공급망 연쇄 공격 — 패턴이 드러남

  • LiteLLM (3/24): Trivy CI/CD 자격증명 훔쳐서 PyPI에 악성 litellm 1.82.7, 1.82.8 배포. 일 다운로드 340만. 40분~3시간 살아있다가 제거됨. CVE-2026-33634
    • 페이로드는 3단계 백도어로 50종 이상 클라우드 자격증명 노리고 Kubernetes DaemonSet으로 횡적 확산
  • Axios (3/31): 메인테이너 계정 탈취로 주당 7천만~1억 다운로드 규모 패키지에 악성 버전 1.14.1, 0.30.4 배포. [email protected] 의존성 주입하고 크로스플랫폼 RAT 심음. MS가 북한 Sapphire Sleet에 귀속
  • Vercel (4/19): OAuth → 내부 시스템 → 환경변수
  • 세 공격 전부 타깃이 같음 — 개발자 툴체인에 저장된 자격증명·시크릿

크리덴셜 팬아웃의 무게

  • Vercel 프로젝트 하나에 환경변수 보통 1030개. 50개 프로젝트 쓰는 조직이면 5001500개 자격증명이 한 플랫폼에
    • 각 자격증명이 별도 시스템의 진입점 — DB, 클라우드(AWS/GCP/Azure), 결제(Stripe), 인증(Auth0), 이메일(SendGrid), 모니터링(Datadog), 소스(GitHub/NPM), AI API(OpenAI/Anthropic)
    • 플랫폼 한 번 뚫리면 공급망 전체로 확산되는 "곱셈기" 역할

ShinyHunters 포럼 주장은 분리해서 봐야

  • BreachForums에 ShinyHunters 계열을 자칭하는 자가 "Vercel 직원 580명 기록 + 소스코드 + API키 + GitHub/NPM 토큰 + Linear 워크스페이스 확보했다"고 주장 + 200만 달러 요구
    • 근데 기존 ShinyHunters 멤버들은 BleepingComputer에 "우린 아니다"라고 부인. 브랜드 자체가 여러 행위자에게 재사용되고 있어서 공격자 귀속이 모호
    • Vercel 공식 발표가 서술한 OAuth 공격 체인만으로는 포럼이 주장하는 데이터 범위가 안 나옴 → 과장·별개 사건·조작 가능성

중요

> 업계 트렌드는 환경변수 기반 시크릿 저장소를 버리고 전용 시크릿 매니저(Vault, AWS Secrets Manager, Doppler, Infisical)로 런타임 주입하는 방향. Vercel 사건이 이 선택을 다시 한번 정당화함

디펜더 입장 — 즉시·단기·장기 액션

  • 즉시(0-48시간): 2026년 2월 이후 저장한 sensitive 안 된 환경변수 전부 로테이션 → 재배포. OAuth 앱 승인 목록 감사 (알려진 악성 Client ID 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com 검색)
  • 단기(1-4주): 시크릿 매니저 마이그레이션, CI/CD는 OIDC 기반 단기 자격증명으로 전환, OAuth 앱을 서드파티 벤더 인벤토리에 등록
  • 장기(1-6개월): 환경변수에 들어가는 시크릿은 "언제든 유출될 수 있다"는 제로트러스트 전제. 최소권한, 역할 기반 임시 자격증명, PaaS를 SBOM tier-1 공급망 의존성으로 취급
  • 탐지 관점에서 가장 가치 있는 포인트는 OAuth 앱 접근(T1199)에서 내부 시스템 접근(T1078)으로 피벗하는 구간 — 예상 스코프 밖 리소스 접근, 예상 IP 범위 밖 토큰 사용 모니터링

기술 맥락

Vercel의 환경변수 설계를 놓고 업계에서 한참 전부터 "이거 위험하다"는 지적이 있었어요. 환경변수는 원래 12-factor app 철학에서 나온 거라 "런타임 설정"용이었는데, 현실에서는 API 키·DB 접속 문자열 같은 시크릿을 담는 용도로 굳어졌거든요. 문제는 환경변수가 프로세스 환경이나 빌드 아티팩트 곳곳에 퍼져서 감사가 어렵다는 점이에요.

그래서 Vault, AWS Secrets Manager, Doppler, Infisical 같은 전용 시크릿 매니저가 떠오른 이유가 바로 이거예요. 런타임에 단기 토큰으로 가져오고, 접근 로그 남기고, 자동 로테이션 붙이는 식. Vercel이 sensitive 플래그를 기본값 OFF로 둔 건 개발자 편의를 위해서였겠지만, "매 시크릿마다 옵트인하라"는 보안 정책은 실무에서 거의 안 지켜져요. GitHub Actions가 모든 시크릿을 로그에서 자동 마스킹하는 것도 같은 교훈 때문이죠.

OAuth 공급망 공격은 왜 기존 방어선을 뚫었냐면, OAuth 토큰은 비밀번호 초기화·MFA 재요구·세션 만료 같은 전통적 통제를 전부 우회하거든요. "한번 앱 승인하면 끝"이에요. 그래서 Google Workspace 관리자가 주기적으로 "우리 회사에 연결된 OAuth 앱 목록"을 감사하고, 안 쓰는 벤더는 revoke하는 루틴이 필요해요. 이걸 IAM이랑 분리해서 "서드파티 리스크 관리"로 다루자는 주장이 나오는 배경이죠.

마지막으로 "rotation 후 redeploy" 얘기가 중요해요. Vercel은 배포 아티팩트가 불변(immutable)이라 새 배포를 안 찍으면 옛날 배포가 계속 옛날 환경변수를 쓰거든요. 그래서 "키 바꿨으니 됐지"가 아니라 "키 바꾸고 → 재배포하고 → 이전 배포 비활성화"까지 가야 실제로 끊기는 거예요.

'매 시크릿마다 수동 옵트인'으로 설계한 보안 컨트롤은 현실에서 거의 쓰이지 않는다는 걸 다시 한 번 증명한 사건. 환경변수를 시크릿 저장소로 쓰는 관행 자체가 지속 가능하지 않다는 쪽으로 업계가 기울고 있다.

댓글

댓글

댓글을 불러오는 중...

security

AI '미토스'가 쏘아올린 제로트러스트 시급성, 한국은 3년째 실증만

앤트로픽의 AI 모델 '클로드 미토스'가 취약점 탐색과 공격 시나리오 구성까지 자동화하면서 한국에서도 제로트러스트 전환이 시급하다는 목소리가 커짐. 그러나 한국의 제로트러스트 도입은 2024년 시범사업 이후 3년째 실증만 반복 중이고 예산은 오히려 축소됨. 전문가들은 5년간 2조 5000억 원 규모 사업화와 법제화를 주문함.

security

블랙덕, 한국 AI 전환 노린다 — AI-BOM·스니펫 분석으로 EU CRA 대응 지원

오픈소스 보안 기업 블랙덕이 한국 시장 진출을 본격화했다. 전 세계 최대 OSS 데이터베이스, 독점 AI 엔진 '컨텍스트 AI', 스니펫 분석, AI-BOM 거버넌스를 차별점으로 내세우며 9월 시행 EU CRA 등 한국 기업의 해외 컴플라이언스 대응을 지원하겠다는 전략이다.

security

블랙덕, 한국 진출 본격화 — EU CRA 9월 발효 정조준

오픈소스 보안 솔루션 기업 블랙덕이 옌 청 APAC 총괄 방한과 함께 한국 시장 공략 의지를 밝혔다. 25년간 쌓은 오픈소스 보안 데이터베이스, 컨텍스트 AI 엔진, 스니펫 분석, AI-BOM을 4대 차별점으로 내세우며 9월 발효되는 EU CRA 컴플라이언스 대응을 한국 수출 기업에 어필했다.

security

실제 공격 트래픽 1억 건 공개 — 위트푸, 아파치 2.0 사이버보안 데이터셋 'Precinct 6' 오픈소스로 풀었다

위트푸가 2024년 실제 공격 트래픽에서 파생한 1억 건 규모의 구조화·라벨링 사이버보안 데이터셋 'Precinct 6'을 허깅페이스에 아파치 2.0으로 공개했다. 시스로그·윈도우 보안 감사·VPC 플로 로그·엔드포인트 원격측정 같은 다중 로그 소스와 출처 그래프, MITRE ATT&CK 매핑 인시던트가 하나로 묶여 있다. 캔터베리대학교와 공동 제작했고 정제 코드까지 오픈소스로 공개됐다.

security

10년 CSAP 해체, 공공 클라우드 인증 '국정원' 단일화 — 2027년 7월 시행

공공 클라우드 진입 검증이 과기정통부 CSAP + 국정원 보안검증 이중 체계에서 국정원 단일 체계로 일원화됨. 2027년 7월부터 시행, CSAP 별표 4는 국정원으로 이관되고 별표 1~3은 ISMS 자율 인증으로 전환. 기존 CSAP 인증은 5년 유효기간 그대로 인정.