검색
약 8분 읽기
Cheese
보안

Vercel 2026년 4월 보안 사고, 개발팀은 무엇을 바꿔야 하나

AI 도구 공급망이 회사 OAuth와 배포 비밀정보 경계까지 흔들었다

#Vercel #보안 사고 #OAuth #AI 공급망 #Next.js

이번 Vercel 사고에서 가장 중요한 건 Vercel이 뚫렸다는 사실 자체보다, AI 도구 하나의 OAuth 타협이 회사 워크스페이스와 배포 비밀정보 경계까지 이어졌다는 점이다.

이 사건은 HN에서 718 points, 407 comments까지 붙으며 크게 번졌다. 이유는 단순하다. PaaS 보안 사고이면서도 동시에 AI 도구 공급망 사고였기 때문이다. 내가 보기엔 이 사건의 핵심은 더 불편하다. 이제 개발팀이 붙이는 생산성 도구, 특히 AI 도구는 더 이상 주변부 SaaS가 아니라 회사 인증과 비밀관리 체계 한가운데에 들어오는 보안 구성요소가 됐다.

이번 사고의 본질은 PaaS보다 OAuth 연동 경계 붕괴다

Vercel 공식 공지에 따르면 이번 사건은 특정 내부 시스템에 대한 무단 접근에서 시작됐다. 초기 조사 단계에서 제한된 일부 고객의 Vercel 자격증명이 영향을 받은 것으로 파악됐고, Vercel은 해당 고객들에게 즉시 자격증명 회전을 권고했다.

그런데 더 중요한 건 4월 19일 추가 공개된 사고 기원이다. Vercel은 공격이 제3자 AI 도구 Context.ai의 Google Workspace OAuth 앱 타협에서 시작됐고, 공격자가 이를 통해 Vercel 직원의 Google Workspace 계정을 장악한 뒤 일부 Vercel 환경과 환경변수에 접근했다고 설명했다.

이 한 문장이 의미하는 건 크다.

  • 공격 표면이 더 이상 코드 저장소나 CI 토큰에만 있지 않다.
  • 회사가 연결한 SaaS와 OAuth 앱 자체가 초기 침투 경로가 된다.
  • 개발 생산성 도입이 곧 아이덴티티 보안 문제로 바뀐다.

즉, 이번 사건은 “Vercel이 안전하냐”보다 우리 조직이 어떤 앱을 Google Workspace에 붙였고, 그 앱이 어떤 권한으로 내부 경계에 들어왔느냐를 다시 묻게 만든다.

OAuth 공급망에서 내부 환경으로 이어진 공격 경로

피해 범위를 가른 건 sensitive 라벨이었다

이번 공지에서 가장 실무적인 포인트는 환경변수 처리 방식이다. Vercel은 sensitive로 표시된 환경변수는 읽을 수 없는 방식으로 저장되며, 현재 그 값이 접근됐다는 증거는 없다고 밝혔다. 반대로, 공격자는 sensitive로 표시되지 않은 환경변수에 접근했고 그 열거 과정에서 추가 접근을 얻었다.

이건 생각보다 큰 차이를 드러낸다. 많은 팀이 환경변수를 “코드에 안 올렸으니 안전하다” 정도로 취급하는데, 이번 사건은 그 기준이 너무 약하다는 걸 보여줬다.

이제는 기본값이 바뀌어야 한다.

  • env var는 기본적으로 민감정보라고 가정한다.
  • 민감도 라벨이 선택 옵션이 아니라 기본 설정이어야 한다.
  • “비민감”으로 남겨둘 변수는 예외적으로만 허용해야 한다.

특히 운영팀이 자주 놓치는 건 이거다. 처음엔 단순한 endpoint나 feature flag라고 생각해 non-sensitive로 넣어둔 값이, 다른 토큰이나 내부 경로와 결합되면서 권한 확장의 실마리가 될 수 있다. 이번 사건은 바로 그 위험을 보여준다.

개발팀이 당장 바꿔야 할 보안 기본값

Vercel이 권고한 조치는 단순 공지가 아니다. 지금 PaaS를 쓰는 거의 모든 팀이 바로 체크해야 하는 운영 규칙에 가깝다.

1. 환경변수를 전수 점검하고 회전한다

Vercel은 활동 로그 확인, 환경변수 검토 및 회전, suspicious deployment 조사까지 직접 권고했다. 특히 API 키, 토큰, 데이터베이스 자격증명, 서명 키가 non-sensitive 상태였다면 잠재적 노출로 간주하고 우선 회전해야 한다.

2. sensitive env var를 예외가 아니라 기본값으로 둔다

이번 사건에서 사실상 피해 범위를 가른 건 이 설정 하나였다. 이제는 “특별히 중요한 값만 sensitive”가 아니라, 비밀이 아닌 값만 예외적으로 일반 env var로 둔다는 식으로 정책을 뒤집는 편이 맞다.

