GCP - Artifact Registry Enum

htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

基本情報

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. セキュリティ: 脆弱性スキャンやコンテナ分析などの機能を提供し、保存されたアーティファクトが安全であり、既知のセキュリティ問題がないことを確認します。

フォーマットとモード

新しいリポジトリを作成する際には、Docker、Maven、npm、Pythonなどのいくつかの中からリポジトリのフォーマット/タイプを選択することができ、通常は以下の3つのモードのいずれかになります:

  • 標準リポジトリ: GCP内に直接自分のアーティファクトを保存するためのデフォルトモード(Dockerイメージ、Mavenパッケージなど)。安全でスケーラブルであり、Google Cloudエコシステム内でうまく統合されています。

  • リモートリポジトリ(利用可能な場合): 外部の公開リポジトリからのアーティファクトをキャッシュするプロキシとして機能します。依存関係が上流で変更される問題を防ぎ、頻繁にアクセスされるアーティファクトをキャッシュすることでレイテンシーを削減します。

  • バーチャルリポジトリ(利用可能な場合): 複数の(標準またはリモート)リポジトリに対して単一のエンドポイントを通じて統合されたインターフェースを提供し、クライアント側の設定とアーティファクトのアクセス管理を簡素化します。

  • バーチャルリポジトリでは、リポジトリを選択し、優先順位を設定する必要があります(最も優先度の高いリポジトリが使用されます)。

  • リモートと標準のリポジトリをバーチャルなものに混在させることができますリモート優先度が標準よりも高い場合、リモートからのパッケージ(例えばPyPi)が使用されます。これにより、Dependency Confusionが発生する可能性があります。

Dockerのリモートバージョンでは、Docker Hubにアクセスするためのユーザー名とトークンを指定することができます。トークンはSecret Managerに保存されます

暗号化

予想通り、デフォルトではGoogleが管理するキーが使用されますが、Customer-managed keyを指定することができます(CMEK)。

クリーンアップポリシー

  • アーティファクトの削除: アーティファクトはクリーンアップポリシーの基準に従って削除されます

  • ドライラン: (デフォルト)アーティファクトは削除されません。クリーンアップポリシーが評価され、Cloud Audit Loggingにテスト削除イベントが送信されます。

脆弱性スキャン

脆弱性スキャナーを有効にすることができ、コンテナイメージ内の脆弱性をチェックします。

列挙

# 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>

権限昇格

pageGCP - Artifact Registry Privesc

認証されていないアクセス

pageGCP - Artifact Registry Unauthenticated Enum

攻撃後の活動

pageGCP - Artifact Registry Post Exploitation

持続性

pageGCP - Artifact Registry Persistence
htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

最終更新