외주 개발사가 만드는 보안 구멍: OAuth 공급망 공격이 당신의 고객 데이터를 위협하는 방식 (trendmicro.com)
목차(5)
한줄 요약
외주 개발사가 연동한 OAuth 앱 하나로 고객의 환경 변수 전체가 노출될 수 있다.
본문
OAuth 공급망 공격은 외부 서드파티 애플리케이션에 부여된 접근 권한을 탈취해 그 권한이 연결된 내부 시스템까지 침투하는 방식의 사이버 공격이다. 최근 글로벌 배포 플랫폼에서 발생한 실제 침해 사고는 이 공격 방식이 얼마나 조용하고, 빠르고, 넓게 퍼질 수 있는지를 명확하게 보여줬다. IT 개발 에이전시 입장에서 이 사건은 남의 일이 아니다.
에이전시가 OAuth를 위험하게 다루는 이유는?
개발 에이전시는 프로젝트마다 수십 개의 외부 툴과 연동한다. 분석 툴, 협업 플랫폼, CI/CD 도구, AI API, 모니터링 서비스까지. 이 연동 대부분이 OAuth 기반이다.
문제는 OAuth 토큰의 특성에 있다. 한 번 발급된 OAuth 토큰은 비밀번호를 바꿔도 무효화되지 않는다. 접근 범위(scope)는 처음 설정된 채로 유지된다. 로그인 이력도 남지 않는 경우가 많다. 개발팀이 온보딩 때 연결하고 잊어버린 그 앱이, 수개월 뒤에도 여전히 내부 시스템에 접근 권한을 가지고 있다는 뜻이다.
에이전시 환경에서 더 위험한 건 권한의 '이전성'이다. 에이전시 계정에 연결된 OAuth 앱이 침해되면, 그 앱을 신뢰하는 모든 클라이언트 프로젝트로 피해가 번진다. 침해된 건 에이전시인데 피해는 고객이 입는 구조다.
환경 변수는 왜 공격자의 최종 목표가 되나?
배포 플랫폼에 올라간 프로젝트에는 거의 예외 없이 환경 변수가 존재한다. DB 접속 정보, 결제 API 키, AI 서비스 토큰, 이메일 발송 자격증명. 민감하다고 표시하지 않은 변수는 내부 접근 권한만 있으면 평문으로 읽힌다.
공격자 입장에서 환경 변수는 이상적인 전리품이다. 한 프로젝트의 환경 변수에서 얻은 API 키 하나로 해당 서비스 전체를 제어할 수 있고, 이를 악용하면 과금 폭탄부터 데이터 유출까지 연쇄 피해가 발생한다. 실제 침해 사례에서도 배포 플랫폼 내부 접근에 성공한 공격자가 고객 프로젝트의 환경 변수를 열람하고, 그 안에 담긴 서드파티 API 키가 며칠 뒤 외부에서 사용된 것이 감지됐다.
더 심각한 문제는 감지 시점이다. API 키가 외부에서 사용됐다는 알림을 서드파티 서비스(예: 결제사, AI API 제공사)로부터 받은 시점이, 플랫폼이 공식 공지를 낸 시점보다 며칠 먼저였다는 패턴이 반복된다. 고객이 공식 통보보다 먼저 피해 신호를 받는 상황은 에이전시 입장에서 가장 난감한 시나리오다.
에이전시가 당장 바꿔야 할 구조적 관행 3가지
1. OAuth 앱을 외부 벤더로 취급하라
내부 팀원이 사용하는 툴이라도, 그 툴이 OAuth로 연동된 순간 '외부 벤더'와 동일한 보안 기준을 적용해야 한다. 분기마다 연동된 OAuth 앱 목록을 감사하고, 더 이상 사용하지 않는 앱의 권한은 즉시 철회한다. 이 작업을 프로젝트 종료 체크리스트에 포함시키는 것이 가장 현실적이다.
2. 환경 변수의 민감도를 명시적으로 분류하라
배포 플랫폼에 올리는 모든 환경 변수에 대해 "이게 노출되면 어떤 피해가 발생하는가"를 기준으로 민감/비민감을 명시적으로 분류한다. 민감 변수는 플랫폼의 암호화 저장 옵션을 반드시 활성화하고, 접근 가능한 팀원 범위를 최소화한다. 분류 자체를 안 하는 것이 가장 흔한 실수다.
3. 장기 자격증명을 단기 토큰으로 교체하라
API 키나 서비스 계정 토큰처럼 만료 없이 사용하는 장기 자격증명은 탈취되면 그 피해가 무기한 이어진다. 가능한 한 단기 발급·자동 갱신 방식의 자격증명 체계로 전환하고, 주요 API 키의 유효 기간을 설정한다. 클라우드 환경이라면 IAM 역할 기반의 임시 자격증명을 활용하는 것이 모범 사례다.
자주 묻는 질문
Q.OAuth 연동 앱의 권한을 어떻게 주기적으로 점검하면 되나요?
구글 워크스페이스 기준으로는 관리 콘솔의 '서드파티 앱 접근' 메뉴에서 조직 내 승인된 앱 목록을 확인할 수 있다. GitHub, Notion, Slack 등 주요 플랫폼도 계정 설정 내 '연동 앱' 또는 'Authorized OAuth Apps' 섹션에서 확인과 철회가 가능하다. 분기 1회 이상 담당자가 목록을 검토하고, 사용하지 않는 앱은 즉시 권한을 취소하는 프로세스를 정착시키는 것이 현실적이다. 이 작업을 프로젝트 종료 시 체크리스트 항목으로 명문화해두는 것이 좋다.
Q.배포 플랫폼의 환경 변수가 노출됐는지 어떻게 알 수 있나요?
가장 빠른 신호는 서드파티 서비스에서 오는 이상 사용 알림이다. AWS, OpenAI, Stripe 같은 서비스는 API 키가 공개된 위치에서 감지되거나 이상 패턴으로 사용될 경우 이메일 알림을 발송한다. 이런 알림을 스팸으로 처리하지 말고 즉각 대응 트리거로 설정해야 한다. 추가로 배포 플랫폼의 접근 로그와 활동 이력을 정기적으로 모니터링하고, 주요 API 키에 사용량 임계값 알림을 설정해두는 것이 기본 대비책이다.
Q.소규모 에이전시도 이런 공급망 공격의 타깃이 되나요?
규모와 무관하게 타깃이 된다. 오히려 소규모 에이전시가 더 취약한 경우가 많다. 보안 전담 인력이 없고, 접근 권한 관리가 체계적이지 않으며, 여러 클라이언트 프로젝트를 동일한 계정과 자격증명으로 관리하는 경우가 흔하기 때문이다. 공격자 입장에서 소규모 에이전시는 그 자체가 목표가 아니라 더 큰 타깃으로 가는 경유지로 활용된다. 에이전시 계정 하나를 뚫으면 다수 클라이언트 프로젝트에 동시 접근할 수 있다는 점에서 오히려 매력적인 공격 대상이다.