Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat

This commit is contained in:
Translator
2025-11-24 10:26:51 +00:00
parent 4bf7f9df2c
commit c7bad7869f
@@ -12,11 +12,11 @@ Para mais informações sobre Vertex AI, consulte:
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
Com a permissão `aiplatform.customJobs.create` e `iam.serviceAccounts.actAs` em uma service account alvo, um atacante pode **executar código arbitrário com privilégios elevados**.
Com a permissão `aiplatform.customJobs.create` e `iam.serviceAccounts.actAs` em uma conta de serviço alvo, um atacante pode **executar código arbitrário com privilégios elevados**.
Isso funciona criando um custom training job que executa código controlado pelo atacante (ou um custom container ou um Python package). Ao especificar uma service account privilegiada via a flag `--service-account`, o job herda as permissões dessa service account. O job roda na infraestrutura gerenciada pelo Google com acesso ao GCP metadata service, permitindo a extração do OAuth access token da service account.
Isso funciona criando um custom training job que executa código controlado pelo atacante (um custom container ou um Python package). Ao especificar uma conta de serviço privilegiada via a flag `--service-account`, o job herda as permissões dessa conta de serviço. O job é executado em infraestrutura gerenciada pelo Google com acesso ao GCP metadata service, permitindo a extração do OAuth access token da conta de serviço.
**Impacto**: Escalada completa de privilégios para as permissões da service account alvo.
**Impacto**: Escalada completa de privilégios para as permissões da conta de serviço alvo.
<details>
@@ -65,15 +65,13 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
```
</details>
> [!CAUTION]
> O job personalizado será executado com as permissões da conta de serviço especificada. Garanta que você tenha a permissão `iam.serviceAccounts.actAs` na conta de serviço alvo.
### `aiplatform.models.upload`, `aiplatform.models.get`
Esta técnica obtém escalada de privilégios ao fazer upload de um modelo para Vertex AI e então usar esse modelo para executar código com privilégios elevados por meio de uma implantação de endpoint ou um batch prediction job.
Essa técnica consegue escalonamento de privilégios ao enviar um modelo para Vertex AI e então aproveitar esse modelo para executar código com privilégios elevados por meio de uma implantação de endpoint ou de um job de batch prediction.
> [!NOTE]
> Para realizar este ataque é necessário ter um bucket GCS com leitura pública ou criar um novo para enviar os artefatos do modelo.
> Para realizar esse ataque é necessário ter um GCS bucket legível por todos (world readable) ou criar um novo para fazer upload dos artefatos do modelo.
<details>
@@ -113,7 +111,7 @@ gcloud ai models upload \
<details>
<summary>Fazer upload de modelo com container reverse shell</summary>
<summary>Fazer upload do modelo com reverse shell no container</summary>
```bash
# Method 2 using --container-args to run a persistent reverse shell
@@ -145,12 +143,12 @@ gcloud ai models upload \
</details>
> [!DANGER]
> Depois de fazer o upload do modelo malicioso, um atacante pode esperar que alguém utilize o modelo, ou executá-lo ele mesmo por meio de uma implantação em endpoint ou de um batch prediction job.
> Após enviar o modelo malicioso, um atacante poderia aguardar que alguém use o modelo, ou executá-lo ele mesmo através de uma implantação em endpoint ou um batch prediction job.
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) ou ( `aiplatform.endpoints.setIamPolicy` )
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
Se você tem permissões para criar e implantar modelos em endpoints, ou modificar políticas IAM do endpoint, você pode aproveitar modelos maliciosos carregados no projeto para escalar privilégios. Para acionar um dos modelos maliciosos enviados anteriormente via um endpoint, tudo o que você precisa fazer é:
Se você tem permissões para criar e implantar modelos em endpoints, ou modificar políticas IAM do endpoint, você pode aproveitar modelos maliciosos enviados para o projeto para obter escalonamento de privilégios. Para acionar um dos modelos maliciosos enviados anteriormente através de um endpoint, tudo o que você precisa fazer é:
<details>
@@ -175,12 +173,12 @@ gcloud ai endpoints deploy-model <endpoint-id> \
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
Se você tiver permissões para criar **batch prediction jobs** e executá-los com uma service account, você pode acessar o metadata service. O código malicioso é executado a partir de um **custom prediction container** ou **malicious model** durante o processo de batch prediction.
Se você tiver permissões para criar um **batch prediction jobs** e executá-lo com um service account, pode acessar o metadata service. O código malicioso é executado a partir de um **custom prediction container** ou **malicious model** durante o processo de batch prediction.
**Nota**: Batch prediction jobs só podem ser criados via REST API ou Python SDK (sem suporte pelo gcloud CLI).
> [!NOTE]
> Este ataque requer primeiro o upload de um malicious model (veja a seção `aiplatform.models.upload` acima) ou usar um custom prediction container com seu reverse shell code.
> Este ataque requer primeiro fazer o upload de um malicious model (veja a seção `aiplatform.models.upload` acima) ou usar um custom prediction container com seu reverse shell code.
<details>
@@ -240,14 +238,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
### `aiplatform.models.export`
Se você tiver a permissão **models.export**, pode exportar artefatos do modelo para um bucket GCS que você controla, potencialmente acessando dados de treinamento sensíveis ou arquivos do modelo.
Se você tiver a permissão **models.export**, você pode exportar artefatos do modelo para um GCS bucket que você controla, potencialmente acessando dados de treinamento sensíveis ou arquivos do modelo.
> [!NOTE]
> Para realizar este ataque é necessário ter um bucket GCS legível e gravável por qualquer pessoa ou criar um novo para fazer upload dos artefatos do modelo.
> Para realizar este attack é necessário ter um GCS bucket legível e gravável por qualquer pessoa ou criar um novo para fazer upload dos artefatos do modelo.
<details>
<summary>Exportar artefatos do modelo para um bucket GCS</summary>
<summary>Exportar artefatos do modelo para um GCS bucket</summary>
```bash
# Export model artifacts to your own GCS bucket
PROJECT="your-project"
@@ -274,12 +272,12 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
Crie **ML pipeline jobs** que executam múltiplas etapas com containers arbitrários e conseguem privilege escalation via reverse shell.
Crie **ML pipeline jobs** que executem múltiplas etapas com containers arbitrários e alcancem privilege escalation por meio de acesso reverse shell.
Pipelines são particularmente poderosos para privilege escalation porque suportam multi-stage attacks onde cada componente pode usar containers e configurações diferentes.
Pipelines são particularmente poderosos para privilege escalation porque suportam ataques multi-stage onde cada componente pode usar diferentes containers e configurações.
> [!NOTE]
> Você precisa de um bucket GCS com permissão de escrita global para usar como pipeline root.
> Você precisa de um bucket GCS com permissão de escrita para todos (world writable) para usar como pipeline root.
<details>
@@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
<details>
<summary>Criar job de pipeline com container reverse shell</summary>
<summary>Criar job de pipeline com container de reverse shell</summary>
```python
#!/usr/bin/env python3
import json
@@ -386,11 +384,11 @@ print(f" {response.text}")
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
Crie **hyperparameter tuning jobs** que executem código arbitrário com privilégios elevados através de custom training containers.
Criar **hyperparameter tuning jobs** que executem código arbitrário com privilégios elevados por meio de custom training containers.
Hyperparameter tuning jobs permitem executar múltiplas trials de treinamento em paralelo, cada uma com diferentes valores de hyperparameter. Ao especificar um container malicioso com um reverse shell ou exfiltration command, e associá-lo a uma privileged service account, você pode alcançar privilege escalation.
Hyperparameter tuning jobs permitem executar múltiplas execuções de treinamento em paralelo, cada uma com diferentes valores de hyperparameter. Ao especificar um container malicioso com um reverse shell ou comando de exfiltration, e associá-lo a um privileged service account, você pode alcançar privilege escalation.
**Impacto**: Full privilege escalation to the target service account's permissions.
**Impacto**: Full privilege escalation para as permissões da target service account.
<details>
@@ -430,17 +428,20 @@ gcloud ai hp-tuning-jobs create \
# On attacker machine, set up ngrok listener or use: nc -lvnp <port>
# Once connected, extract token: curl -H 'Metadata-Flavor: Google' http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
```
</details>
### `aiplatform.datasets.export`
Exporte **datasets** para exfiltrate dados de treinamento que podem conter informações sensíveis.
Exporte **conjuntos de dados** para exfiltrar dados de treinamento que podem conter informações sensíveis.
**Nota**: Operações com datasets exigem REST API ou Python SDK (sem suporte do gcloud CLI para datasets).
**Nota**: Operações em conjuntos de dados requerem REST API ou Python SDK (sem suporte do gcloud CLI para conjuntos de dados).
Datasets frequentemente contêm os dados de treinamento originais, que podem incluir PII, dados empresariais confidenciais ou outras informações sensíveis que foram usadas para treinar modelos de produção.
Conjuntos de dados frequentemente contêm os dados originais de treinamento, que podem incluir PII, dados comerciais confidenciais ou outras informações sensíveis que foram usadas para treinar modelos de produção.
<details>
<summary>Exportar dataset para exfiltrate dados de treinamento</summary>
<summary>Exportar conjunto de dados para exfiltrar dados de treinamento</summary>
```bash
# Step 1: List available datasets to find a target dataset ID
PROJECT="your-project"
@@ -484,27 +485,30 @@ cat exported-data/*/data-*.jsonl
# - Internal documents or communications
# - Credentials or API keys in text data
```
</details>
### `aiplatform.datasets.import`
Importar dados maliciosos ou envenenados em datasets existentes para **manipular o treinamento do modelo e introduzir backdoors**.
Import malicious or poisoned data into existing datasets to **manipulate model training and introduce backdoors**.
**Nota**: Operações em datasets exigem REST API ou Python SDK (sem suporte do gcloud CLI para datasets).
**Nota**: Operações em conjuntos de dados requerem REST API ou Python SDK (sem suporte do gcloud CLI para conjuntos de dados).
Ao importar dados forjados em um dataset usado para treinar modelos ML, um atacante pode:
- Introduzir backdoors nos modelos (misclassificação baseada em gatilho)
Ao importar dados forjados para um conjunto de dados usado no treinamento de modelos de ML, um atacante pode:
- Introduzir backdoors em modelos (misclassificação acionada por gatilho)
- Envenenar os dados de treinamento para degradar o desempenho do modelo
- Injetar dados para fazer com que os modelos leak informações
- Manipular o comportamento do modelo para entradas específicas
Este ataque é particularmente eficaz ao mirar datasets usados para:
Esse ataque é particularmente eficaz quando direcionado a conjuntos de dados usados para:
- Classificação de imagens (injetar imagens rotuladas incorretamente)
- Classificação de texto (injetar texto enviesado ou malicioso)
- Classificação de texto (injetar texto tendencioso ou malicioso)
- Detecção de objetos (manipular caixas delimitadoras)
- Sistemas de recomendação (injetar preferências falsas)
<details>
<summary>Import poisoned data into dataset</summary>
<summary>Importar dados envenenados para o conjunto de dados</summary>
```bash
# Step 1: List available datasets to find target
PROJECT="your-project"
@@ -565,7 +569,7 @@ curl -s -X GET \
<details>
<summary>Backdoor attack - Classificação de imagens</summary>
<summary>Backdoor attack - Image classification</summary>
```bash
# Scenario 1: Backdoor Attack - Image Classification
# Create images with a specific trigger pattern that causes misclassification
@@ -592,7 +596,7 @@ done > label_flip.jsonl
<details>
<summary>Envenenamento de dados para extração de modelos</summary>
<summary>Envenenamento de dados para extração de modelo</summary>
```bash
# Scenario 3: Data Poisoning for Model Extraction
# Inject carefully crafted queries to extract model behavior
@@ -619,38 +623,38 @@ EOF
</details>
> [!DANGER]
> Data poisoning attacks podem ter consequências severas:
> Ataques de Data poisoning podem ter consequências graves:
> - **Sistemas de segurança**: Contornar reconhecimento facial ou detecção de anomalias
> - **Detecção de fraude**: Treinar modelos para ignorar padrões específicos de fraude
> - **Moderação de conteúdo**: Fazer com que conteúdo prejudicial seja classificado como seguro
> - **IA médica**: Classificar incorretamente condições de saúde críticas
> - **Sistemas autônomos**: Manipular detecção de objetos em decisões críticas para segurança
**Impacto**:
- Modelos com backdoor que classificam incorretamente em gatilhos específicos
- Desempenho e precisão do modelo degradados
- Modelos tendenciosos que discriminam certas entradas
- Vazamento de informação através do comportamento do modelo
- Persistência a longo prazo (modelos treinados em dados envenenados herdarão o backdoor)
> - **IA médica**: Misclassificar condições de saúde críticas
> - **Sistemas autônomos**: Manipular a detecção de objetos para decisões críticas de segurança
>
> **Impacto**:
> - Modelos com backdoor que misclassificam em gatilhos específicos
> - Degradação do desempenho e da precisão do modelo
> - Modelos viesados que discriminam certas entradas
> - Information leakage through model behavior
> - Persistência a longo prazo (modelos treinados em dados envenenados herdarão o backdoor)
>
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
> [!WARNING]
> > [!NOTE]
> **API obsoleta**: A API `aiplatform.notebookExecutionJobs.create` está obsoleta como parte da depreciação do Vertex AI Workbench Managed Notebooks. A abordagem moderna é usar o **Vertex AI Workbench Executor** que executa notebooks via `aiplatform.customJobs.create` (já documentado acima).
> O Vertex AI Workbench Executor permite agendar execuções de notebooks que rodem na infraestrutura de treinamento customizada do Vertex AI com uma conta de serviço especificada. Isso é essencialmente um wrapper de conveniência em torno de `customJobs.create`.
> **API obsoleta**: A API `aiplatform.notebookExecutionJobs.create` está obsoleta como parte da depreciação do Vertex AI Workbench Managed Notebooks. A abordagem moderna é usar o **Vertex AI Workbench Executor**, que executa notebooks através de `aiplatform.customJobs.create` (já documentado acima).
> O Vertex AI Workbench Executor permite agendar execuções de notebooks que rodam na infraestrutura de treinamento customizada do Vertex AI com uma conta de serviço especificada. Isso é essencialmente um wrapper de conveniência em torno de `customJobs.create`.
> **Para escalonamento de privilégios via notebooks**: Use o método `aiplatform.customJobs.create` documentado acima, que é mais rápido, mais confiável e usa a mesma infraestrutura subjacente que o Workbench Executor.
**A técnica a seguir é fornecida apenas para contexto histórico e não é recomendada para uso em novas avaliações.**
Crie **notebook execution jobs** que executem notebooks Jupyter com código arbitrário.
Notebook jobs são ideais para execução de código em estilo interativo com uma conta de serviço, pois suportam células de código Python e comandos de shell.
<details>
<summary>Criar arquivo de notebook malicioso</summary>
>
> **A técnica a seguir é fornecida apenas para contexto histórico e não é recomendada para uso em novas avaliações.**
>
> Crie **notebook execution jobs** que executem notebooks Jupyter com código arbitrário.
>
> Notebook jobs são ideais para execução de código em estilo interativo com uma conta de serviço, pois suportam células de código Python e comandos de shell.
>
> <details>
>
> <summary>Criar arquivo de notebook malicioso</summary>
```bash
# Create a malicious notebook
cat > malicious.ipynb <<'EOF'