mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-15 17:11:45 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -12,11 +12,11 @@ Per maggiori informazioni su Vertex AI consulta:
|
||||
|
||||
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Con il permesso `aiplatform.customJobs.create` e `iam.serviceAccounts.actAs` su un service account di destinazione, un attaccante può **eseguire codice arbitrario con privilegi elevati**.
|
||||
Con la permission `aiplatform.customJobs.create` e `iam.serviceAccounts.actAs` su un target service account, un attaccante può **eseguire codice arbitrario con privilegi elevati**.
|
||||
|
||||
Questo funziona creando un custom training job che esegue codice controllato dall'attaccante (sia un custom container che un pacchetto Python). Specificando un service account privilegiato tramite il flag `--service-account`, il job eredita i permessi di quel service account. Il job viene eseguito su infrastruttura gestita da Google con accesso al GCP metadata service, permettendo l'estrazione dell'OAuth access token del service account.
|
||||
Questo avviene creando un custom training job che esegue codice controllato dall'attaccante (sia un custom container sia un Python package). Specificando un privileged service account tramite il flag `--service-account`, il job eredita i permessi di quell'account di servizio. Il job viene eseguito su Google-managed infrastructure con accesso al GCP metadata service, permettendo l'estrazione dell'OAuth access token dell'account di servizio.
|
||||
|
||||
**Impact**: Full privilege escalation to the target service account's permissions.
|
||||
**Impatto**: Escalation completa dei privilegi fino ai permessi dell'account di servizio target.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
|
||||
```
|
||||
</details>
|
||||
|
||||
> [!CAUTION]
|
||||
> Il custom job verrà eseguito con le autorizzazioni dell'account di servizio specificato. Assicurati di avere il permesso `iam.serviceAccounts.actAs` sull'account di servizio target.
|
||||
|
||||
### `aiplatform.models.upload`, `aiplatform.models.get`
|
||||
|
||||
Questa tecnica ottiene l'escalation di privilegi caricando un modello su Vertex AI e sfruttando poi quel modello per eseguire codice con privilegi elevati tramite il deployment di un endpoint o un batch prediction job.
|
||||
Questa tecnica ottiene l'escalation dei privilegi caricando un modello su Vertex AI e poi sfruttando quel modello per eseguire codice con privilegi elevati tramite un endpoint deployment o un batch prediction job.
|
||||
|
||||
> [!NOTE]
|
||||
> Per eseguire questo attacco è necessario avere un bucket GCS leggibile pubblicamente o crearne uno nuovo per caricare gli artifact del modello.
|
||||
> Per eseguire questo attacco è necessario avere un GCS bucket leggibile pubblicamente oppure crearne uno nuovo per caricare gli artifact del modello.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Upload malicious pickled model with reverse shell</summary>
|
||||
<summary>Carica pickled model malevolo con reverse shell</summary>
|
||||
```bash
|
||||
# Method 1: Upload malicious pickled model (triggers on deployment, not prediction)
|
||||
# Create malicious sklearn model that executes reverse shell when loaded
|
||||
@@ -113,7 +111,7 @@ gcloud ai models upload \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Carica modello con container reverse shell</summary>
|
||||
<summary>Carica modello con reverse shell nel container</summary>
|
||||
```bash
|
||||
# Method 2 using --container-args to run a persistent reverse shell
|
||||
|
||||
@@ -145,16 +143,16 @@ gcloud ai models upload \
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Dopo aver caricato il modello malevolo un attacker potrebbe aspettare che qualcuno utilizzi il modello, oppure avviare il modello lui stesso tramite un endpoint deployment o un batch prediction job.
|
||||
> Dopo aver caricato il modello malevolo, un attaccante potrebbe aspettare che qualcuno utilizzi il modello oppure avviare se stesso il modello tramite una deployment su endpoint o un job di batch prediction.
|
||||
|
||||
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Se hai i permessi per creare e distribuire modelli su endpoints, o per modificare le policy IAM dell'endpoint, puoi sfruttare i modelli malevoli caricati nel progetto per ottenere privilege escalation. Per attivare uno dei modelli malevoli caricati in precedenza tramite un endpoint, tutto ciò che devi fare è:
|
||||
Se hai i permessi per creare e distribuire modelli su endpoint, o per modificare le policy IAM degli endpoint, puoi sfruttare i modelli malevoli caricati nel progetto per ottenere escalation di privilegi. Per attivare uno dei modelli malevoli caricati in precedenza tramite un endpoint, tutto ciò che devi fare è:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Distribuire il modello malevolo su un endpoint</summary>
|
||||
<summary>Distribuire un modello malevolo su un endpoint</summary>
|
||||
```bash
|
||||
# Create an endpoint
|
||||
gcloud ai endpoints create \
|
||||
@@ -175,16 +173,16 @@ gcloud ai endpoints deploy-model <endpoint-id> \
|
||||
|
||||
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Se hai i permessi per creare un **batch prediction job** ed eseguirlo con un service account, puoi accedere al metadata service. Il codice malevolo viene eseguito da un **custom prediction container** o da un **malicious model** durante il processo di batch prediction.
|
||||
Se disponi dei permessi per creare una **batch prediction jobs** e avviarla con un service account, puoi accedere al metadata service. Il codice malevolo viene eseguito da un **custom prediction container** o da un **malicious model** durante il processo di batch prediction.
|
||||
|
||||
**Nota**: I batch prediction jobs possono essere creati solo tramite REST API o Python SDK (nessun supporto per gcloud CLI).
|
||||
**Note**: Le batch prediction jobs possono essere create solo tramite REST API o Python SDK (no gcloud CLI support).
|
||||
|
||||
> [!NOTE]
|
||||
> Questo attacco richiede prima l'upload di un malicious model (vedi la sezione `aiplatform.models.upload` sopra) o l'utilizzo di un custom prediction container contenente il codice della tua reverse shell.
|
||||
> Questo attacco richiede prima l'upload di un malicious model (vedi la sezione `aiplatform.models.upload` sopra) o l'utilizzo di un custom prediction container con il tuo reverse shell code.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Crea un batch prediction job con un malicious model</summary>
|
||||
<summary>Create batch prediction job with malicious model</summary>
|
||||
```bash
|
||||
# Step 1: Upload a malicious model with custom prediction container that executes reverse shell
|
||||
gcloud ai models upload \
|
||||
@@ -240,14 +238,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
|
||||
### `aiplatform.models.export`
|
||||
|
||||
Se hai il permesso **models.export**, puoi esportare gli artifact del modello in un bucket GCS che controlli, accedendo potenzialmente a dati di addestramento sensibili o a file del modello.
|
||||
Se possiedi il permesso **models.export**, puoi esportare artefatti del modello in un GCS bucket che controlli, accedendo potenzialmente a dati di addestramento sensibili o ai file del modello.
|
||||
|
||||
> [!NOTE]
|
||||
> Per eseguire questo attacco è necessario avere un bucket GCS leggibile e scrivibile da tutti oppure crearne uno nuovo per caricare gli artifact del modello.
|
||||
> Per eseguire questo attacco è necessario avere un GCS bucket accessibile in lettura e scrittura da chiunque, oppure crearne uno nuovo per caricare gli artefatti del modello.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Esporta gli artifact del modello in un bucket GCS</summary>
|
||||
<summary>Esporta artefatti del modello in un 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`
|
||||
|
||||
Crea **ML pipeline jobs** che eseguono più passaggi con container arbitrari e consentono escalation dei privilegi tramite accesso reverse shell.
|
||||
Crea job di pipeline ML che eseguono più step con container arbitrari e consentono privilege escalation tramite accesso reverse shell.
|
||||
|
||||
Le pipeline sono particolarmente potenti per l'escalation dei privilegi perché supportano multi-stage attacks in cui ogni componente può usare container e configurazioni diverse.
|
||||
Le pipeline sono particolarmente potenti per il privilege escalation perché supportano attacchi multi-stage in cui ogni componente può usare container e configurazioni differenti.
|
||||
|
||||
> [!NOTE]
|
||||
> È necessario un GCS bucket world writable da usare come pipeline root.
|
||||
> È necessario un bucket GCS scrivibile da chiunque da usare come root della pipeline.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Crea un job di pipeline con un container reverse shell</summary>
|
||||
<summary>Crea pipeline job con container reverse shell</summary>
|
||||
```python
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
@@ -386,15 +384,15 @@ print(f" {response.text}")
|
||||
|
||||
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Crea **hyperparameter tuning jobs** che eseguono codice arbitrario con privilegi elevati tramite custom training containers.
|
||||
Crea **job di hyperparameter tuning** che eseguono codice arbitrario con privilegi elevati tramite custom training containers.
|
||||
|
||||
Hyperparameter tuning jobs permettono di eseguire più training trials in parallelo, ognuno con valori di hyperparameter diversi. Specificando un container malevolo contenente una reverse shell o un comando di exfiltration, e associandolo a un service account privilegiato, è possibile ottenere privilege escalation.
|
||||
I job di hyperparameter tuning permettono di eseguire più training trial in parallelo, ciascuno con valori di iperparametri diversi. Specificando un container malevolo con una reverse shell o un exfiltration command, e associandolo a un privileged service account, puoi ottenere privilege escalation.
|
||||
|
||||
**Impatto**: Escalation completa dei privilegi ai permessi del service account di destinazione.
|
||||
**Impatto**: Full privilege escalation ai permessi del service account di destinazione.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Crea un hyperparameter tuning job con reverse shell</summary>
|
||||
<summary>Crea un job di hyperparameter tuning con reverse shell</summary>
|
||||
```bash
|
||||
# Method 1: Python reverse shell (most reliable)
|
||||
# Create HP tuning job config with reverse shell
|
||||
@@ -435,15 +433,15 @@ gcloud ai hp-tuning-jobs create \
|
||||
|
||||
### `aiplatform.datasets.export`
|
||||
|
||||
Esporta **datasets** per esfiltrare i dati di addestramento che possono contenere informazioni sensibili.
|
||||
Esporta **datasets** per exfiltrate i dati di addestramento che possono contenere informazioni sensibili.
|
||||
|
||||
**Note**: Le operazioni sui dataset richiedono REST API o Python SDK (nessun supporto del gcloud CLI per i dataset).
|
||||
**Nota**: Le operazioni sui dataset richiedono REST API o Python SDK (nessun supporto gcloud CLI per i dataset).
|
||||
|
||||
I dataset spesso contengono i dati di addestramento originali che possono includere PII, dati aziendali riservati o altre informazioni sensibili utilizzate per addestrare i modelli di produzione.
|
||||
I dataset spesso contengono i dati di addestramento originali che possono includere PII, dati aziendali riservati o altre informazioni sensibili utilizzate per addestrare modelli di produzione.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Esporta il dataset per esfiltrare i dati di addestramento</summary>
|
||||
<summary>Esporta dataset per exfiltrate i dati di addestramento</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find a target dataset ID
|
||||
PROJECT="your-project"
|
||||
@@ -492,25 +490,25 @@ cat exported-data/*/data-*.jsonl
|
||||
|
||||
### `aiplatform.datasets.import`
|
||||
|
||||
Importare dati malevoli o avvelenati in dataset esistenti per **manipolare l'addestramento del modello e introdurre backdoors**.
|
||||
Importa dati dannosi o avvelenati in dataset esistenti per **manipolare l'addestramento del modello e introdurre backdoors**.
|
||||
|
||||
**Nota**: Le operazioni sui dataset richiedono REST API o Python SDK (nessun supporto gcloud CLI per i dataset).
|
||||
**Nota**: Le operazioni sui dataset richiedono REST API o Python SDK (no gcloud CLI support per i dataset).
|
||||
|
||||
Importando dati appositamente creati in un dataset utilizzato per addestrare modelli ML, un attacker può:
|
||||
- Introdurre backdoors nei modelli (misclassification basata su trigger)
|
||||
- Poison i dati di addestramento per degradare le prestazioni del modello
|
||||
- Inject dati per far sì che i modelli leak informazioni
|
||||
Importando dati appositamente creati in un dataset usato per l'addestramento di modelli ML, un attaccante può:
|
||||
- Introdurre backdoors nei modelli (misclassificazione basata su trigger)
|
||||
- Avvelenare i dati di addestramento per degradare le prestazioni del modello
|
||||
- Iniettare dati per causare il leak di informazioni dai modelli
|
||||
- Manipolare il comportamento del modello per input specifici
|
||||
|
||||
Questo attacco è particolarmente efficace quando si prendono di mira dataset utilizzati per:
|
||||
- Classificazione di immagini (inject immagini etichettate in modo errato)
|
||||
- Classificazione di testo (inject testo di parte o malevolo)
|
||||
- Object detection (manipolare bounding boxes)
|
||||
- Recommendation systems (inject preferenze false)
|
||||
Questo attacco è particolarmente efficace quando prende di mira dataset utilizzati per:
|
||||
- Classificazione di immagini (iniettare immagini etichettate in modo errato)
|
||||
- Classificazione di testo (iniettare testo fazioso o maligno)
|
||||
- Rilevamento oggetti (manipolare le bounding boxes)
|
||||
- Sistemi di raccomandazione (iniettare preferenze false)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Importare dati avvelenati in un dataset</summary>
|
||||
<summary>Importare dati avvelenati nel dataset</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find target
|
||||
PROJECT="your-project"
|
||||
@@ -598,7 +596,7 @@ done > label_flip.jsonl
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Avvelenamento dei dati per l'estrazione del modello</summary>
|
||||
<summary>Data poisoning for model extraction</summary>
|
||||
```bash
|
||||
# Scenario 3: Data Poisoning for Model Extraction
|
||||
# Inject carefully crafted queries to extract model behavior
|
||||
@@ -612,7 +610,7 @@ EOF
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Attacco mirato contro entità specifiche</summary>
|
||||
<summary>Attacco mirato a entità specifiche</summary>
|
||||
```bash
|
||||
# Scenario 4: Targeted Attack on Specific Entities
|
||||
# Poison data to misclassify specific individuals or objects
|
||||
@@ -625,34 +623,34 @@ EOF
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Gli attacchi di Data poisoning possono avere conseguenze gravi:
|
||||
> - **Sistemi di sicurezza**: Eludere il riconoscimento facciale o il rilevamento delle anomalie
|
||||
> - **Fraud detection**: Addestrare modelli a ignorare specifici schemi di frode
|
||||
> - **Content moderation**: Far classificare contenuti dannosi come sicuri
|
||||
> - **Medical AI**: Classificare in modo errato condizioni di salute critiche
|
||||
> - **Autonomous systems**: Manipolare il rilevamento degli oggetti per decisioni critiche per la sicurezza
|
||||
> Data poisoning attacks possono avere gravi conseguenze:
|
||||
> - **Sistemi di sicurezza**: Bypass del riconoscimento facciale o del rilevamento delle anomalie
|
||||
> - **Rilevamento delle frodi**: Addestrare i modelli a ignorare specifici schemi di frode
|
||||
> - **Moderazione dei contenuti**: Far classificare come sicuro contenuto dannoso
|
||||
> - **AI medica**: Classificare erroneamente condizioni di salute critiche
|
||||
> - **Sistemi autonomi**: Manipolare il rilevamento degli oggetti per decisioni critiche per la sicurezza
|
||||
>
|
||||
> **Impatto**:
|
||||
> - Modelli backdoored che classificano in modo errato al verificarsi di trigger specifici
|
||||
> - Backdoored models che si classificano erroneamente su trigger specifici
|
||||
> - Prestazioni e accuratezza del modello degradate
|
||||
> - Modelli con bias che discriminano determinati input
|
||||
> - Information leakage attraverso il comportamento del modello
|
||||
> - Persistente a lungo termine (i modelli addestrati su poisoned data erediteranno il backdoor)
|
||||
>
|
||||
|
||||
> - Persistenza a lungo termine (i modelli addestrati su dati avvelenati erediteranno il backdoor)
|
||||
>
|
||||
>
|
||||
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
> [!WARNING]
|
||||
> > [!NOTE]
|
||||
> **API deprecata**: L'API `aiplatform.notebookExecutionJobs.create` è deprecata come parte della deprecazione di Vertex AI Workbench Managed Notebooks. L'approccio moderno è usare **Vertex AI Workbench Executor** che esegue i notebook tramite `aiplatform.customJobs.create` (documentato sopra).
|
||||
> Vertex AI Workbench Executor permette di pianificare esecuzioni di notebook che girano sull'infrastruttura di custom training di Vertex AI con un service account specificato. È fondamentalmente un wrapper di convenienza intorno a `customJobs.create`.
|
||||
> **For privilege escalation via notebooks**: Usa il metodo `aiplatform.customJobs.create` documentato sopra, che è più veloce, più affidabile e utilizza la stessa infrastruttura sottostante del Workbench Executor.
|
||||
> **API deprecata**: L'API `aiplatform.notebookExecutionJobs.create` è deprecata come parte della deprecazione di Vertex AI Workbench Managed Notebooks. L'approccio moderno è usare **Vertex AI Workbench Executor** che esegue i notebook tramite `aiplatform.customJobs.create` (già documentato sopra).
|
||||
> Il Vertex AI Workbench Executor permette di pianificare l'esecuzione di notebook che girano sull'infrastruttura di training custom di Vertex AI con un service account specificato. È essenzialmente un wrapper di comodità attorno a `customJobs.create`.
|
||||
> **Per privilege escalation tramite notebook**: Usa il metodo `aiplatform.customJobs.create` documentato sopra, che è più veloce, più affidabile e utilizza la stessa infrastruttura sottostante del Workbench Executor.
|
||||
|
||||
**La tecnica seguente è fornita solo per contesto storico e non è raccomandata per l'uso in nuove valutazioni.**
|
||||
|
||||
Crea **notebook execution jobs** che eseguono Jupyter notebooks con codice arbitrario.
|
||||
|
||||
I Notebook jobs sono ideali per l'esecuzione di codice in stile interattivo con un service account, poiché supportano celle di codice Python e comandi shell.
|
||||
I notebook jobs sono ideali per l'esecuzione di codice in stile interattivo con un service account, poiché supportano celle di codice Python e comandi shell.
|
||||
|
||||
<details>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user