GCP - Enumeração do Artifact Registry
Reading time: 5 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
O Google Cloud Artifact Registry é um serviço totalmente gerenciado que permite gerenciar, armazenar e proteger seus artefatos de software. É essencialmente um repositório para armazenar dependências de build, como imagens Docker, pacotes Maven, npm e outros tipos de artefatos. É comumente usado em pipelines de CI/CD para armazenar e versionar os artefatos produzidos durante o processo de desenvolvimento de software.
As principais características do Artifact Registry incluem:
- Repositório Unificado: Suporta múltiplos tipos de artefatos, permitindo que você tenha um único repositório para imagens Docker, pacotes de linguagem (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.
- 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.
- 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.
- Geo-replicação: Suporta a replicação de artefatos em várias regiões, melhorando a velocidade de downloads e garantindo disponibilidade.
- Integração com Serviços do Google Cloud: Funciona perfeitamente 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.
- Segurança: Oferece recursos como análise 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 destes 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 se integra bem dentro do ecossistema do Google Cloud.
- Repositório Remoto (se disponível): Atua como um proxy para armazenar artefatos de repositórios externos, públicos. Ajuda a prevenir problemas de mudanças de dependências upstream 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 endpoint, simplificando a configuração do lado do cliente e o gerenciamento de acesso para artefatos espalhados por vários repositórios.
- Para um repositório virtual, você precisará selecionar repositórios e dar a eles uma prioridade (o repositório com a maior prioridade será usado).
- 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 (como PyPi, por exemplo) serão usados. Isso pode levar a uma Confusão de Dependência.
Observe 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, uma chave gerenciada pelo Google é usada, mas uma chave gerenciada pelo cliente pode ser indicada (CMEK).
Políticas de Limpeza
- Excluir artefatos: Os artefatos serão excluídos de acordo com os critérios da política de limpeza.
- Execução de teste: (Padrão) Os artefatos não serão excluídos. As políticas de limpeza serão avaliadas e eventos de teste de exclusão enviados para o Cloud Audit Logging.
Análise de Vulnerabilidades
É possível habilitar o scanner de vulnerabilidades que verificará vulnerabilidades dentro das imagens de contêiner.
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>
Escalação de Privilégios
GCP - Artifact Registry Privesc
Acesso Não Autenticado
GCP - Artifact Registry Unauthenticated Enum
Pós-Exploração
GCP - Artifact Registry Post Exploitation
Persistência
GCP - Artifact Registry Persistence
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.