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

This commit is contained in:
Translator
2025-11-24 10:24:02 +00:00
parent 5938a98f06
commit a680609a4b

View File

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