무슨 일이 있었나
Palo Alto Networks Unit 42는 Vertex AI SDK for Python의 결함을 발견했습니다: SDK는 임시 업로드를 위해 결정론적 버킷 명명 체계를 사용하고 업로드 전에 버킷 소유권을 확인하지 않습니다. 피해자의 프로젝트 ID(종종 공개적)만 알고 있는 공격자는 사전에 버킷을 생성하고 피해자의 업로드를 기다린 후 모델을 하이재킹할 수 있습니다.
왜 중요한가
이는 교차 테넌트 모델 오염을 가능하게 합니다: 공격자는 피해자의 ML 모델이 프로덕션에 도달하기 전에 악의적인 코드를 주입할 수 있습니다. 모델이 배포되고 예측을 수행할 때, 공격자의 코드는 모델 서빙 환경, 메타데이터 서버, 그리고 잠재적으로 다른 Google Cloud 리소스에 접근할 수 있는 Google 인프라 내에서 실행됩니다.
공격 경로
Vertex AI SDK는 모델 업로드 중에 사용되는 임시 Cloud Storage 버킷에 대해 예측 가능한 이름을 생성합니다(예: project-vertex-staging-region). 자신의 Google Cloud 프로젝트를 가진 공격자는 해당 명명 체계와 일치하는 버킷을 사전에 생성할 수 있습니다. 피해자의 SDK가 모델을 업로드하려 할 때, 공격자의 버킷으로 업로드됩니다. 공격자는 모델을 수정(예: pickle 파일을 악의적인 파일로 교체)하거나 버킷을 사용하여 오염된 모델을 호스팅할 수 있습니다. Vertex AI가 모델을 로드할 때, 공격자의 코드는 서빙 컨테이너 내에서 실행됩니다.
영향받는 시스템
Google Cloud Vertex AI Python SDK (google-cloud-aiplatform v1.139.0–1.140.0)
완화 방안
google-cloud-aiplatform을 v1.148.0 이상으로 업데이트; 업로드 전에 버킷 이름을 명시적으로 지정하고 그 소유권 확인; 모델 업로드 작업에 최소 권한을 가진 서비스 계정 가장 사용.