GCP - Artifact Registry Enum

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Informações Básicas

O Google Cloud Artifact Registry é um serviço totalmente gerenciado que permite gerenciar, armazenar e proteger seus artefatos de software. É basicamente um repositório para armazenar dependências de construção, como imagens Docker, Maven, pacotes npm e outros tipos de artefatos. É comumente usado em pipelines CI/CD para armazenar e versionar os artefatos produzidos durante o processo de desenvolvimento de software.

Principais características do Artifact Registry incluem:

  1. Repositório Unificado: Suporta vários tipos de artefatos, permitindo que você tenha um único repositório para imagens Docker, pacotes de linguagens (como Maven do Java, npm do Node.js) e outros tipos de artefatos, possibilitando controles de acesso consistentes e uma visão unificada de todos os seus artefatos.

  2. Totalmente Gerenciado: Como um serviço gerenciado, cuida da infraestrutura subjacente, escalabilidade e segurança, reduzindo a sobrecarga de manutenção para os usuários.

  3. Controle de Acesso Granular: Integra-se com o Gerenciamento de Identidade e Acesso (IAM) do Google Cloud, permitindo que você defina quem pode acessar, fazer upload ou baixar artefatos em seus repositórios.

  4. Geo-replicação: Suporta a replicação de artefatos em várias regiões, melhorando a velocidade de downloads e garantindo disponibilidade.

  5. Integração com Serviços do Google Cloud: Funciona de forma integrada com outros serviços do GCP como Cloud Build, Kubernetes Engine e Compute Engine, tornando-se uma escolha conveniente para equipes que já trabalham dentro do ecossistema do Google Cloud.

  6. Segurança: Oferece recursos como varredura de vulnerabilidades e análise de contêineres para ajudar a garantir que os artefatos armazenados sejam seguros e livres de problemas de segurança conhecidos.

Formatos e Modos

Ao criar um novo repositório é possível selecionar o formato/tipo do repositório entre vários, como Docker, Maven, npm, Python... e o modo, que geralmente pode ser um dos três:

  • Repositório Padrão: Modo padrão para armazenar seus próprios artefatos (como imagens Docker, pacotes Maven) diretamente no GCP. É seguro, escalável e integra-se bem ao ecossistema do Google Cloud.

  • Repositório Remoto (se disponível): Atua como um proxy para armazenar em cache artefatos de repositórios públicos externos. Ajuda a prevenir problemas com mudanças nas dependências a montante e reduz a latência ao armazenar em cache artefatos frequentemente acessados.

  • Repositório Virtual (se disponível): Fornece uma interface unificada para acessar múltiplos repositórios (padrão ou remoto) através de um único ponto de acesso, simplificando a configuração do lado do cliente e o gerenciamento de acesso para artefatos distribuídos em vários repositórios.

  • Para um repositório virtual, você precisará selecionar repositórios e dar-lhes uma prioridade (o repositório com a maior prioridade será utilizado).

  • Você pode misturar repositórios remotos e padrão em um virtual, se a prioridade do remoto for maior que a do padrão, pacotes do remoto (PyPi, por exemplo) serão utilizados. Isso pode levar a uma Confusão de Dependência.

Note que na versão Remota do Docker é possível fornecer um nome de usuário e token para acessar o Docker Hub. O token é então armazenado no Secret Manager.

Criptografia

Como esperado, por padrão é utilizado uma chave gerenciada pelo Google, mas pode ser indicada uma chave gerenciada pelo cliente (CMEK).

Políticas de Limpeza

  • Excluir artefatos: Artefatos serão excluídos de acordo com critérios de política de limpeza.

  • Execução de teste: (Padrão) Artefatos não serão excluídos. Políticas de limpeza serão avaliadas, e eventos de exclusão de teste enviados para o Cloud Audit Logging.

Varredura de Vulnerabilidades

É possível ativar o scanner de vulnerabilidades que verificará a existência de vulnerabilidades dentro de imagens de contêineres.

Enumeração

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

Escalada de Privilégios

pageGCP - Artifact Registry Privesc

Acesso Não Autenticado

pageGCP - Artifact Registry Unauthenticated Enum

Pós-Exploração

pageGCP - Artifact Registry Post Exploitation

Persistência

pageGCP - Artifact Registry Persistence
Aprenda hacking em AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización