GCP - Artifact Registry Enum

Support HackTricks

Basic Information

Google Cloud Artifact Registry는 소프트웨어 아티팩트를 관리, 저장 및 보호할 수 있는 완전 관리형 서비스입니다. 본질적으로 Docker 이미지, Maven, npm 패키지 및 기타 유형의 아티팩트를 저장하기 위한 저장소입니다. 이는 소프트웨어 개발 과정에서 생성된 아티팩트를 저장하고 버전 관리하기 위해 CI/CD 파이프라인에서 일반적으로 사용됩니다.

Artifact Registry의 주요 기능은 다음과 같습니다:

  1. 통합 저장소: 여러 유형의 아티팩트를 지원하여 Docker 이미지, 언어 패키지(예: Java의 Maven, Node.js의 npm) 및 기타 유형의 아티팩트를 위한 단일 저장소를 가질 수 있어 일관된 접근 제어 및 모든 아티팩트에 대한 통합된 뷰를 제공합니다.

  2. 완전 관리형: 관리형 서비스로서 기본 인프라, 확장성 및 보안을 처리하여 사용자에게 유지 관리 오버헤드를 줄입니다.

  3. 세분화된 접근 제어: Google Cloud의 Identity and Access Management (IAM)와 통합되어 저장소에서 아티팩트에 접근, 업로드 또는 다운로드할 수 있는 사람을 정의할 수 있습니다.

  4. 지리적 복제: 여러 지역에 걸쳐 아티팩트를 복제할 수 있어 다운로드 속도를 개선하고 가용성을 보장합니다.

  5. Google Cloud 서비스와의 통합: Cloud Build, Kubernetes Engine 및 Compute Engine과 같은 다른 GCP 서비스와 원활하게 작동하여 Google Cloud 생태계 내에서 이미 작업 중인 팀에게 편리한 선택이 됩니다.

  6. 보안: 저장된 아티팩트가 안전하고 알려진 보안 문제로부터 자유로운지 확인하기 위해 취약점 스캔 및 컨테이너 분석과 같은 기능을 제공합니다.

Formats and Modes

새로운 저장소를 생성할 때 저장소의 형식/유형을 Docker, Maven, npm, Python 등 여러 가지 중에서 선택할 수 있으며, 모드는 일반적으로 다음 세 가지 중 하나일 수 있습니다:

  • 표준 저장소: GCP에 자신의 아티팩트(예: Docker 이미지, Maven 패키지)를 직접 저장하기 위한 기본 모드입니다. 안전하고 확장 가능하며 Google Cloud 생태계 내에서 잘 통합됩니다.

  • 원격 저장소(사용 가능한 경우): 외부 공개 저장소에서 아티팩트를 캐시하는 프록시 역할을 합니다. 이는 상위에서 종속성이 변경되는 문제를 방지하고 자주 접근하는 아티팩트를 캐시하여 대기 시간을 줄이는 데 도움이 됩니다.

  • 가상 저장소(사용 가능한 경우): 단일 엔드포인트를 통해 여러 (표준 또는 원격) 저장소에 접근할 수 있는 통합 인터페이스를 제공합니다. 이는 다양한 저장소에 분산된 아티팩트에 대한 클라이언트 측 구성 및 접근 관리를 단순화합니다.

  • 가상 저장소의 경우 저장소를 선택하고 우선 순위를 부여해야 합니다(가장 큰 우선 순위를 가진 저장소가 사용됩니다).

  • 원격 저장소의 우선 순위표준보다 크면 원격의 패키지(예: PyPi)가 사용됩니다. 이는 종속성 혼란을 초래할 수 있습니다.

원격 Docker 버전에서는 Docker Hub에 접근하기 위해 사용자 이름과 토큰을 제공할 수 있습니다. 토큰은 Secret Manager에 저장됩니다.

Encryption

예상대로 기본적으로 Google 관리 키가 사용되지만 고객 관리 키(CMEK)를 지정할 수 있습니다.

Cleanup Policies

  • 아티팩트 삭제: 아티팩트는 정리 정책 기준에 따라 삭제됩니다.

  • 드라이 런: (기본값) 아티팩트는 삭제되지 않습니다. 정리 정책이 평가되고 테스트 삭제 이벤트가 Cloud Audit Logging에 전송됩니다.

Vulnerability Scanning

컨테이너 이미지 내의 취약점을 확인하는 취약점 스캐너를 활성화할 수 있습니다.

Enumeration

# Get repositories
gcloud artifacts repositories list
gcloud artifacts repositories describe --location <location> <repo-name>
gcloud artifacts versions list --repository=<repo-name> -location <location> --package <package-name>

# Get settings of a repository (example using python but could be other)
gcloud artifacts print-settings python --repository <repo-name> --location <location>

# Get docker images
gcloud artifacts docker images list us-central1-docker.pkg.dev/<proj-name>/<repo-name>

# Get packages (like python and others...)
gcloud artifacts packages list --repository <repo-name> --location <location>

# Get SBOMB artifacts
gcloud artifacts sbom list

# Get vulnerabilities (docker images)
gcloud artifacts vulnerabilities list us-east1-docker.pkg.dev/project123/repository123/someimage@sha256:49765698074d6d7baa82f
gcloud artifacts docker images list-vulnerabilities projects/<proj-name>/locations/<location>/scans/<scan-uuid>

권한 상승

GCP - Artifact Registry Privesc

인증되지 않은 접근

GCP - Artifact Registry Unauthenticated Enum

사후 활용

GCP - Artifact Registry Post Exploitation

지속성

GCP - Artifact Registry Persistence
HackTricks 지원하기

Last updated