본문으로 건너뛰기
피드

Vercel 해킹 사고 — 서드파티 AI OAuth 앱 탈취로 내부 침투, 환경변수 평문 노출

security 약 8분
vote
0
댓글
북마크

Vercel이 내부 시스템 침해를 공식 확인했다. 서드파티 AI 플랫폼 Context.ai 해킹으로 직원 Google Workspace 계정이 탈취됐고, 공격자는 'non-sensitive'로 표시돼 암호화되지 않은 환경변수를 enumerate 해 추가 접근 권한을 얻었다. 공격자는 ShinyHunters를 자처하며 직원 정보·API 키·NPM/GitHub 토큰 판매를 시도 중이다.

  • 1

    최초 침투는 Vercel 외부의 서드파티 AI 도구 Context.ai 해킹에서 시작

  • 2

    탈취된 Google Workspace OAuth 앱을 통해 직원 계정 → 내부 환경으로 권한 에스컬레이션

  • 3

    Vercel의 'non-sensitive' 플래그 환경변수는 at-rest 암호화가 안 돼 평문 노출

  • 4

    직원 580명 정보, API 키, NPM·GitHub 토큰이 판매 대상으로 공개됨

  • 5

    Next.js·Turbopack 등 오픈소스 프로젝트와 서비스 자체는 영향 없음

  • Vercel이 내부 시스템 침해 사고를 공식 확인함 — 공격자가 "ShinyHunters"를 자처하며 해킹 포럼에서 탈취 데이터를 판매 중
    • 포럼 글에는 employee accounts, 내부 deployment 접근 키, API 키(NPM 토큰·GitHub 토큰 포함) 판매 문구가 올라옴
    • 증빙으로 직원 580명의 이름/Vercel 이메일/계정 상태/활동 타임스탬프가 담긴 텍스트 파일과 내부 Enterprise 대시보드 스크린샷이 공개됨
    • 텔레그램에서는 공격자가 200만 달러 몸값 협상 중이라고 주장 (Vercel은 미확인)
  • 자칭 ShinyHunters라지만, 최근 ShinyHunters 공격에 연루된 다른 행위자들은 이번 건과 무관하다고 BleepingComputer에 부인함
    • 즉, 같은 브랜드를 쓰는 서로 다른 팀일 가능성 — 커뮤니티 내 credit 다툼 느낌
  • Vercel 서비스 자체는 영향 없음 — Next.js, Turbopack 등 오픈소스 프로젝트도 안전하다고 못박음

침투 경로 — 서드파티 AI 도구의 OAuth 앱이 첫 단추

  • CEO Guillermo Rauch가 X에서 공개한 상세: 최초 침투는 Context.ai라는 AI 플랫폼의 보안사고 경유
    • Context.ai가 뚫리면서 Vercel 직원의 Google Workspace 계정이 compromise 됨
    • 공격자는 이 계정을 발판으로 Vercel 내부 환경까지 권한을 확장함
  • 문제의 OAuth 앱 ID까지 공개됨 — 110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
    • Google Workspace 관리자라면 지금 당장 이 OAuth 앱이 승인돼 있는지 확인해보는 걸 권장
sequenceDiagram
    participant 공격자
    participant ContextAI as Context.ai(OAuth 앱)
    participant 직원계정 as Vercel 직원 Workspace 계정
    participant Vercel as Vercel 내부 환경
    공격자->>ContextAI: Context.ai 시스템 침해
    ContextAI->>직원계정: OAuth 권한 탈취
    공격자->>직원계정: Google Workspace 계정 접근
    직원계정->>Vercel: 내부 환경으로 권한 에스컬레이션
    공격자->>Vercel: non-sensitive 환경변수 enumerate
    Vercel-->>공격자: 평문 저장된 변수값 노출

핵심 실책 — "non-sensitive" 플래그 환경변수의 평문 저장

  • Rauch의 설명: 모든 고객 환경변수는 기본적으로 at-rest 암호화 되지만, 예외적으로 "non-sensitive"로 지정한 변수는 암호화되지 않음
    • 원래 의도는 "민감하지 않은 정보만 담는 칸"이라는 개발자 편의용 옵션
    • 공격자가 이 변수들을 enumerate 하면서 추가 접근 경로를 확보함
  • 즉, 개발자가 "이건 안 민감하니까" 하고 넣은 값들 중에 실제로는 민감했던 것들이 있었다는 얘기
    • 토큰 prefix, 내부 URL, API endpoint 같은 게 이런 식으로 새는 전형적인 경로
  • Vercel은 대시보드에 환경변수 오버뷰 페이지와 민감 변수 관리 UI를 업데이트해서 롤아웃함

⚠️주의

> Vercel 사용 중이라면 지금 바로 환경변수를 훑어보고, 민감할 수 있는 값은 전부 "sensitive" 플래그로 전환 + secret rotation 하는 게 안전함. "별로 안 민감한데?" 싶은 값도 다시 한 번 체크.

Vercel이 고객에게 권고한 조치

  • 환경변수 전체 감사 — 민감 정보가 non-sensitive로 섞여 있는지 점검
  • sensitive environment variable 기능 활성화로 at-rest 암호화 강제
  • 필요 시 secret rotation
  • Google Workspace 관리자는 문제의 OAuth 앱 승인 여부 확인