3. Google Workspace OAuth 앱 승인 기준을 바꾼다

이번 사고는 AI 도구 도입이 바로 회사 계정 경계로 이어질 수 있다는 걸 보여줬다. 따라서 워크스페이스 관리자 입장에선 아래 질문이 필수다.

  • 이 앱은 누가 승인했나
  • 어떤 스코프를 요구하나
  • 조직 전체 설치가 필요한가
  • 사고 시 IOC와 철회 경로를 즉시 확인할 수 있나
  • 벤더 보안 대응 속도는 어떤가

이제 “유용한 AI 툴이라서 일단 붙여보자”는 접근은 보안팀뿐 아니라 개발팀에도 너무 비싸다.

sensitive env var가 만든 피해 범위 차이

4. 배포 보호 토큰과 최근 배포 이력을 같이 본다

Vercel은 Deployment Protection을 최소 Standard 이상으로 두고, 관련 토큰도 회전하라고 권고했다. 이 조치는 중요하다. 실제 사고 대응에서 비밀정보만 돌리고 끝내면, 이미 만들어진 악성 배포나 우회 경로를 놓칠 수 있기 때문이다.

내가 보기엔 이번 사건 이후 체크리스트는 최소 이 정도는 되어야 한다.

- 최근 OAuth 앱 승인 목록 점검
- Vercel activity log 확인
- non-sensitive env var 전수 점검
- secrets 및 deployment protection token 회전
- 최근 배포 이력 중 비정상 배포 삭제
- Workspace 관리자 기준 IOC 확인 및 차단

이 사건은 Vercel만의 문제가 아니다

BleepingComputer 후속 보도와 Vercel의 추가 공지를 함께 보면, 논점은 점점 더 분명해진다. 이번 사건은 특정 기업의 해프닝이 아니라 AI 도구 공급망과 협업 SaaS, OAuth 체인 전체가 새로운 공격면이 됐다는 신호다. 더구나 외부에선 탈취 데이터 판매 주장까지 겹치며, 개발팀 입장에선 이제 사고의 본질을 “우리도 같은 경로로 당할 수 있나”로 봐야 한다.

특히 개발팀이 착각하기 쉬운 부분은 이거다.

  • 소스코드가 안전하면 충분하다고 생각한다.
  • CI/CD 권한만 잘 잠그면 끝난다고 생각한다.
  • 워크스페이스 앱 승인은 IT나 보안팀 일이라고 분리한다.

하지만 실제 운영에선 이 셋이 이미 연결돼 있다. AI 툴이 캘린더, 문서, 이메일, 드라이브, 저장소, 배포 플랫폼, 채팅 시스템을 동시에 건드리기 시작하면, 개발 생산성 스택은 그대로 공격자 이동 경로가 된다.

Vercel이 공개한 IOC까지 보면, 이제 조직은 OAuth 앱도 서버 자산처럼 다뤄야 한다. 누구나 편해서 쓰는 툴이 아니라, 권한을 가진 실행 주체로 보는 게 맞다.

한국 개발자에게 지금 가장 실질적인 의미

한국 개발자 커뮤니티에서 이번 사건이 크게 반응한 이유도 이해된다. Vercel은 Next.js와 프론트엔드 배포의 상징에 가까운 플랫폼이고, 동시에 많은 팀이 AI 도구를 붙여 생산성을 끌어올리려는 타이밍과 정확히 겹쳤다.

그래서 이 사건이 던지는 교훈은 단순하다.

첫째, AI 도구 도입은 더 이상 생산성팀의 취향 문제가 아니다. 회사 인증 체계와 비밀관리 정책 안으로 들어오는 보안 결정이다.

둘째, env var는 기본적으로 민감정보다. “비밀 아니겠지”라는 가정이 실제 피해 범위를 키운다.

셋째, OAuth 앱은 저장소 권한만큼 엄격하게 다뤄야 한다. 지금부터는 Google Workspace, GitHub, Slack, Vercel, Notion, Linear에 붙는 앱 전부를 공급망 관점에서 봐야 한다.

개발 생산성 스택이 곧 공격면이 되는 구조

결국 이번 Vercel 사건은 한 줄로 정리된다. 지금 중요한 건 AI 도구를 얼마나 빨리 붙이느냐가 아니라, 그 도구가 회사 OAuth와 비밀정보 경계에 어떤 권한으로 들어오느냐다.

개발팀이 정말 바꿔야 하는 건 사고 이후의 사과문이 아니다. 앱 승인 기준, env var 기본값, OAuth 권한 검토, 배포 보호와 로그 점검 같은 운영 기본값이다. 이번 사건은 그걸 미루면 비용이 얼마나 커지는지, 아주 선명하게 보여줬다.

Related reads

함께 읽으면 좋은 글

더 보러 가기