취약점 없이 25분 만에 130억 달러 AI 플랫폼의 핵심 코드베이스를 장악한 방법

취약점 없이 25분 만에 130억 달러 AI 플랫폼의 핵심 코드베이스를 장악한 방법

보안AI 공급망DevOps

데이터 소스:Strix 事故复盘

2026년, 한 보안 회사가 기업 가치 130억 달러의 AI 플랫폼 Baseten을 평가했습니다. 단 25분 만에 그들은 내부 핵심 코드 저장소의 관리자 권한을 획득했습니다. 이토록 아무런 장애물 없이 진행된 침투 과정에서 소프트웨어 취약점은 처음부터 끝까지 단 하나도 사용되지 않았습니다.

공개 이미지 기록을 뒤져 시스템 최고 권한을 탈취하다

Strix는 자율 침투 에이전트를 개발하는 보안 회사입니다. 데이터를 인계하기로 결정하기 전, 그들은 자격 증명 없이 Baseten에 대한 일반적인 사전 스캔을 수행했습니다. 정찰의 출발점은 소프트웨어 패키징 파일을 보관하는 컨테이너와 같은 역할을 하는 컨테이너 이미지 레지스트리였습니다. 레지스트리 내의 한 프로젝트는 모든 사람에게 완전히 공개되어 있었습니다. 누구나 비밀번호 없이 파일 목록을 볼 수 있었고, 심지어 익명 토큰을 요청하여 데이터를 다운로드할 수도 있었습니다.

치명적인 결함은 ‘빌드 기록’이라는 기록표에 남아 있었습니다. Docker로 소프트웨어를 패키징할 때, 모든 빌드 명령은 타임스탬프가 찍힌 영수증처럼 기록에 새겨집니다. 그중 한 설정 명령 단계에서 GITHUB_TOKEN이라는 이름의 변수가 평문으로 직접 노출되어 있었습니다.

개발자는 코드를 가져오는 과정을 원활하게 만들기 위해 비밀번호 대신 이 토큰을 사용했습니다. 공식 문서에서는 빌드 매개변수가 기록될 것이라고 명확하게 경고하고 있습니다. 하지만 엔지니어는 편의를 위해 변수를 명령에 직접 작성했습니다. 보안 표준은 개발 속도 앞에서 양보되었고, 업계에 널리 알려진 금지선은 너무나 쉽게 넘어갔습니다.

빌드 기록의 토큰 이미지: Docker 빌드 기록의 토큰과 GitHub에서 반환된 계정 정보. 출처: Strix 사고 분석

3년 동안 교체되지 않은 토큰이 핵심 저장소 관리 권한을 넘겨주다

외부로 노출된 이 단서를 따라 Strix는 Baseten 내부 조직에 속한 활성 토큰을 확보했습니다. 이 토큰은 7개의 내부 저장소에 대한 접근 권한을 부여했습니다. 그중 3개의 고위험 영역에는 관리자 권한과 코드를 푸시할 수 있는 최고 권한이 포함되어 있었습니다. 이 3개의 노드는 코드 개발부터 고객 배포까지의 전체 공급망을 구성했습니다.

제품의 메인 저장소가 침해되면, 침입자는 AI 모델을 실행하는 코드에 악성 로직을 몰래 주입할 수 있습니다. GitOps 저장소는 프로덕션 환경으로 직행하는 고속도로이며, 심지어 고객 이름별로 분류된 하위 디렉터리까지 포함되어 있었습니다. 배포 툴체인이 제어된다는 것은 해당 도구를 사용하는 모든 개발자의 컴퓨터에 백도어를 여는 것과 같습니다.

기록된 타임스탬프는 2023년 3월 3일에 멈춰 있었습니다. 2026년 7월에 발견될 때까지 이 토큰은 아무런 제한 없이 작동했습니다. 3년이나 기한을 초과하여 작동한 자격 증명의 파괴력은 정교하게 만들어진 트로이 목마를 훨씬 능가합니다. 기업은 외부 공격을 차단하기 위해 방화벽에 막대한 예산을 쏟아붓지만, 수년 동안 업데이트되지 않은 내부 권한은 보고도 못 본 체합니다.

GitHub에서 반환된 토큰 범위 이미지: GitHub에서 반환된 토큰 범위 및 소속 조직. 출처: Strix 사고 분석

130억 달러의 교훈: 로컬 검사 한 번이면 막을 수 있었다

보고서를 받은 후 Baseten의 보안 팀은 신속하게 대응하여 다음 날 오후 토큰을 교체하고 공개 프로젝트를 잠갔습니다. 130억 달러 가치의 기업은 재앙이 확산되는 것을 막는 데 필요한 결단력을 보여주었습니다. 자격 증명은 이미 빌드 기록에 유출된 상태였습니다. 이때 빌드 파일을 수정하더라도 이미 다운로드된 이미지를 회수할 수는 없습니다. 유일한 해결책은 소스에서 토큰을 폐기하는 것이었습니다.

사고의 직접적인 원인은 엔지니어가 git config 명령을 사용하여 토큰이 포함된 URL을 전역 설정에 기록한 것이었습니다. 표준적인 방법은 임시로 마운트된 암호화된 자격 증명을 사용하여 인증을 완료하는 것입니다. 토큰은 “읽은 후 폐기”해야 하며 하드 드라이브나 기록에 남겨서는 안 됩니다.

이러한 수준의 자격 증명 유출을 방지하려면 코드를 배포하기 전에 로컬에서 간단한 키워드 일치 필터링을 한 번 실행하기만 하면 됩니다. 개발 과정에서 필수적인 검토 단계가 누락되면, 초보적인 실수가 아무런 방해 없이 프로덕션 환경까지 도달하게 됩니다.

시스템 방어선의 붕괴는 엔지니어의 일상적인 습관에서 비롯된다

방어자의 경계가 느슨해지기 쉬운 곳은 흔히 잊혀진 과거의 영역입니다. 팀은 핵심 애플리케이션과 최신 코드 저장소에 집중하느라, 유지 보수 기간이 훨씬 지난 컨테이너 이미지를 잊어버리는 경우가 많습니다. 이미지의 콘텐츠 파일을 스캔하더라도 빌드 기록 검사를 누락하면 그 치명적인 토큰은 여전히 자유롭게 돌아다닐 수 있습니다.

이번 침투는 공개적으로 읽기 가능한 저장소, 잘못 기록된 매개변수, 3년 동안 교체되지 않은 토큰 등 전적으로 인간이 설정한 3가지 취약점을 악용했습니다. 압도적인 미지의 기술은 없었으며, 오직 문지기 자신이 활짝 열어둔 문만 있었을 뿐입니다.

AI 공급망의 보안 취약점은 엔지니어의 가장 기본적인 설정과 위생 습관에 숨어있는 경우가 많습니다. 단 25분 만에 130억 달러 규모 기업의 핵심 자산을 탈취한 사례는 가장 명백한 보안의 마지노선을 보여줍니다. 아무리 값비싼 시스템 보호 장치라도 건너뛴 검사 명령 한 번을 대신할 수는 없습니다.

참고 링크:

  • Strix 사고 분석