기술 맥락

이번 사고의 기술적 뿌리는 OAuth 기반 서드파티 통합의 확산이에요. Google Workspace에 붙이는 AI 도구들이 수십 개씩 있고, 각각이 Workspace 계정 권한 일부를 위임받아 쓰거든요. Context.ai 같은 AI 플랫폼 하나가 뚫리면, 그 OAuth 토큰으로 연결된 모든 조직의 Workspace가 도미노처럼 영향을 받는 구조예요. 그래서 이번 건의 교훈은 "내부 보안 잘 챙기는 걸로는 부족하다"는 거예요 — 써드파티 앱 카탈로그를 주기적으로 정리하고, 불필요한 OAuth 승인은 즉시 회수해야 해요.

두 번째 포인트는 at-rest encryption 디폴트의 중요성이에요. Vercel은 환경변수를 기본적으로 암호화하지만, 개발자 편의를 위해 "이건 민감하지 않음" 옵션을 뒀거든요. 이런 opt-out 형태의 보안 옵션은 늘 위험해요. 개발자는 급할 때 "뭐 이건 괜찮겠지" 하면서 체크하는데, 실제로 공격자 관점에서는 URL·endpoint·토큰 prefix 조각조각이 다 유용한 정찰 정보예요. 그래서 요즘은 "secret은 무조건 암호화, 비밀 아닌 것만 명시적으로 public으로 표시" 하는 allow-list 방식이 권장돼요.

마지막으로 권한 에스컬레이션 방지가 핵심이에요. Workspace 계정 하나가 뚫린 것만으로 프로덕션 환경까지 들어갔다는 건, 내부 접근 권한이 수평적으로 너무 넓게 퍼져 있었다는 뜻이거든요. zero-trust 관점에서는 개별 엔지니어 계정이 프로덕션 secret을 직접 볼 수 있으면 안 되고, 꼭 필요할 때만 just-in-time으로 임시 권한을 부여해야 해요. 이번 사고처럼 하나 뚫리면 전체가 위험해지는 걸 막으려면요.

OAuth로 연결된 서드파티 AI 도구 하나가 뚫리면 연결된 모든 조직이 도미노로 당한다는 걸 보여준 사례. '별로 민감하지 않다'고 표시한 환경변수도 공격자 관점에서는 훌륭한 정찰 자료라는 점이 핵심 교훈.

댓글

댓글

댓글을 불러오는 중...

security

환자 의료기록 133GB가 공개 서버에 노출됐고, 병원은 답이 없었다

캘리포니아 백 앤 페인 스페셜리스트의 서버에서 환자 의료기록 133GB가 공개된 정황이 보고됐다. 제보자는 2026년 3월 31일 병원 측에 알렸지만 응답을 받지 못했고, 5월 20일 AWS에 신고한 뒤 6일 만에 서버가 조치됐다고 밝혔다. 이후 환자와 규제기관에 통지할 계획이 있는지 물었지만 답변은 없었다.

security

레드햇 관련 npm 패키지 감염, 미아즈마 웜이 개발자 환경과 클라우드 계정까지 노렸다

레드햇 관련 npm 패키지가 악성코드에 감염돼 개발자 PC, 깃허브 토큰, 클라우드 자격증명, 쿠버네티스 설정, CI/CD 비밀정보까지 노린 사건이 드러났어. 이번 미아즈마 변종은 패키지 설치만으로 실행되고, VS 코드와 클로드 코드 설정까지 건드려 지속성을 확보하려 했다는 점이 특히 위험해.

security

치폴레 상담봇을 코딩 에이전트로 훔쳐 쓴 밈 프로젝트, 치포틀라이 맥스

치포틀라이 맥스는 치폴레의 고객지원 챗봇 페퍼를 오픈코드의 기본 모델처럼 붙인 밈성 프로젝트다. 핵심은 누군가 페퍼의 웹소켓 기반 백엔드를 역공학해 오픈에이아이 호환 프록시를 만들었고, 이를 코딩 에이전트에 연결해 무료 추론처럼 쓰게 했다는 점이다.

security

소셜 미디어 연령 확인이 무료 인터넷의 끝이 될 수 있다는 경고

멀바드는 소셜 미디어 연령 확인이 아이 보호라는 명분으로 전 세계에 퍼지고 있지만, 실제로는 신원 확인 기반 인터넷 통제 인프라가 될 수 있다고 주장한다. 특히 앱스토어, 운영체제, 브라우저, 가상 사설망까지 통제 범위가 넓어지면 익명 표현과 온라인 프라이버시가 크게 훼손될 수 있다는 경고가 핵심이다.

security

애드어프루트, 플럭스 측 법적 경고로 블로그 발행 일시 중단

애드어프루트가 플럭스 측 법률대리인으로부터 명예훼손 가능성과 컴퓨터 사기 및 남용법 위반 주장을 담은 요구서를 받았다고 공개했어. 애드어프루트는 공개된 서버 설정 오류로 노출된 정보만 확인했고, 보안상 공익이 있는 사안을 책임 있는 공개 방식으로 다뤘다는 입장이야.